ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MindSpore21天实战营手记(二) :基于Bert进行中文新闻分类

2021-07-26 19:04:21  阅读:311  来源: 互联网

标签:Bert 训练 BERT 模型 作业 算法 手记 数据 MindSpore21


课程秉承了“实战”风,老师简单理了一下NLP模型发展脉络,每个时期代表模型的优缺点,就一猛子扎进了BERT的关键技术——Transformer和Attention工作机制,于是编码解码、Query、Key、Values、Embedding、Softmax、矩阵运算带着满满的优越感向我碾压过来。算了,既然这是实战课,理论的问题就不要深究了吧,只要知道BERT是两步训练,知道如何使用ModelArts得到分类结果和评估,就达到今天学习的目的了。

作业过程

这次课后作业比第一课难度低了很多。这主要得益于ModelArts提供了线上训练环境,免除了在本地搭建环境的痛苦。另外教辅材料准备都十分到位——预训练模型、微调模型、训练数据集、微调和评估代码,还有详细的作业指南一应俱全。

作业.png

BERT工作流程及本次课程作业

  • 体验作业:要求对调优模型的分类结果进行评估,只需要上传数据集、模型、脚本,指定输出文件的位置,提交任务,就可以让ModelArts干活了。评估结果会记录在日志文件里,日志文件可以在线浏览,也可以下载到本地。运行时间也只需要短短1~2分钟。

  • 进阶作业:复杂一点,第一步先调优,要把预训练的模型参数应用到TNEWS数据集做训练,再按照体验作业的过程对调优的结果进行评估。第一步调优运行14分钟,第二步评估仍然只需要1-2分钟。

  • 老师提供的作业指南在附件里。作业过程当中文件上传遇到点状况。由于bert_base.ckpt文件超过1GB,我琢磨在上传这个文件的当口不如去设置参数。于是我把上传任务启动后就返回(是在同一个标签下返回)MobelArts配置算法来源、数据来源、运行参数等等,用不了5分钟就都配置好了。我再去obs检查数据集目录,没有这个文件,而且在控制台中也找不到查看文件传输进度的功能。后来在“任务管理”帮助文件里了解到,上传过程中不能关闭网页,否则记录会丢失。虽然文档没有说任务本身会丢失,但是后来再传输文件的时候,我会单独打开一个标签专门用于文件传输。

作业-framed.png

  • 费用也是我担心的一个问题。课前看过华为云应用的报价,动辄几千几万,好有冲击力。不过我只是想了解一下MindSpore,又不是上线企业应用,花费太高可承受不 了。老师讲ModelArts在公测阶段可以免费使用,只是赶上业务量大的时候需要排队。模型、数据集和代码需要用obs存储,用量少的话也是免费的。听老师这样说我就放心了。完成作业的第二天,我成功收到了华为云费用账单:

账单.png

想想占用了人家差不多2GB的存储容量,才花5毛7分钱人民币,学习成本并不高,完全能接受。

写在最后

老师讲的NLP算法演进历史虽然不是重点,但是我觉得深入了解一个领域的发展过程是很必要的。只有知道以前人们是怎么应对挑战的,以及如何改进的,才有可能理解最新的成果为什么是这个样,以及如何更好加以运用。我理解实战课时间有限,能讲到已经非常好了。加深了解是课后做的事情。

NLP.png

老师讲的NLP发展简史。尽量记录,但是还不能理解

第一次亲手“全程”操作一个训练任务,我对算法过程产生了一些联想。

首先是关于“学习”这件事。老师讲当前TNEWS分类最高的准确率57%。我觉得这样的成绩没有实用价值。问题会不会出在数据上呢?看统计学习方法有一个假设叫独立同分布。我不知道深度学习还需不需要这个假设。因为BERT学习包括预训练和调优两个阶段,而预训练使用的是一个超级大的通用语料库(华为使用的是中文维基。据说谷歌最早使用了英文维基),调优是把从预训练中得到的参数,应用到另外一个数据集(实验中用的是TNEWS数据集)上,再生成一组新的参数。我猜这两个数据集的差异很大。怎么测量这种差异我还没有概念,不过可以类比一下,让老中医去按西医的方法给病人开刀一定不会有好结果。我觉得在预训练的时候把领域知识带进去,实际应用的效果会有提高,比如用各类媒体发表过的标题作为预训练的数据集,再对今日头条的新闻标题做分类,准确率应该会有很大的提高。这个问题以后有机会要实际验证一下。

其次是关于“算法设计”这件事。BERT一出山就刷新了很多NLP任务的成绩很了不起,但是在创新性方面,感觉Transformer的贡献似乎更大。而相对于Word2Vec来说,从Seq2Seq到Transformer开创的东西似乎并不多,每一代新模型都是对前辈的修补。这是不是说模型开发基本是经验驱动的,尝试的作用很大(模型改进是不是就是传说中的“炼丹”)?就好比积木块都一样,只是用不同的方法把它们连接成不同的样子,然后看看力量是不是加强了,加强的就留下变成新擂主。至于为什么加强的,可能还是没搞清楚。感觉这又有点像老中医,说不清药物为什么起了效,如果非要说,他会扯一堆天地人,精气神,七经八脉之类的无法实证的东西。如果是这样的话,那么算力的作用就非常大了,因为只有算力够强,迭代的速度才够快,练丹师傅才能更快发现哪个模型力气大。

最后是关于“算法实现”这件事。感觉实现是很难的。一个算子后面涉及多少数据转换,多少矩阵运算,多少微分,加乘。假如是自己去实现一个算法,又要学习多少数学,又要知道多少驱动硬件的知识。实在太难。而且,最最要命的是,知识量往往是天花板。我亲身经过过一次。大约半年前自学CS231,做multiclass SVM Loss作业,我只想到用数值计算的方法实现求导,一个循环要6分多钟。能做出来感觉挺好,但是觉得这么慢不对劲。后来看Github上一位MahanFathi的作业,人家用解析法,代码量是我的1/20,只用几秒钟就能跑一个循环。我信心碎一地,至今不碰CS231,除非有高人带。所以我觉得有MindSpore真好,计算这种工作让它做好了,我就想想网络搭几层,怎么连接就行了吧。

机器学习一小白,胡思乱想净瞎猜。欢迎大佬指导。

前课笔记:

MindSpore21天实战营手记(一):基于MindSpore Lite开发端侧AI图像分类应用

有大神打比赛,求带。哪里写得不对,请大牛指教。欢迎加微信

微信二维码.jpg

转自文章链接:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=84847

感谢作者的努力与分享,侵权立删!

标签:Bert,训练,BERT,模型,作业,算法,手记,数据,MindSpore21
来源: https://blog.csdn.net/xi_xiyu/article/details/119116077

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有