Transformer学习最终章

本篇博客是现阶段transformer框架学习的最后一篇,内容主要包括学习资源汇总和最新一次的训练结果,希望可以帮助到大家。不做商业用途,绝不允许任何侵权行为。

一、 资源汇总

1. 学习工具

文献阅读:知云文献翻译V8.4、谷歌翻译

编程环境:anaconda、VS code、Python 3.10.14、Pytorch 2.4.0

GPU环境:NVIDIA GeForce RTX 3050 Laptop GPU、cuda 12.4、cuDNN 90100

AI工具:ChatGPT-4o-mini

2. 学习资料及产出

整个学习周期从7月15日持续到7月31日,分为三个阶段:

论文学习(7.15-7.20)

论文地址:Attention is all you need

学习资料:illustrated-transformer

博客记录:《Attention Is All You Need》论文学习-CSDN博客

源码学习(7.21-7.23)

项目地址:GitHub - tensorflow/tensor2tensor

博客记录:《tensor2tensor》源码解读-CSDN博客

上手实践(7.24-7.31)

项目地址:GitHub-Transformer

博客记录:Transformer应用——机器翻译(English & Chinese)-CSDN博客

二、 最新结果

在上一篇博客中,我使用较小的数据集跑通了输入处理、模型训练、输出处理、模型评估整个过程,由于数据集过于小(训练集960,验证集320,测试集320),即使跑了10个epoch,结果也不是很理想。我也考虑了租赁服务器,但是还需要配一次环境,所以直接pass。于是乎我新建了一个middle数据集:

  • train.txt:原训练集前32万条数据
  • val.txt:原验证集前3200条数据
  • test.txt:原验证集剩余数据(36123条)

训练一个epoch,每个批次32条数据,1000个批次时进行一次验证,检查是否可以早停。

损失函数图像

 图像纵坐标选择不当,一开始loss接近10,训练最后loss在0.002左右浮动,相差了5000倍,可惜没有将loss保存下来,不然还可以调整一下坐标轴,这属于是吸取教训了。

前50个批次的loss和训练时间花销

8950-9000批次的loss和训练时间花销 

至于为什么不是9950-10000的,问就是忘记截图了......

训练花费时间43345.94s,整整12个小时,从中午十二点跑到晚上12点,GPU都快冒烟了!

接着看看评估,比起上次训练的小模型,这次结果就好太多了,几乎没有错别字了,分数嘎嘎高

这是测试集36123条数据的测试结果,因为原本的数据集是去重的,这次划分的训练集、验证集、测试集也没有重复的部分,我认为模型的拟合程度还是非常好的。

三、总结

半个月多一点的时间,有这么多收获我是非常开心以及满意的,不仅学到了知识,还收获了许多粉丝,以及大家的点赞,感谢支持。我本人马上就要大四了,不是很想考研,一直梦想保研上岸,暂且先短暂体验一下科研生活吧,也认清一下自己的层次。

本次实践还有非常多的地方可以改进:

  1. 之前提到的generate函数、src_mask、tgt_mask等等
  2. 对生成序列的处理其实可以优化一下,我验证时是将翻译句子与原句进行对其,保证长度一致,于是就省去了填充部分内容的处理(英翻中结果会出现很多“椹”字,可能这个字的编码很特殊,想起了之前的锟斤拷、烫烫烫、屯屯屯等C语言的梗)
  3. 训练样本数目可以进一步扩大,以及模型超参数可以进行调整

这些内容就交给感兴趣的大佬吧。虽然Transformer这个框架是2017年提出来的,已经过去7年了,AI领域的发展也是神速,但是这个框架似乎还有一段时间的热度,因此我认为这样一次学习是非常有意义的。再次感谢大家支持!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值