语言模型定义: 给定一句由
神经网络语言模型: 训练数据是一个单词序列
目前大模型的基础神经网络架构是Transformer,其基本结构如下图所示,包含N个编码器和N个解码器。
每一个编码器中包含两个子网络,即:一个多注意力头 Multi-Head Attention 和一个前馈神经网络。每个子网络都具有残差连接。
Attention 机制是通过一个 Query(查询变量)从一堆信息(Key-Value 表示的信息,Key 看作信息的地址,Value 表示信息的内容)中找到对于 Query 而言重要的信息,以此获取更多对于 Query 而言更重要的细节信息,进而抑制其他无用信息。
注意力机制的计算步骤如下:
-
计算
$Q$ 和$K$ 的相似度:$f(Q,K_i),i=1,2,\dots,m$,对于自注意力机制就是:$f(Q,K_i)=Q^T K_i$ -
将得到的相似度进行 softmax 操作,进行归一化: $$ \alpha_i = softmax \left(\frac{f(Q,K_i)}{\sqrt{d_k}}\right) $$ 这里
$\sqrt{d_k}$ 的作用:假设$Q,K$ 里的元素的均值为 0,方差为 1,那么$A^T=Q^T K$ 中元素的均值为 0,方差为$d$ 。当$d$ 变得很大时,$A$ 中的元素的方差也会变得很大,如果$A$ 中的元素方差很大,在数量级较大时, softmax 将几乎全部的概率分布都分配给了最大值对应的标签,由于某一维度的数量级较大,进而会导致 softmax 未来求梯度时会消失。总结一下就是$softmax(A)$ 的分布会和$d$ 有关。因此$A$ 中每一个元素乘上$\frac{1}{\sqrt{d_k}}$ 后,方差又变为 1,并且$A$ 的数量级也将会变小。 -
针对算出来的权重
$\alpha_i$ ,对$V$ 中所有的 values 进行加权求和,得到 Attention 向量:$Attention=\sum_{i=1}^m \alpha_i V_i$。
对于 Self Attention,Q、K、V 来自输入句子 X 的词向量 x 的线性转化,即对于词向量 x,给定三个可学习的矩阵参数
Self-attention 的矩阵运算示例如下图所示,输入为
Multi-Head Attention 就是把 Self Attention的过程做 H 次,然后把输出 Z 合起来。
首先,假设使用 8 组不同的
为了使得输出与输入结构相同,拼接矩阵
multi-head attention 的整个流程如下:
LoRA (Low-Rank Adaptation) 是一种高效微调大模型的技术,被广泛用在语言模型、Stable Diffusion 等模型中。如今大模型动辄几十、几百甚至上千亿参数,微调大模型非常困难。而 LoRA 可以只训练原模型不到 1% 的参数量,便可在单卡上实现微调的效果,大大提高了微调的效率。论文 Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning 假设预训练模型在特定任务上微调使具有较低的内在维度,维度指参数矩阵的维数,这意味着在特定子任务上训练预训练模型时,仅微调较少的参数便可以达到全量微调 90% 以上的性能。LoRA 进一步假设模型自适应微调时更新的参数矩阵也有较低的内在维度。假设
根据上图,$h=Wx + \Delta W x=Wx + BA x$。微调结束后,也可以将
- 《预训练语言模型》
- BERT模型详解:https://www.cnblogs.com/nickchen121/p/15114385.html
- “追星”Transformer:一文说清Transformer: