notes for datawhale summer camp chemistry task3

Transformer

transformer的诞生

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

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

关于Transformer,不必赘述,参考:
[[…/…/大模型/ChatGPT原理与实践/ChatGPT基础科普#2. Transformer|ChatGPT基础科普 - Transformer]]
[[…/夏令营第二期/Task3#Transformer 介绍|夏令营第二期 Task3 Transformer 介绍]]

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

Transformer是一个经典的编码器-解码器模型(encoder-decoder model)

我们可以把Transformer的Encoder单独拿出来并看作是一个编码器

在这里插入图片描述

进一步提分

接下来,我们介绍一些常用的调参或者优化模型的方式,以帮助大家进一步提高分数。相信大家在这个过程中,会进一步理解为什么我们常常把这个过程称之为“炼丹”了。

  1. 调整epoch

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

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

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

在这里插入图片描述

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

课后思考

之前无法理解的学习率,这次又遇到了

学习率是什么

学习率(Learning Rate)是机器学习和深度学习中的一个超参数,它控制了模型在优化过程中更新权重的速度。在训练神经网络时,学习率是一个非常重要的参数,它影响着模型是否能快速且有效地收敛到最优解。
具体来说,学习率定义了在梯度下降算法中,模型参数更新的幅度。梯度下降是一种优化算法,用于寻找函数的局部最小值。在深度学习中,这个函数通常是损失函数,它衡量了模型预测值与真实值之间的差异。
以下是对学习率更详细的解释:

  1. 梯度:在数学中,梯度是一个向量,指向函数增长最快的方向。在损失函数中,梯度指向损失增加最快的方向。为了最小化损失函数,我们需要沿着梯度的反方向更新权重,即进行梯度下降。

  2. 更新权重:在每次迭代或训练步骤中,模型参数(如神经网络的权重和偏置)会根据梯度和学习率进行更新。更新公式通常如下:

    weight = weight - learning_rate * gradient
    

    其中 weight 是要更新的权重,gradient 是损失函数关于该权重的梯度,learning_rate 是学习率。

  3. 学习率的作用

    • 如果学习率太小,模型训练会非常缓慢,需要很多时间才能收敛。
    • 如果学习率太大,模型可能会在损失函数的表面震荡,甚至发散,无法找到最小值。
  4. 选择合适的学习率:选择合适的学习率是艺术和科学的一部分。通常,需要通过实验来找到合适的学习率,或者使用一些策略(如学习率衰减、学习率预热、使用学习率查找器等)来动态调整学习率。
    学习率是深度学习实践中需要仔细调整的关键参数之一,它对模型的训练效率和最终性能有着直接的影响。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值