当前位置:   article > 正文

transformer学习笔记(台大李宏毅)_为什么decoder的输入输出长度相同

为什么decoder的输入输出长度相同

self-attention

  • 输入为:
    一排向量–word embedding
    可以是一段声音讯号、一个图(一个节点)、一个分子(一个原子)

  • 输出为:
    ① 每个向量都有一个对应的label,输入长度=输出长度
    例:词性标注(每一个单词都有一个对应的磁性)、社交网络
    ② 一整个sequence需要一个label
    例:机器判断一段话是正面的还是负面的、根据一段语音判断讲话人是谁
    ③ 模型自己决定输出的label个数
    例:翻译

  • 输入个数=输出个数,称为Sequence Labeling(sequence的每一个向量都要输出一个Label)
    fully-connected(全连接
    在这里插入图片描述

  • 考虑更多的信息,比如上下文。可以给全连接层一整个window的信息,来考虑上下文
    在这里插入图片描述
    如果考虑一个window不能解决,需要考虑整个sequence,window的长度不能无限大来盖住整个sequence?利用自注意力机制。

  • self_attention可以考虑一整个sequence
    self-attention可以叠加。
    在这里插入图片描述

  • 根据a1找出sequence中跟a1的相关性,用α表示两个向量关联的程度

  • α的计算方法:
    在这里插入图片描述
    在这里插入图片描述

  • 其中α1,2为attention score
    注意,q1也会跟自己计算关联性(很重要)。

  • 接下来,会做一个softmax,α得到一排α’

  • 不一定用softmax,比较常见。

  • 根据α,已经得出向量之间的关联性。

在这里插入图片描述

  • 下一步,要根据α’提取出其中重要的信息
    在这里插入图片描述
  • 以上做的事情就是实现下图,从a得到b
    在这里插入图片描述
  • 然后,从矩阵乘法的角度理解
    在这里插入图片描述在这里插入图片描述
  • 最后,输入是I,输出是O
    需要学习的矩阵只有Wq、Wk、Wv
    在这里插入图片描述

multi-head self-attention

  • 下图为两个head的情况
    在这里插入图片描述
    在这里插入图片描述
  • 但是,所有位置的距离都是一样的,self-attention中就缺少了相对位置的信息,所以需要位置编码。
  • 给每个位置一个专属的vector ei,将其加到ai上面。
    在这里插入图片描述
  • self-attention vs CNN
    CNN是一种简化的特殊的self-attention,receptive filed是人工决定的
    self-attention中是学习得到的

transformer

  • 输入一个sequence,输出一个sequence,输出的长度由模型决定。
    在这里插入图片描述
  • 硬解:QA、语法剖析、多标签分类

encoder

  • 给一排向量,输出另一排向量
    在这里插入图片描述
  • residual connection(残差连接)
  • layer normalization
    二维中,列表示特征,行表示样本
    layer normalization:行归一化,样本归一化
    batch normalization:列归一化,特征归一化
  • fully connection(全连接)、mlp(多层感知器)
    在这里插入图片描述

decoder

  1. autoregressive decoder
  • 先给decoder一个begin,经过一个softmax得到一个输出,之后将begin和上一个输出作为decoder的输入,以此循环。encoder也会给decoder一个输入。(所以有可能会一步错步步错)
    在这里插入图片描述

  • encoder中的b1是根据a1跟其他所有ai的信息共同决定的。decoder中的mask,在产生b1的时候只能考虑a1的信息,产生b2的时候只能考虑a1和a2的信息,产生b3的时候只能考虑a1、a2、a3的信息。
    在这里插入图片描述在这里插入图片描述

  • 为什么要masked?
    decoder运行的时候是一个一个的输入和输出,结果是先输入a1,再输入a2,所以在求b2的时候还没有输入b3和b4的信息。

  • 怎样决定decoder输出的长度?什么时候停止?
    要有一个特殊的符号end来表示结束(也可以跟begin用一个)
    在这里插入图片描述

  1. non-autoregressive(NAT)

在这里插入图片描述

  • 怎么确定NAT的输入长度
    ①用一个分类器,读入encoder,输出decoder的长度
    ②输出长度上限,寻找end符号,后面的舍掉
  • NAT的优点:NAT比AT速度更快,可以控制输出长度,但是效果差

cross attention

  • 连接decoder和encoder
    在这里插入图片描述
  • k、v来自于encoder,q来自于decoder
    在这里插入图片描述 在这里插入图片描述

training

  • 希望每次训练得到的ground truth跟distribution越接近越好
    在这里插入图片描述
  • 每个输出都有cross entropy,希望cross entropy的总和越小越好。
  • teacher forcing:在训练的时候,会给decoder输入正确答案。
    在这里插入图片描述
  • tips
  1. copy mechanism
    ① chat-bot
    ② summarization
  2. guided attention
  3. beam search
    在这里插入图片描述
  4. exposure bias
    训练的时候decoder输入都是正确的,在测试的时候可能结果很离谱,所以在训练的时候就给decoder一些错误的输入,称为scheduled sampling。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/348322
推荐阅读
相关标签
  

闽ICP备14008679号