6、seq2seq - Transformer-Encoder、Transformer-Decoder

  • Attention - 注意力机制

    • seq2seq是 Sequence to Sequence 的简写,seq2seq模型的核心就是编码器(Encoder)和解码器(Decoder)组成的

    • 通过在seq2seq结构中加入Attention机制,是seq2seq的性能大大提升,先在seq2seq被广泛的用于机器翻译、对话生成、人体姿态序列生成等各种任务上,并取得了非常好的效果

      • 这里 C1 = X1h2 + X2h2 + .....

    +对于Decoder的每一步解码i,都有一个输入Ci,对输入序列所有隐藏信息h1,h2....进行加权求和

    • 相当于在预测下一个词时,会把输入序列的隐藏信息都看一遍,决定预测当前词语输入序列的哪些词最相关


  • Transformer - 今后的大模型都基于这个模型

    • 结构 - 参考seq2seq

    • 基本流程


    • 位置编码

      • 文本是时序型数据,词与词之间的顺序关系往往影响整个句子的含义

      • 【绝对位置编码】

        • 给每个位置位置信息建模
        • 最简单的实现方式:使用每个词汇的次序1,2,...., T作为位置编码信息
        • 如:BERT使用的是Learned Positional Embedding,先初始化位置编码,再放到预训练过程中,训练出每个位置的位置向量
        • 绝对位置编码存在一个严重的问题,例如,模型最大序列长度为512,那么预测阶段输入超过512的序列就无法进行处理
      • 【嫌贵位置编码】

        • 相对位置并没有完整建模每个输入的位置信息,而是在计算Attention的时候考虑当前位置与被Attention的位置的相对距离
        • 由于自然语言一般更依赖于相对位置,所以相对位置编码通常也有着优秀的表现,在Transformer中使用的就是相对位置编码的方式
      • 【更好的编码方式】

        • 目前,已经出现了更优秀的位置编码方式,例如旋转位置编码,他兼顾了绝对位置信息与相对位置信息
      • 【为什么Transformer需要位置编码信息?】

      • 根据上面讨论,我们希望位置编码满足以下的需求:

        • 能够体现词汇在不同位置的区别(特别是同一词汇在不同位置的区别)

        • 能够体现词汇的先后次序,并且编码值不依赖于文本的长度

        • 有值域范围限制

        • 因此,Transformer引入了相对位置的概念,使用sin/cos函数(有界周期函数)来表示相对位置,sin/cos函数周期变化规律稳定,使得编码具有一定的不变性

        • 如下例子:

  • Transformer Encoder

    • 【Multi-Head Attention】
      • 所谓多头,是将线性变换之后的QKV切分为H份,然后对每一份进行后续的self-attention操作,可以理解成将高维向量拆分成了H个低维向量,在H个低维空间里求解各自的self-attention
    • 相当于是在原来的一个768维空间里求任意两个字符的相关度,变成在12个64维空间里求相关度,最后将12个64维拼接在一起变成768维的相关度
    • 相当于是从不同的角度(12个角度)去研究任意两个字符之间的相关度,这比从一个角度去研究的结果更多

  • Add & Norm

  • Feed Forword



  • Transformer Decoder
posted @ 2025-03-08 18:54  little小新  阅读(105)  评论(0)    收藏  举报