方法具体细节为:
「乐府 AI」以 Transfomer 为基础模型,基于 BERT 源代码,实现了自己的 GPT 模型。
其 Transformer 大小的配置与 BERT-base 相同,还采用了 BERT 中发布的标记化脚本和中文词汇。对于文本生成,他们实现了截断的
top-k 采样来生成不同的文本。
三首「乐府 AI」生成的诗歌,与一首诗歌真迹
总的来说,「乐府 AI」学作诗一共分为以下三个阶段:
第一阶段:
数据处理
华为诺亚方舟实验室的 GPT 模型,以中文新闻语料库进行训练,数据训练主要分为
预培训和微调两个阶段。为了进行微调,他们收集了公开的中国古典诗歌,然后将样本诗转换为格式化的序列。
数据训练过程
第二阶段:模型训练
接着,他们在云服务上预训练了其 GPT 模型,包含一个新闻语料库,这一过程花费了 90 个小时。然后用 8 个 NVIDIA V100(16 GB)训练了 4 个阶段。
训练完成后,进行微调,将所有诗歌训练序列输入 transformer,并训练自动回归语言模型,以观察任何序列的概率最大化 X:
第三阶段:
诗歌生成
训练完成后,便应用该模型,根据要求生成特定主题的诗歌。
他们首先将形式和主题转换为
[形式,标识符 1,主题,标识符 2 ]的初始序列,然后将初始序列给到模型,并对主体字段逐个进行解码。
在解码过程中,并不需要硬约束来保证形式的正确性。相反,该模型能够在解码时,
自动分配逗号和句号的位置。当完成诗歌的生成时,会以
「EOS」的 token 来结束这一过程。
「乐府 AI」不仅学会了作诗,还掌握了一个新技能——藏头诗。
对于藏头诗,他们依然采用同样的方法来训练。只不过,训练藏头诗模型时,他们将之前训练过程中的主题(如「静夜思」),用该诗歌的每句首字来替换(如「床疑举低」)。
AI 诗人带来的惊喜
通过该方法生成的结果,令团队感到惊讶。
他们发现模型学会了律诗的复杂配对规则,这一规则,即使对于母语为中文,并接受了正常教育的人来说,都很难掌握(相信很多同学也深有同感)。
在生成的绝句和律诗中,95% 以上都表现良好,不过在词牌方面稍有逊色。原因可能是,相对绝句和律诗来说,词牌的形式相对来说更加复杂,而且训练样本也远远不如前者多。
绝句和律诗都有成千上万的训练样本,而
词牌只有 882 种,其中,只有 104 种的训练样本超过 100 个,即使是最大的样本,也仅包含 816 个。
系统根据「秋思」主题生成的各个体裁的诗歌
另外,在给定的主题中,通常生成结果都很好,但是对于某些主题,比如「机器翻译」,因为在训练语料库中很少出现,就不好生成诗歌。相反的,像「秋思」这类主题,就很容易生成。
团队介绍道,
该方法比现有基于循环神经网络(RNN)的方法简单的多,并且可以产生更好的诗歌。