英文专业词汇翻译为中文后就少了一点’直观性’,所以我觉得专业词汇直接写英文比较好。

前言

对于人工智能(AI)中的神经网络结构,大多数人必定都略有耳闻,它来自神经生物学中“神经网络”的高度抽象,输入——传输——输出。不过,在AI模型中,“神经元”并非生物学上的细胞,而是用于存储和处理数据的容器;信息轴也不是电信号在突触上的传递,而是一系列数学函数对目标数值的有向变换。

在传统的前馈神经网络(Feedforward Neural Network, FNN)结构中,各层神经元之间通过有向连接相互传递信息,即信息流动具有明确的方向——由前向后。每一条连接轴都对应一个独立的权重(weight)。同一层(layer)中的所有神经元都会接收来自前一层的相同输入向量,但它们之间相互独立,分别基于各自的权重和激活函数计算输出结果。

neural networks and deeplearning;By Michael Nielsen

卷积神经网络(convolutional neural network,CNN)相比FNN的”各自独立“稍微增加了一点”局部整体性“。在CNN识别图像时,会把某一局部特征(比如水平线/纹理)数值作为整体,这个局部的数值特征即为卷积核K。我们可以把卷积核K视为一个方形扫描仪,当它在输入图像上滑动时,会对每个区域进行特征匹配,探测出与自身模式相似度较高的局部结构。但是每个卷积核只“看到”一种局部信息,识别全局需要多层卷积的堆叠(也就是多个卷积核K对不同特征进行”扫描“)再经历逐层整合,网络才能逐步从局部特征中抽象出更高层次的全局结构。

5*5矩阵的卷积核K”扫描“28*28的输入数值矩阵(图像的像素值)

如果说CNN可以有效地处理空间信息,那么循环神经网络(recurrent neural network,RNN )则可以更好地处理序列信息。

RNN对信息的处理就像人类阅读书籍,每读一句话都要根据先前的内容来理解这一句的含义。也就是说它在处理序列信息时只能按顺序传递“隐藏状态”(模型的短期记忆),预测下一个词时只能依赖前一个隐藏向量。

例如,在天气预测中,根据前几天的气象数据来预测第二天的天气;在股票分析中,基于过去的波动来预测未来走势;在生物信息学中,根据DNA序列的先前碱基预测后续碱基……凡是需要基于先前序列信息进行预测的任务,RNN都能发挥重要作用。

但是RNN 的结构特点也造就了它的局限性。由于它只能顺序地处理信息,所以计算效率效率较低;并且它的每一步都依赖前一步的隐藏状态,因此能“记住”的信息是有限的。当序列过长时,早期的信息在层层传递中容易被逐渐遗忘。

Understanding LSTM Networks;Chris Olah

后来,研究人员为了改善这个缺点,将“自注意力机制”(self-attention)引入RNN中,但这只增强了它的“记忆力”,整体运行效率仍然没有改善。

神经网络结构经过迭代更新,目前几乎所有主流的人工智能都以 Transformer 为核心。Transformer既具有比CNN更宏观的’整体性’,又比RNN拥有更强的’记忆力’(信息储存能力)和并行性。 Transformer 架构最早由 Google Brain 团队于 2017 年提出,也就是那篇非常著名的Attention Is All You Need。Transformer完全依赖“自注意力机制(Self-Attention)”的数学框架,使模型能够同时关注输入序列中的所有部分,计算效率与可扩展性得到极大提升。

如果仍然用’读书’打比方,Transformer 就像一个人同时把整本书摊开,它不再一行行地顺序阅读,而是在瞬间看到所有句子之间的联系,并快速找到与某一个句子最相关的部分。而这正是Attentoin(注意力机制)所造就的强大优势。

Transformer结构

Attention Is All You Need

如果单看文章中给出的Transformer框架流程图,相信除了作者没人能看懂,所以我们要做的是把这些部分拆解开来,当然,今天的重点只是拆解Attention模块。

左半边部分称为encoder(编码器),右半边部分称为decoder(解码器)。这两部分都是由Multi-Head Attention和Feed Forward组成。我们在这里首先要搞清楚的是:Multi-Head Attention(多头注意力机制)是什么?

Multi-Head,顾名思义,它由许多Single-Head并行组成,单个single attention的运算流程如左图所示。

当我们输入一段文本时,模型首先会把它“拆分”成许多 token(为了方便理解,可以先把一个 token 理解成一个单词)。然后Transformer 会为这些 token 创建一组向量,每个向量都是从 “嵌入空间(embedding space)” 中取出来的。这个“嵌入空间”由研究人员利用大量已经标注好的语料库训练得到,尽可能包含了所有语义信息。

在这一步,token向量之间是没有联系的,每个向量只能编码单词本身的语义,我们把这些“嵌入向量”用E表示。

“嵌入向量”E映射到Q-K空间使彼此之间建立“联系”,所谓建立联系也就是一个单词知道自己的语义与文本中哪些词相关”

V(Value)矩阵是嵌入矩阵的转置矩阵。它的作用是将通过注意力机制得到的“信息向量”投射回原来的向量空间(embedding space)。当这些“信息向量”与原始的 token 向量相加后,就得到了一个融合了语境理解的”更新向量”。

空间:由“张量(tensor)”——也就是多维矩阵*——所张成的数学空间。在 Transformer 中,嵌入向量 E 与 Q、K、V (矩阵)之间的关系,本质上就是一系列矩阵与向量的乘法运算。

虽然目前对Attention block的具体运算细节还不清楚,但是我觉得先给出公式会让人有一个比较模糊的宏观了解。

注意力机制的核心计算公式如下:


single-head Attention(单头注意力)

1

Q-K space

假设我们用如下的句子作为输入,希望通过GPT-3的Transform模型预测下文:

a fluffy blue creature roamed the verdant forest.

我们把’creature’作为目标token,它的嵌入向量记为E4(GPT-3中嵌入向量的维度𝑑𝑚𝑜𝑑𝑒𝑙=12288)。

Query space(查询空间)的矩阵记为Wq(GPT-3中查询矩阵的维度dk=128);Wq的作用是把“语义向量”变成“信息需求向量”,描述形象一点:模型会问自己”我该关注哪些词?”这个过程在数学上表现为一次矩阵向量相乘的线性变换。

 E4*Wq=Q

E4表示’creature’本身的语义;假设这个 Wq的作用是将嵌入空间中的名词映射到Query space,那么 Q4 就可以理解为:它在“询问”——我想知道这个名词(creature)对应的形容词是谁?(提出需求)

Key space(键空间)”的矩阵记为Wk(GPT-3中键矩阵的维度dk=128)

Ei*Wq=K

每个 token 的嵌入向量E经过这个矩阵变换后,得到对应的 Kᵢ。它可以被理解为对 Query 向量提出的问题的一种“回答”。

用数学语言表示,就是将所有的 Kᵢ 分别与 Q₄ 做点积;这从数学上很好理解:两个向量A*B相当于:向量A的长度向量B在A方向的投影长度,两个向量的方向越接近(夹角越小),它们的点积就越大。

向量的方向蕴含了丰富的语义信息,如果两个向量的方向接近,说明该向量代表的语义信息接近。换句话说,点积越大,说明这个词与目标词(creature)的语义关系越密切

Attention in transformers, step-by-step;3Blue1Brown

Wq 和 Wk 把嵌入向量 E 映射到维度相同的空间中。 以上图为例:向量K2与向量Q4的方向相近,表示两者关系紧密。(在这个例子里,这种关系具体表现为:“fluffy” 是 “creature” 的形容词。)

对于输入文本,模型会让所有查询向量 Q 与所有键向量 K 分别做点积,从而得到每个词与其他词之间的语义相关性。

在这个例子中,QK^T得到的结果如下图所示:向量之间相关性越紧密,点积结果越大;反之,点积结果越小。

Attention in transformers, step-by-step;3Blue1Brown

“注意力机制”是什么?(Attention in Transformer)|AI

这些点积结果可以是负无穷~正无穷之间的任何数值,为了简化后续计算,方便生成注意力权重,需要对它们进行方差归一化,也就是除以√dk 。

归一化方差的原因:数值经过softmax函数变换后输出为0-1之间的概率,如果数值过大或过小,输出就会过于极端——聚集在0,1这两点。模型在”反向传播“时几乎得不到有效梯度,训练无法进行。

2

Softmax函数

在得到归一化后的点积结果后,Softmax函数将这些数值转换为概率分布,使每个值介于 0 到 1 之间,且所有值加起来等于 1。

先对输入向量中的每个数取以 e 为底的指数,使所有数值都变为正数;然后将这些指数值相加,最后计算每一项占总和的比例。

每组概率表示模型在“关注”当前词时分配的注意力权重:数值越大,说明模型认为该词对当前 token 的语义理解越重要;数值越小,说明它与当前 token 的关联较弱。

Attention in transformers, step-by-step;3Blue1Brown

3

Value space

至此,我们已经理清了这个核心公式的左半部分。接下来的步骤,是通过 Value matrix(值矩阵) 将加权后的结果重新映射回“嵌入空间”(embedding space),在原始语义空间中”更新”目标向量。

在我们的例子中,就是将与 “creature”(目标 token)有关的所有词向量分别与 Value Matrix 相乘,得到对应的 “值向量”。接着,模型会按照上一步计算得到的注意力权重,对这些值向量进行加权求和,生成一个融合了上下文信息的“更新向量”。

Attention in transformers, step-by-step;3Blue1Brown

value matrix与嵌入向量E相乘=’value’(值向量),∑(value*weight)+’creature’的嵌入向量=被修饰后的’creature’向量

对于整个输入文本来说,这一过程会对每个 token 都执行一次:模型将所有变化量与对应的嵌入向量相加。这些更新后的向量会作为下一层计算的输入,继续被模型加工、理解。

Attention in transformers, step-by-step;3Blue1Brown

顺带一提,Value Matrix(值矩阵) 的维度为 12288 × 12288,如此高维的矩阵计算量非常庞大。为了降低复杂度,模型通常会采用“低秩分解”的方法,将它表示为两个低维矩阵相乘的形式。

Attention in transformers, step-by-step;3Blue1Brown

如此一来,嵌入向量先与右边的矩阵相乘实现降维,再与左边矩阵相乘,将结果重新映射回12288维度的嵌入空间。(矩阵乘法的结合律)

总结

上述内容就是’single-head attention’(单头注意力机制)的工作原理,整个过程可以概括为:横向权重赋值+纵向权重赋值。在这其中,三个核心矩阵 Q、K、V 共同完成了输入文本中各个 token 之间的信息交互。(在我们上述的例子中就是为名词寻找并融合对应的形容词的语义)

Multi-Head Attention

多头注意力机制(Multi-Head Attention) 相当于多个 Single-Head Attention 的并行叠加。每个“头”(Head)都由参数各不相同的独立的Q-K-V矩阵组成,每个头构成的语义空间关注不同的侧面:有的着眼于句法结构,有的捕捉语义修饰,还有的专注于文本的语气或风格…… 

 在GPT-3模型中共有96个“头”,也就是96个子空间。输入的token在子空间中独立“学习”得到各自的“更新向量”,96个子空间的“更新向量”之和+目标token的嵌入向量得到整合了输入文本所有语义、更精准的嵌入向量。

MASK(掩码)

现在回看这张结构图,右侧的Decoder(解码器)与左侧的Encoder(编码器)在结构上略有不同:在解码器的 Self-Attention 模块中,多出了一层mask(掩码)

mask(掩码)的作用是:避免后置词对前置词的干扰。 换句话说,在生成文本时,模型只能“看到”已经出现的词,而不能提前窥视未来的词。这样才能确保模型的预测是逐词生成的

模型在生成第t 个词时,并不是“凭空”选择,而是根据前面所有已生成的词,计算出一个所有可能的词的条件概率分布:

在实际操作中,为了让文本更加自然,模型并不会总是选择概率最高的词,而是会在一定程度上采样那些概率略低的词。这也解释了为什么在相同输入的情况下,模型生成的结果可能有所不同。

mask(掩码)具体的操作方法是在softmax之前添加一个遮罩矩阵(mask)。如果理解了前面的计算流程就很容易明白:在注意力机制中,attention block 会计算所有 Q 与 K 的点积(点积矩阵)。遮罩矩阵就是将点积矩阵中的左下角区域(即后置词对应的部分)全部替换为一个极大的负值。

这些极大负值在经过 softmax 函数变换后,输出结果会接近于 0,相当于在计算注意力权重时彻底屏蔽掉这些位置。

Attention in transformers, step-by-step;3Blue1Brown

Attention in transformers, step-by-step;3Blue1Brown

在GPT模型中,训练阶段和运行阶段都会使用masking,在训练阶段,模型会被输入完整的文本序列,通过不断调整参数和权重,使它在每一步的输出(预测下一个词的概率分布)尽可能接近预期词。

总结

在整个 Transformer 结构中,Attention block的运算只占模型的1/3,剩下的2/3发生在Multilayer Perceptron——’MLP’(多层感知器)中。当一个词经过注意力机制“吸收”了一部分上下文语义后,MLP 层会进一步对它进行非线性变换。随着词向量流经越来越多的层,每一次迭代都让它从周围的 embedding 中获得更丰富、更细腻的语义信息,不仅包括词义和句法,还可能捕捉到文本的语气、情感,甚至文艺,哲学或学术语境……

总结来说,所有的神经网络模型所做的工作都是:提供一个可调节的数学模型框架,通过训练数据不断优化其中的参数(权重和偏置),让模型能够捕捉输入数据的规律并进行预测。

由于向量空间中的基本变换是线性的,而现实世界中的规律往往是高度非线性的。所以神经网络都是多层线性变换与非线性函数(ReLU)的叠加,经过海量计算,逐步逼近和拟合现实世界复杂的非线性关系。

ReLU函数

这些矩阵中的特定数值究竟是如何形成的无法完全解释。它们是在训练过程中,为了达到预期的结果而生成的——计算机为它们找到了自己的“位置”。这些数值的初始生成看似随机,但在随机背后,或许隐藏着计算机探索出的某种底层规律,在那里,如同存在一个由运算法则支撑的独立世界。

这有点类似宇宙的演化…无数不确定的因素交织,造就了如今的世界。科学家试图用一些规则解释,但理论终究是不完备的,因为某些随机事件的发生,永远无法被清晰说明。

水平有限,欢迎指正

对于新兴行业(当然这也并不新)总有人为其附上“神秘主义”色彩,尤其当“专业人士”摆弄出高深莫测的模样。“神秘主义”由于未知而滋生恐惧,但是这种未知是可以被逐步消解的,因为只要是人类创造出的东西就不会超过人脑所能理解的范围。

参考内容:

1.Neural Networks and Deep Learning;Michael Nielsen;

http:///index.html

2.Understanding LSTM Networks;Chris Olah;

https://colah./posts/2015-08-Understanding-LSTMs/

3.Attention Is All You Need;Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan N. Gomez,Łukasz Kaiser,Illia Polosukhin.arXiv preprint arXiv:1706.03762v7

4.Attention in transformers, step-by-step;3Blue1Brown;【官方双语】直观解释注意力机制,Transformer的核心 | 【深度学习第6章】_哔哩哔哩_bilibili