自注意力机制

problems

输入可能会很复杂,不只是一个vector而是一组vector,比如语言识别,输入很多单词,每一个句子都是一排长度不一的向量组

Untitled

解决方法

  1. one-hot encoding 独热编码:每一个单词都对应一个单独的编码

Untitled

  1. word embedding 每一个词汇一个向量,向量有次序

Untitled


输出同样有很多情况,输入n个,输出n个,或者只输出1个,或者不知道要输出几个(翻译)

Untitled

self-attention

此讲只考虑输入和输出数量相同的情况

sequence labeling

Untitled

按照之前的做法讲一个window中几个连续的输入传到一个FC(fully connected network)中,不能确定一个合适的window的大小,并且每一个输入的长度都不一样,不可取

self-attention

Untitled

考虑整个sequence后经过self-attention新的输出作为输入传入FC,此过程可以叠加

  1. 以输出b1为例,首先需要判断各个输入值的相关性

Untitled

  1. 判断方法采用dot-product

    Untitled

    操作过程

    Untitled

  2. 然后计算v,谁的alpha大,哪个输入就主导输出b

    Untitled

  3. 实际也需要自己和自己计算关联性,然后一般再经过softmax

    Untitled

  4. 使用矩阵简化合并相同的计算

    Untitled

    Untitled

    Untitled

    矩阵O就是输出,A‘ 就是attention matrix,只有wq,wk,wv是参数需要学习

  5. multi-head self-attention另一种进阶方法,对q,k,v再乘矩阵,产生更多的参数,计算更多领域的相关性

    Untitled

    计算出输出后乘矩阵进行合并

    Untitled

  • positional encoding :上述过程没有考虑词汇的位置,此方法会考虑

    Untitled

other application

  1. for speech

    truncated self-attention

    语音数据太大,只考虑部分相连的输入

    Untitled

  2. for image

    Untitled

    不把整个看成一个很长的向量,而是每一个像素的三个channel合在一起为一个vector

    整张图是很多vector

    Untitled

  3. for graph 只考虑连通节点之间的关系

    Untitled

    这就是一种 graph neural network(GNN)

self-attention VS CNN

Untitled

Untitled

self-attention VS RNN

image-20240803221534616