1.场景:
- 当用户输入的问题在库中,没有比对上,则调用闲聊系统来回答用户的问题
2.模型的选择:
- 模型:LSTM, GPT-2, BERT
-
LSTM:我们先来看下LSTM模型的优缺点:
- 优点: LSTM能更好的解决时间序列问题(在这里时间序列大家可以理解为:对输入的一个句子能够更好的找出中心词)
- 缺点:和GPT模型比起来效果要差一些;最重要的一点:LSTM只是缓解了RNN的梯度问题,但并没有完全解决
- 总结:梯度消失会带来什么问题呢?梯度消失会导致神经网络中前层的权重无法更新,最终无法学习,如果模型停止学习,那么在上述场景下带来的直接影响就是“答非所问”;这个是我们不想看到的结果,因此果断的排除了LSTM
- 备注:后期,我用LSTM搭建一个闲聊系统,用实验数据让大家直观的感受一下LSTM模型与GPT模型的区别。
-
GPT-2与BERT的抉择:
- 首先,网上有一种说法是GPT-2模型更适合生成式任务,BERT更适合理解式任务,因为我没与读到过相关论文,也没有看到权威的解释,所以这里我们就不去关注这个点了,我们来看下GPT模型的概念与公式
- 概念:GPT-2的核心思想是通过无监督学习去做有监督的任务,训练过程分为无监督预训练,有监督微调,内部结构以transform为基础,仅仅使用transform中的编码器,可以理解成是屹立在transform上的高楼(因为没有找到权威的概念,这里就用大白话说吧)
- 公式:
p
(
x
)
=
∏
p
(
s
n
∣
s
1
,
s
2
,
.
.
.
,
s
n
?
1
)
p(x) = \prod {p(s_n|s_1,s_2,...,s_{n-1})}
p(x)=∏p(sn?∣s1?,s2?,...,sn?1?) 解释:这个公式的意思是当给定s1,s2,…,s(n-1)时,sn的概率是多少,但由于输入的句子的时序性,我们需要在前面加入乘积符号;用大白话讲就是已知前n-1个词的概率(s1,s2…代表每个词),计算第n个词的概率 - 综述:首先我们要明确在闲聊这个场景中,侧重点是通过输入问题,模型回答相应的答案,翻译一下就是我们只需要利用上文中的信息去预测下文,这正是GPT-2模型的预训练方式,而Bert模型是通过Mask句子中部分词,充分利用上下文信息,虽然模型的表达能力更强,但并不是我们想要的;最后,通过上述概念与公式以及模型的对比,我们可以得出结论在这个场景下GPT-2更适用些。
3.GPT-2模型详解:
|