【Paper Reading】自注意力机制以及在Alphafold2中的应用( 二 )


第二个氨基酸对之间特征的pair矩阵形状是r×r×c,是一个方阵 。r表示这段人蛋白的氨基酸的序列的长度 。每个氨基酸对之间的特征信息也是用一个c维向量来表示 。
我们将这两个矩阵都传入编码器,一个名为的神经网络架构 。
是大名鼎鼎的深度学习模型的变种 。在中(下一小节详述),我们可以在编码器输入一段序列,输出的是另一段序列,在的神经网络的编码器中,我们计算序列之间的关系,用学习到的参数,来输出相应的序列,这段序列包含了序列每个位置相对于整体的一个期望值信息(即关注度,我们称为自注意力Self-) 。
在的编码器中,我们传入这两个矩阵,输出的是两个同样形状的矩阵 。
这时这两个矩阵经过神经网络的运算,已经带有了自注意力信息,我们将序列的特征信息和配对的信息融入自注意力中 。具体在我们这篇文章的例子中,输出的第一个矩阵的信息中,在c这个维度,已经带有了更新过后的氨基酸序列特征;第二个矩阵,在c这个维度,已经带有了更新过后的氨基酸与氨基酸之间的关系的信息 。
有了这个信息,我们再把这两个矩阵传入右边解码器,即 (这里第一个矩阵只需要传第一行,即人蛋白的氨基酸序列的信息,因为我们的目的就是预测这段氨基酸的3D结构) 。解码器会根据更新后的人蛋白的氨基酸序列的特征,以及氨基酸对之间的关系,来预测输出每一个氨基酸在3D空间中的位置,来得到蛋白质的3D结构 。
那么现在就会有几个问题:
1.上面这三段话是什么意思?什么是自注意力?
2.这个是如何将传入的氨基酸序列信息和氨基酸对的信息建模,编码成我们需要的序列信息和氨基酸对之间的信息来解码3D结构的呢?
3.之前提到的中计算序列每个元素的自注意力的思想,为什么可以用这个思想来解释更新后的蛋白质特征信息,以及的氨基酸之间的关系信息呢?
我想先从Self-自注意力机制讲起 。
从 Self-机制 到 模型
这节专门面向小白,讲讲Self-机制与模型 。
在网络上许多对自注意力机制的讲解都是直接讲QKV模型,让人没有一个科学的连贯思维去认识这个机制的来龙去脉,本文会从头讲解自注意力的思路是怎么来的,自注意力机制体现了什么样的思想 。
笔者以自然语言处理(NLP)为例讲解,因为的提出一开始也是广泛地应用在NLP领域 。
处理一个序列()的数据,最常见的情况就是处理语言文本 。
比如我们先将一句话中的词为一个向量,将词汇向量化 。这里可作为一种从高维到低维映射的方法,我们想象词汇是存在于高维空间的东西,具有相似含义的词汇可能位于高维空间的邻近位置 。我们抽取它们的特征,映射到一个较低维的向量空间 。
但是光有词汇自身的特征还不够,我们还需要建立上下文之间的联系 。
比如上图,我们输入一句话的文本,下排为词向量后还没有上下文的联系 。
我们需要给一个上下文编码器( ),输出为。
有了上下文联系后,就可以进入下游任务,进行情感分类(-to-one)、翻译(-to-, )等任务 。
因此上下文编码器非常重要 。
那么,上下文编码器应该如何实现呢?
由上我们可以推出序列常有两个特点:
序列长度不固定,即变长性序列需要有一个全连接,保证上下文的联系 机制
对于以上这两个特点,我们会想到使用CNN(卷积神经网络)和RNN(循环神经网络)来建模,如上图 。
但是由于CNN的卷积特性,每次卷积时卷积核的视野是有限的,导致其建模上下文关系时,范围受限;如果堆叠层数,模型又会变得臃肿,训练困难 。