Datawhale AI夏令营 AI+化学 task3

Transformer建模SMILES进行反应产率预测

transformer诞生的由来

循环神经网络的序列到序列建模方法,在建模文本长程依赖方面都存在一定的局限性。

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

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

图1 循环神经网络中,每个词都会依赖上一个词

优势

完全通过注意力机制完成对序列的全局依赖的建模。并且,这是一种可以高并行的结构,大大增加了计算效率。

基本架构示意图

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

Transformer也是一个经典的编码器-解码器模型(encoder-decoder model)。从基本架构图中也可以看到,编码器部分将输入转化为一个向量之后,再传递到了解码器部分。既然这样,我们完全可以把Transformer的Encoder和Decoder部分拆开,分别拿来使用。其实,在大语言模型中非常具有代表性的BERT和GPT就是这样干的,它俩分别使用了Transformer的Encoder部分和Decoder部分。

既然Encoder部分输出的本身就是一个向量(我们这里称之为向量$$$$),那么只要模型学习得够好,那么这个向量就一定包含了重要得输入序列得信息。这就是为什么我们可以把Encoder单独拿出来并看作是一个编码器得原因。因此,我们可以将这个代表输入序列的向量$$$$,再作为其他模型的输入(例如全连接网络等),从而进行我们想要的分类或者回归任务。这样的思路被广泛应用在AI领域的研究和工程中。

在这里,我们使用Transformer的Encoder部分,编码我们的SMILES表达式。然后,再将等到的向量$z$通过一个线性层,输出一个值。我们期望通过模型的学习,这个输出的值就是该化学反应的产率。

进一步提升分数

 

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

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

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

  4. 采用学习率调度策略:在训练模型的过程中,我们发现往往约到后面,需要更小的学习率。例如下图:学习到后面,我们需要收敛的局部最小值点的两边都比较“窄”,如果现在学习率太大,那么在梯度下降的时候,就有可能翻过局部最小点了。因此需要调整学习率变小。在Pytorch中已经定义好了一些常用的学习率调度方法,需要的学习者可以自己从官网上查看如何使用。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值