【百问百答系列】-全面了解Transformer(训练细节)

【百问百答系列】-全面了解Transformer

引言

初次接触 Transformer 时,那些复杂的概念和精妙的架构设计,着实让我困惑不已。但随着一个一个问题的深入探究,从它的基本概念、原理架构,到如何训练、模型优化,再到其广泛的应用领域以及充满潜力的未来发展,我对它的理解也越来越深刻。
希望借由这个百问百答系列,把在学习 Transformer 过程中的思考、疑问与收获分享出来。

训练细节

46. Transformer 的训练过程是怎样的?

Transformer的训练过程可以用以下方式“说人话”解释:

准备数据

  • 首先,要把我们的文本数据等进行处理。比如有一堆英文句子和对应的中文句子,要把这些句子变成模型能理解的样子,给每个单词等都标上一个数字编号,变成一个个的向量。而且还要把这些句子按照一定的长度进行分组,方便模型处理。

编码器处理

  • 把准备好的输入序列送入编码器。编码器会先给每个输入位置加上位置编码,因为Transformer本身没有像循环神经网络那样能记住顺序的能力,位置编码就是告诉模型每个词在句子里的位置。
  • 然后这些带着位置编码的输入会经过多个堆叠的编码器层。在每个编码器层里,先是通过多头注意力机制,让每个位置的词都能和其他位置的词“交流”,看看它们之间有什么关系,找到每个词在整个句子里的重要程度。
  • 接着,经过多头注意力处理后的结果会进入前馈神经网络子层,这个子层会对这些信息进行进一步加工,让模型能学到更复杂的特征。
  • 最后,每个编码器层还会有残差连接和层归一化,让训练更稳定,能更好地把信息传递下去。

解码器处理

  • 解码器这边,一开始会把已经生成的输出部分(最开始是一个表示开始的特殊符号)加上位置编码,然后也经过多个解码器层。
  • 解码器层里也有多头注意力机制,但这里有两种注意力,一种是掩码多头注意力,它会防止模型在生成当前位置的时候看到未来的信息,保证生成是按顺序来的;另一种是和编码器输出做交互的多头注意力,让解码器能结合编码器的信息来生成。
  • 同样,解码器层也有前馈神经网络子层、残差连接和层归一化,对信息进行处理和稳定训练。

计算损失

  • 解码器生成的结果会经过一个线性层和Softmax函数,变成一个概率分布,表示每个可能的输出的概率。
  • 把这个概率分布和真实的标签(就是正确的输出结果)进行对比,用一些方法,比如交叉熵损失函数,来计算模型预测的结果和真实结果之间的差距,这个差距就是损失。

优化更新

  • 用优化器,比如Adam等,根据计算出来的损失来调整模型里的参数,让损失越来越小。这个过程就是通过反向传播算法,从损失开始,把误差沿着网络一层一层地传回去,告诉每个参数应该怎么调整才能让损失变小。
  • 不断地重复上面的步骤,让模型在大量的数据上进行训练,慢慢地模型就会学到输入和输出之间的关系,能越来越准确地进行预测和生成。

Transformer训练过程较为复杂,可参考Transformer图解,该网页以图片形式对Transformer架构及其训练过程进行了清晰展示。
在这里插入图片描述

47. 训练 Transformer 需要准备什么样的数据?

训练Transformer需要的数据得根据具体任务来看,大概有下面这些情况:

做文本方面的任务

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Is code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值