文章目录
前言
- 根据输出不同nlp可以分为三类:
- 每个vector生成一个label :每一个节点有什么样的特性
- 整个sequence生成一个label :将留言分类为好或不好
- seq2seq:语言翻译
一、self-attention
(一)sequence labelling
- 将每个vector都输入到FCN(Fully-connected Network)网络中,得到一个label。
- 缺点:缺少vector与vector之间关系的连接
(二)self-attention
- 如何结合上下文
- 将每个vector输入到self-attention网络中,该网络会结合上下文生成一个vector。新的vector是考虑是上下文之后的情况,再将其输入到FCN中得到label。
- self-attention可多次使用,与FCN交替使用。
- 如何计算几个vector之间的相关性
- (1)用soft-max将所有向量进行归一化,标准化。
- 点积:若两个向量的点积为0,则说明两向量垂直,没有相关性。若点积为1,方向同向,说明它们完全相关。
- 点积:若两个向量的点积为0,则说明两向量垂直,没有相关性。若点积为1,方向同向,说明它们完全相关。
- (2)根据vector之间关系的强弱,抽取重要资讯。
- (3)如何求参数b
- 利用内积得到attention的分数
- Wq:参数的集合,weight
- (4)总结
- I:input输入,self-attention的输入是一串vector
- 对A进行处理(softmax,relu等)得到Amax
- O:self-attention这个layer的输出
(三)对位置的咨询Positional Encoding
加上一个位置向量ei
(四)self-attention在cv上的应用
- 将image分为pixel,每个pixel是以RGB为维度的三维向量。
- self-attention VS CNN
- self-attention比较的是每个像素点和图片其他像素点之间的关联性
- CNN规定了一个感受野,它只考虑感受野以内的点的关联性。
- self-attention是一个大的CNN,CNN是self-attention的局部版
- CNN适合数据量小的情况;self-attention适合数据量大的情况
二、Transformer
- 定义:是一个sequence To sequence的model
- 结构:由一个Encoder和一个Decoder组成。输入一个sequence,由encoder进行处理,将处理好的结果给decoder,decoder决定它要输出什么样的sequence。
(一)Encoder
- block
- residual:将input直接与output加起来得到新的vector
- 流程:先通过self-attention进行处理,residual,标准化,输入到FCN中进行非线性化,再residual,再标准化得到输出。这个输出才是transformer encoder里面一个block的输出。
- 将input加上positional encoding,进入到muti-head attention(self-attention),然后Add&Norm,再feed forward,再Add&Norm才是一个block的输出。
- muti-head attention:是一种注意力机制的变体,常用于自注意力机制(self-attention)的多头组合。通过使用多个注意力头,模型可以同时关注不同的语义信息和位置信息,从而更好地捕捉输入序列中的不同特征。每个注意力头可以专注于不同的特征子空间,提供更多的表征能力和注意力的灵活性。
- Add&Norm :residual + Layer norm
(二)Decoder
- 将输出当作下一轮输入
- masked:第n个参数只考虑n与n之前vector的关系,不管n之后vector的关系。
- 因为decoder的输出是一个一个的,所以它只能考虑它左边的输入。
(三)Encoder和Decoder之间怎么传递咨询
- cross-attention
- decoder生成一个q,去encoder那边抽取咨询出来,当作FCN的input。