1. Task2 RNN的缺点
RNN的一种形式是n to n,如下所示。
输入是x1,x2,...,xnx_1,x_2,...,x_nx1,x2,...,xn,输出是y1,y2,...yny_1,y_2,...y_ny1,y2,...yn。
例如上图,传递函数:
hi=f(Wxi+Vhi−1+b)i∈0,1,2,3
h_i = f(Wx_i + Vh_{i-1} +b) \qquad i \in {0,1,2,3}
hi=f(Wxi+Vhi−1+b)i∈0,1,2,3
实际情况iii可更多。一般情况下,W,V,bW,V,bW,V,b是不变的。
缺点可谓:
- 层过多,会丢失,并不像LSTM(Long Short-Term Memory),记忆能力相对较弱。
- RNN是一层一层传递,如果有奇异值或者异常值,会导致梯度爆炸或者梯度消失
- 并行运算困难
- RNN输出依赖前面的输入
2. 何为Transformer?
Transformer是由Vaswani等人在2017年提出的一种神经网络架构,出自于论文“Attention is All You Need”中。Transformer架构在许多NLP任务中表现出色,目前已经成为诸如GPT(Generative Pre-trained Transformer)等大型语言模型的基础。
其基本架构如下:
其分为Encoder block,Decoder block,Input和Output四个部分。
Input包括Embedding layer和Positional Encoding。
2.1 位置编码方法
在“Attention is All You Need”论文中采用的是正余弦函数生成的位置计算公式:
双变量正余弦函数如下:
PE(pos,2i)=sin(pos100002idmodel)PE(pos,2i+1)=cos(pos100002idmodel)(1)
\left.
\begin{aligned}
PE(pos,2i) &= sin(\dfrac {pos} {10000^{\frac {2i} {d_{model}}}}) \\
PE(pos,2i+1) &= cos(\dfrac {pos} {10000^{\frac {2i} {d_{model}}}})
\end{aligned}
\tag{1}
\right.
PE(pos,2i)PE(pos,2i+1)=sin(10000dmodel2ipos)=cos(10000dmodel2ipos)(1)
其中,pospospos 表示单词所在的位置,2i2i2i 和 2i+12i+12i+1 表示位置编码向量中的对应维度,dmodeld_{model}dmodel则对应位置编码的总维度。
假如dmodel=512d_{model} = 512dmodel=512,则iii最大为255。
值得注意的是,位置编码得到的结果是直接和输入的向量相加而非拼接。
2.2 Encoder block和Decoder block
每个block在图中都有六个同类堆叠而成。
一个Encoder是由自注意力机制和残差块相加与正则化(Add and LayerNorm)构成。
对于一个输入序列,如果它是一个词向量,词向量可以通过三个权重矩阵转换成Attention值所需的Query,Keys,Values向量,这里注意矩阵相乘的条件,特别是矩阵行列大小。
得到Q,K,V后即可计算Attention值。
这里的标准化是对同一个样本不同神经元之间进行归一化,此即Layer Normalization。
另外,Batch Normalization是对不同样本的同一位置的神经元进行归一化。
在Add and LayerNorm之前,还有一个前馈网络(Feed Forward Network)
公式如下:
FFN(x)=ReLU(xW1+b1)W2+b2
FFN(x) = ReLU(xW_1 + b_1) W_2 + b_2
FFN(x)=ReLU(xW1+b1)W2+b2
Decoder结构与Encoder类似。
3.思考
在文章中,作者指出:将SMILES作为序列进行建模,相比于使用分子指纹进行向量化之后采用传统的机器学习方法,效果还更差。
个人认为,作者指出的第二点可以具体而言:
SMILES所包含的拓扑信息是有限的,无法表示较为复杂的分子空间结构。哪怕很多时候一些细小的信息变化,两种物质之间的性质差距不大,但也会有像”奇异矩阵“一样在”奇异点“的病态变——一点的信息变化会导致极大的性质之差。
一个能够蕴含更多的拓扑信息分子结构是急需的。
Datawhale Task3 Transformer建模SMILES进行反应产率预测文章:https://linklearner.com/activity/12/1/13