是这篇讲解的一些学习记录:https://zhuanlan.zhihu.com/p/338817680
1、Transformer:深度学习网络,不使用卷积层(CNN)或循环层(RNN)进行序列到序列的转换。
不存在循环结构,可以并行计算,提高计算效率
它由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block(子网络)
词Embedding:向量映射/向量化,是每一个维度对应词的一个语义特征,由算法预训练或transformer训练得到
位置Embedding:单词在序列中的相对或绝对位置
2、Self-Attention(自注意力机制)
Add & Norm 层由 Add 和 Norm 两部分组成;
Add 表示残差连接 (Residual Connection) 用于防止网络退化;让网络只关注当前差异的部分,在 ResNet 中经常用到。
Norm 表示 Layer Normalization(归一化层),用于对每一层的激活值进行归一化。通常用于 RNN 结构,Layer Normalization 会将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛。
softmax计算每一个单词对于其它单词的注意力系数,即对每一行进行softmax(每一行归一化,和为1)
Multi—head attention:(这里跟原作者讲述的不同)首先通过h次(h=8)不同线性变换,生成8组Q,K,V,然后将每个位置512维度分成8个head,每个head 64维度,然后做8次Self attention,得到8个输出矩阵,最后拼接(变成512维)传入linear得到最终结果。
3、Swin Transformer
参考链接:https://blog.csdn.net/qq_39478403/article/details/120042232
整体架构:
Patch Partition和Linear Embeding就是直接通过一个卷积层实现,stage2、3、4在Patch Merging层进行下采样。
block结构:
相比于 Transformer block,将 标准多头自注意力模块 (MSA) 替换为 基于移位窗口的多头自注意力模块 (W-MSA / SW-MSA) 。MSA后面的MLP:带有非线性 GeLU 激活函数在中间的 2 层 MLP