训练诗词生成模型(GPT2)的一点心得

作者分享了使用GPT2训练古诗生成模型的经验,探讨了诗词生成与其它文体的区别,模型选择、训练集选取、损失函数的影响,以及训练时间和生成结果的质量。文中提到,模型擅长生成对联和空洞题材的诗词,但缺乏内涵。未来可能的应用方向包括工作总结和音乐创作。文章附有模型生成的诗词样例。

最近学习NPL的一些模型,训练了一个古诗生成模型作为练习。记录一些学习过程中的想法。在电脑上建了一个用于测试的网页,但条件有限,不确定能运行多久。https://www.qizhen.xyz/

一、诗词对比其它文体

诗词生成问题要比散文、小说生成简单。最主要的原因是一般诗词篇幅比较短。现在的ML模型还做不到特别长的记忆力。
目前,我可以测试到的,文章生成能力最强的是GPT3模型。我在OpenAI的网站上试用了一下这个模型,它生成文字时也会经常写着写着就跑题了。
小说将会是最难生成的文体,因为篇幅太长。一段新生成的内容要考虑是不是跟之前的几十万字内容都没有冲突,甚至需要设计一个伏笔,在几十万字之后再去填坑。这个复杂度太高了。
所以做练习,一般也都会选用古诗,歌词这类题材。我个人喜欢古诗,讨厌大多数的现代诗,所以选择古诗做测试。但是真正考虑到实际需求,古诗却是最缺乏市场需求的。

我也想到了一些会有实用的文字生成产品,有些单位公司会定期要员工写学习心得,思想总结之类的文章。这些个空洞无趣的文章对于某些人来说是非常头疼的,但却比较适合有机器生成。可是我暂时还没法做类似的实验,我没有渠道获得足够的训练数据。

二、模型选择

写诗跟许多其它的NPL任务类似,经历了基于规则、基于统计到现在主要基于预训练模型的过程。

基于规则和基于统计的模型产生出来的诗文基本上一看就不是人写的。它们只能把一些符合规则的高频词凑在一起,但经常是前言不搭后语。即使是后来使用简单的LSTM、seq2seq等模型也不太容易生成行文自然的诗句。真正效果好的模型都是最近两年在超大模型比如BERT,GPT等基础上构架的。我在github上看到一些例子,效果真的很好,我作为理科生,已经分辨不出某些诗句是AI还是真人写的了。

模型肯定是越大的模型效果越好,但是越大的模型训练越费时费钱。
另外一个考虑的因素是,有的预训练模型可以直接做文本生成,有的还需要在附加一些神经网络层才可以。我用了GPT2的小型模型做练习,这个模型写大文章可能差点,但应付诗词还可以;而且GPT2可以直接生成文字,用起来很方便。将来我有时间的时候会再试一下其它一些比较常用的模型,比较一下它们的差别。
GPT2在某些情况下,可能还是太费钱了一些。训练一个GPT2模型一般最多两三天吧,就算用GPU,只租两天也不算是太贵。可是要长期发布就麻烦了。这个GPT2模型如果只使用CPU做预测,当下主流电脑做一个预测需要十秒钟以上,有点太长了。使用GPU,速度可以快一百倍左右,但价格可就高得多了。目前租一个云服务器,只用CPU的话,第一年只需要¥70左右;租一个带GPU的,需要¥7000每年,价格贵了一百倍啊。我可舍不得,毕竟只是玩玩,没什么收益的。

三、训练集选取

整个项目里,整理训练集是最费时间和精力的工作。对于多数机器学习项目,都是训练集越大效果越好,但是做诗词生成也学并不是的。古人创作过无数的诗词,能广为流传的是极其少数的一部分。也就是说,我们能够整理出来的诗词大多数其实写的并不好,如果让电脑跟它们学,恐怕也学不了多好。理想情况是只收集那些高水平的诗词。另外,太多的训练数据会激励算法使用一些不太常用的字词来作诗。这些词语如果应用不当,就非常影响作品可读性。反之,风月、云雨、山水等高频词,无论如何搭配,读起来都不至于太别扭。

当然小数据集也有缺点,它只会覆盖部分

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值