[李宏毅] self attention 个人笔记

https://www.bilibili.com/video/BV1JA411c7VT?p=11&spm_id_from=333.880.my_history.page.click&vd_source=14d17a501a1dad78c613f1ba7f8f947c

输入输出

传统神经网络的输入是一个向量。

self attention

  • 输入:一组向量,且长度可以不固定。比如
    • NLP:一个句子由一些词组成,每个词是一个向量,长度固定;但一个句子由多少词是不确定的。
    • 一段声音信号,每个窗口用一个向量表示
    • 一个graph:each node as a vector
  • 输出:三种情况
    • 每个vector都有一个输出(sequence labeling)
      • NLP:词性标注 POS taggin
      • 声音信号:每一个frame的元音?
      • graph:每个人会不会买这个商品
    • 整个sequence有一个输出
      • NLP: sentiment analysis: 这段话是消极还是积极
      • 声音信号:这是谁说的
      • graph:这个分子是否亲水
    • 不知道多少个输出label,机器自己决定 (seq2seq)
      • NLP : 语言翻译
      • 声音信号:语音识别

过程:

scalar角度:如何从a求b (single head, w.o. PE)

[李宏毅] self attention 个人笔记_第1张图片

[李宏毅] self attention 个人笔记_第2张图片

[李宏毅] self attention 个人笔记_第3张图片

[李宏毅] self attention 个人笔记_第4张图片

[李宏毅] self attention 个人笔记_第5张图片

矩阵乘法角度:如何从a求b (single head, w.o. PE)

[李宏毅] self attention 个人笔记_第6张图片
[李宏毅] self attention 个人笔记_第7张图片

[李宏毅] self attention 个人笔记_第8张图片

multi head

就是使用多组qkv,得到多组b,这些b拼接起来乘W得到最终的b.
[李宏毅] self attention 个人笔记_第9张图片

PE

实际上还需要把position encoding和a相加再操作。
[李宏毅] self attention 个人笔记_第10张图片

应用

主要是NLP,如bert。

如果是speech这种数据,长度太长,可以截断:
[李宏毅] self attention 个人笔记_第11张图片
如果把image看做一排向量,也可以用transformer:
[李宏毅] self attention 个人笔记_第12张图片

self attention V.S. CNN

CNN 类似于,只对领域求α的self attentin。
[李宏毅] self attention 个人笔记_第13张图片
可以看这篇论文
[李宏毅] self attention 个人笔记_第14张图片
相当于self attention加上一些限制,就是CNN。所以在样本少的时候cnn更好,样本多时相反。
[李宏毅] self attention 个人笔记_第15张图片

self attention V.S. RNN

也有相似之处。
但self attention可以并行计算,而且离得很远的东西也可以很好的用到(RNN容易遗忘)。因此现在基本self attention可以代替RNN。
[李宏毅] self attention 个人笔记_第16张图片

for graph

只需算有边的点的alpha,没边的直接置0
[李宏毅] self attention 个人笔记_第17张图片

你可能感兴趣的:(AI,自然语言处理,人工智能,语音识别)