Transformer建模SMILES进行反应产率预测 #Datawhale AI 夏令营 8.3

循环神经网络:由于所有的前文信息都蕴含在一个隐向量里面,这会导致随着序列长度的增加,编码在隐藏状态中的序列早期的上下文信息被逐渐遗忘。

卷积神经网络:受限的上下文窗口在建模长文本方面天然地存在不足。如果需要关注长文本,就需要多层的卷积操作。

基本架构

1.嵌入层 (embedding layer)

将token转化为向量表示。模型认识的只是向量,所以需要将每个切分好的token转化为向量。

这个过程中,与RNN不同的是,我们在Transformer的嵌入层,会在词嵌入中加入位置编码(Positional Encoding)。

2.自注意力层 (self-attention layer)

引入在注意力机制中:查询 $$q_{i}(Query$$ ,键 $$k_{i}(Key$$ ,值 $$v_{i}(Value$$ 。在编码输入序列中每一个单词的表示的过程中,这三个元素用于计算上下文单词所对应的权重得分。

3.前馈层 (Feed Forward layer)

本质上,就是一个线性层。

4.残差连接

从基本架构图中我们可以看到,每个(LayerNorm layer)都有一个(Add),这就是一个残差连接。它的作用是用一条直连通道直接将对应子层的输入连接到输出上去,从而避免由于网络过深在优化过程中潜在的梯度消失问题。

5.层归一化 (Layernorm)

我们直到,在神经网络中,我们经常对每一层的输出数据进行归一化,以使得模型更快达到收敛。只不过,前面的归一化方式几乎都是batch normalization,即对不同的batch进行归一化。Transformer在最开始被提出来的时候,采用的也是batch normalization。但是在人们后续的实践中发现,对于transformer而言,每一层间的归一化效果都要更好。

利用Transformer的Encoder作为编码器编码

Transformer也是一个经典的编码器-解码器模型(encoder-decoder model)。从基本架构图中也可以看到,编码器部分将输入转化为一个向量之后,再传递到了解码器部分。

进一步提升分数

  1. 调整epoch:epoch越大,训练得越久,一般而言模型得性能会更好。但是也有可能会出现过拟合现象。

  2. 调整模型大小:也即中间向量的维度、模型得层数、注意力头的个数。一般而言,模型越大学习能力越强,但是同样的也有可能出现过拟合。

  3. 数据:对数据做清洗,调整数据分布,做数据增广。对于SMILES一个可行的增广思路是:将一个SMILES换一种写法。

  4. 采用学习率调度策略:在训练模型的过程中,我们发现往往约到后面,需要更小的学习率。

  5. 集成学习:训练多个不同初始化或架构的模型,并使用集成方法(如投票或平均)来产生最终翻译。这可以减少单一模型的过拟合风险,提高翻译的稳定性。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值