从今天开始,我们将一起来学习一个新的课程,叫做《手把手教你用PyTorch搭建Transformer英译中翻译模型》。从这个课程名字就可以看出,我们要用 Pytorch 框架,搭建一个 Transformer 模型,去完成一个翻译任务。

项目效果

按照我讲课的习惯,应该在课程开头就给大家演示项目效果,但是这个课程的重点是 Transformer 的模型结构,和模型的训练细节,而不是这个项目效果有多花哨,所以没有太大必要去封装一个前端了,就在编辑器里面给大家演示一下模型效果。

texts = [
    "Many people in the world have this dream: they hope that some day they will be able to come to china and visit beijing.",
    "Although there are still many difficulties on our way ahead,we have the confidence to run well all our undertakings and to meet the preset goal.",
]

# 全世界很多人都有这样一个梦想,他们希望有朝一日能来到中国并访问北京。
# 虽然前进道路上有许多困难,但我们有信心把各项事业搞好,达到预定的目标。

虽然这个翻译效果,不算完美,但是对生成模型有了解的同学,应该知道要把模型训练到这个程度,有多不容易。另外,考虑到有同学没有GPU,这个效果是课上带大家用 Kaggle 的免费 GPU 资源训练出来的。所以,在各种限制的情况下,能训练到这个效果,我个人认为已经算及格了。

课程内容

1、Transformer 模型搭建

大约用13个小节,带大家逐步实现 Transformer 模型结构。

(1) 文本嵌入层、位置编码层

(2) 编码器层:多头注意力机制、前馈神经网络、残差连接和归一化

(3) 解码器层:多头注意力机制、编码-解码注意力机制、前馈神经网络、残差连接和归一化

(4) 生成器层

2、自定义Mini数据集训练

因为训练生成任务的样本量一般都比较大,自定义Mini数据集,方便调试,整个流程走通之后再做替换,自定义数据集跟真实数据格式一致。

(1) 分词、词表生成

(2) 数据集加载、数据对齐

(3) 模型训练和验证、BLEU评估指标

(4) 模型预测

3、新闻数据集并行训练

新闻数据集词表大,模型参数量大,训练样本多,需要用多块GPU并行训练。

(1) Label Smoothing、动态调整学习率策略

(2) 多 GPU 并行训练、多 GPU 负载均衡设置

(3) Kaggle 免费 GPU 资源

整个课程中,Transformer 模型结构的讲解,只占了1/3左右的篇幅,更多的工作是在,使用这个模型解决实际问题上。

总体来说,这个课程是目前市面上,最完整、最细致的 Transformer 课程了,希望能帮到大家。下节课,就正式开始讲解 Transformer 的模型结构了。

本文链接:http://ichenhua.cn/edu/note/648

版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!