1. 将句子分解成一个个 Token
2. 每个 Token 对应一个向量,构成一个 Embedding 矩阵
3. 这个 Embedding 矩阵通过Self-Attension 模块去”学习“句子的上下文信息,从而更新 Token 的向量表示
"学习"的形象表达是:找谁跟谁有关,例如:输入喜欢唱跳打篮球的帅哥,经过 Self-Attension ,帅哥这个名词就会”学习“到喜欢唱跳打篮球是和它有关系
"学习"从本质看:借助 Query、Key、Value 向量( 由 Token 的向量表示,乘上W_Q,W_K,W_V 矩阵得到 ),用某个 Token 的 Q 和其他 Token 的 K 向量进行乘积( 表示了他们之间的关联程度 ),经过 SoftMax 变成概率后,对 V 按概率加权相加,得到更新后的某个 Token 的新的向量表示
W_Q,W_K,W_V,这三个矩阵是由反向传播得到
4. 通过 MLP 模块来让 Token 学习到更多相关的信息,而不仅仅是输入句子的上下文信息
形象表达:依旧使用上面的例子:此时的帅哥还学习到其与吴彦祖、彭于晏这些帅哥相关
本质:也是更新 Token 的向量表示。先经过 W1 升维,再经过 ReLU 函数,再通过 W2 降维
W1,W2 由反向传播得到
ReLU 函数的作用:非线性激活,没有它网络会退化成一个单层线性模型。本质是放大有用信息,屏蔽无用信息
通过多次 Attension 和 MLP 的组合,得到最终的隐藏状态向量
5. 用最后一个 Token 的隐藏状态向量乘 unembedding 矩阵( embedding 矩阵的转置 ),作用是转回词汇空间
6. 最后经过 softmax 来预测下一个词的概率