【学习笔记】transformer 简札

发布时间 2023-12-13 23:33:14作者: yspm

高铁心血来潮逼着自己把这个模型的结构看了一遍,不写下来会忘掉的


Encoder

输入是词向量。

word vector -> [(multihead) self-attention -> forward ]×n-> layer normalization

self attention 就是 qkv矩阵乘法得到 z,multihead self attention 就是进行多个矩阵乘法然后把 \(z_1\dots z_t\) concat 起来然后再用一个 \(z_0\) 和这个 concat 过的矩阵乘一下得到 不多头得到 的 z

一开始很好奇为什么 multihead 后来想了想可能因为不多头模型效果不好,多来几组 qkv 好像是挺自然的一个增强方向。

相比于 RNN 主要改变是 position embedding,可以支持对较长信息的学习。

中间有残差连接。如果 Resnet 不出世这模型没准也没有residual 什么事。

layer normalization 是每个词的所有维度进行正则化,和 batch normalization 有些区别。

Decoder

Decoder 和 Encoder 中 multihead self-attention 的部分非常相似,不过每个单词后面的词不能对这个词产生影响,或者说矩阵的下三角是 \(-\infty\)(后面会通过 softmax 把它映射到 0~1)

Decoder 最后输出向量,和词库进行匹配,哪个词的词向量和输出向量余弦相似度大就是谁。训练过程中损失函数也可以借此获得。