chatGPT的灵魂:Attention注意力机制
Attention 注意力机制进行建模,它可谓是当前 NLP 神经网络的灵魂机制。
注意力机制的思想
一个智能体(人或 AI 模型)从接收到的大量信息(文本、图像、音频)中,剔除不重要、不相关的信息,重点关注与自身密切相关的信息。其核心在于收缩关注的信息范围,实现信息的压缩。
注意力机制的建模
### 建立权重模式
让模型更加关注到掘金两个字,实际上可以认为,给掘金两个字对应的 token embedding 赋予更大的权重。
在神经网络模型中,所有的操作均为矩阵操作,所有的特征均为向量形式。设ei表示第 i个 token 的 embedding 表示,在例子中,它是一个 7 维的向量,wi是第 i个 token 对应的权重值,它是一个标量值。
可以对所有的 token embedding 做一个加权:
h=∑iei wi
这里,h是一个加权后的结果,它也是一个 7 维的向量。它的本质含义,是从各个 token 不同的 embedding 中,按重要程度(权重值wi)做加和,权重值高的ei,对后续操作影响大,权重值低的ei,对后续操作影响小。这就产生了一种更加注意权重高的 ei的效果。
### softmax函数
其中的数值有正有负,前两个 token 对应的权重标量值较大,说明对后续操作的影响大。若直接进行加权,这不符合人们的一般认知。一般来说,权重占比以概率形式表示,概率值应当大于 0,小于 1,且所有分量的加和等于 1。
softmax 算法的一些特性:
1、softmax 可以将一维向量,输出形成概率分布的形式;
2、softmax 利用指数函数,会更加着重值更高的元素,使要关注的元素更加突出;
3、相应地,由于指数函数特性,它也可以尽力压低不需关注的元素的权重。
以公式形式表示,计算模型的所有 embedding 加权后的权重:
h=∑iei αi
Softmax 函数在神经网络模型中十分常用,除了应用在注意力机制计算外,softmax 还可以完美契合交叉熵损失函数
### 自注意力机制 Self-Attention
计算权重,不同的模型、不同的 NLP 任务都有不同的形式。这项技术经过多年的发展,最终趋向于自注意力机制(Self-Attention) ,这也是 ChatGPT 所采用的形式。
w是一个权重向量,其长度(维度)与 token 的个数相同,其中的每一项是标量值。我们知道,神经网络模型中都是以向量、矩阵等构成的张量作为计算基础的。因此,想要计算得到一个标量值,最简单的形式就是向量点积,我们需要想办法找到两个向量。
假设针对第 i个 token,有两个向量 qi 和 ki,两者具有相同的维度,其点积可以得到一个标量值:wi=qiki。
依然以前述句子为例。在补全句子时,掘金对要空格处填写的字符,影响最大。而“掘金对要填写什么字符,影响最大”这一认知,依然是我们阅读这个句子本身得到的。换句话说,wi权重的信息来源,依然是原句子本身(Self) ,这就是自注意力命名的原因。
## 注意力机制的好处
寻找两者之间的关联关系,注意力机制非常擅长。技术上讲,这叫注意力机制擅长计算长文本依赖。
而在过去,神经网络里主要使用循环神经网络(RNN)模型结构来处理。RNN 的网络结构可以使用如下公式来解释:ei = h(ei−1,WRNN)。
深度学习中模型的计算量超级大,为了让 ChatGPT 模型能够快速输出结果,就需要采用并行计算的方式。
## 总结
- 注意力机制的本质是从大量信息中剔除杂质、无关信息,保留感兴趣的信息。
- 注意力机制在 NLP 领域的应用主要是 自注意力Self-Attention 形式,它是神经网络具备充分拟合能力的灵魂。
- 在第 1 节中,我们提到了,Transformer 是构成 ChatGPT 这座房子的砖块和钢筋,而自注意力机制则是构成 Transformer 的核心要素。下一节,我们就来介绍 Transformer 结构和原理。