当前位置:   article > 正文

基于GPT模型的对话系统

基于gpt

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(sns1,s2,...,sn1)
          解释:这个公式的意思是当给定s1,s2,…,s(n-1)时,sn的概率是多少,但由于输入的句子的时序性,我们需要在前面加入乘积符号;用大白话讲就是已知前n-1个词的概率(s1,s2…代表每个词),计算第n个词的概率
        • 综述:首先我们要明确在闲聊这个场景中,侧重点是通过输入问题,模型回答相应的答案,翻译一下就是我们只需要利用上文中的信息去预测下文,这正是GPT-2模型的预训练方式,而Bert模型是通过Mask句子中部分词,充分利用上下文信息,虽然模型的表达能力更强,但并不是我们想要的;最后,通过上述概念与公式以及模型的对比,我们可以得出结论在这个场景下GPT-2更适用些。

3.GPT-2模型详解:

  • 计算过程

  • 输入:
    输入这里其实倒没什么可讲的无非就是以下三个过程:

    • 一个token embeddings(词嵌入:人话讲就是把语言映射到几何空间当中,GPT-2(medium)的大小是(50257(模型中词的大小) * 1024(embedding大小)))
    • 一个positional encodings(位置编码:人话讲就是每个词在矩阵中的编码,对于GPT-2(medium)来讲矩阵大小1024 * 1024)
    • 将上述二者结合以后作为输入
  • Masked Self-Attention + Feed Forward Neural Network

    • Masked Self-Attention做了什么:
      例子:我今天晚上准备炒一个鸡腿,但它卖完了
      当模型在处理这个句子的时候,首先要明确句子中“它”指代的是“鸡腿”还是“我”,即模型要明白指代关系,那么如何明白指代关系呢?请看图
      在这里插入图片描述
  • 写在最后:

    • 上述有些点用了自己的语言来解释,只是为了方便大家理解,如有不严谨的地方欢迎大家批评指正
    • 实现对话系统的模型很多,而本文选择GPT-2模型来实现对话功能只是个人的一些理解,如有更好的模型,请在评论区留言哦
    • https://demo.allennlp.org/next-token-lm大家可以去浏览一下,就能明白我在“GPT-2与BERT的抉择”这里所表达的意思
    • 建议大家把TransFormer,GPT,BERT合在一起学习,能事半功倍哦~
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号