AI 诗人,能写出中秋的意境吗

也许每个人心中都有一个诗人梦,希望自己能够像古代文人墨客一样用精炼的诗句抒情达意。比如,在中秋佳节,为亲朋好友作诗一首送上祝福。但无奈作诗并不是想象中那么简单。不过,人工智能技术已经能够圆你的诗人梦了,华为诺亚方舟实验室最新推出的「乐府 AI」,只要给出主题,就能在几秒内生成一首诗。快来作诗吧!

中秋佳节,你是怎么过的呢?这个团圆赏月的节日,激发了古今无数文人的情怀,留下了诸多隽永的诗句。

面对中秋花好月圆的良辰美景,古人能够吟出 「海上生明月,天涯共此时」的绝美诗句,而现在大多数人却只能无奈地,将无限感慨化为一句 「啊,月亮好圆。」

这大概就是「落霞与孤鹜齐飞,秋水共长天一色」和「好大一只鸟」之间的距离吧。

不过,不用难过,现在,AI 可以帮我们跨越这个距离,每个人都能轻松吟诗作对,成为诗人!

华为推出「乐府作诗」小程序

近日,华为 EI 体验空间小程序上线了一个新功能——乐府作诗。只要给出主题,选定字数与体裁(绝句或律诗),就能瞬间作出一首诗。比如,输入 「中秋」:

「赏月」:

「机器学习」:

「人工智能」:

如果不告诉你,你能看出这些诗是 AI   所写吗?今年 6 月,华为诺亚方舟实验室就发表了论文《GPT-based Generation for Classical Chinese Poetry》,详细介绍了该模型的训练过程以及成果展示。

总的来说,这个诗歌生成模型背后的关键技术,在于强大的 GPT 模型。

GPT 是由 OpenAI 提出的预训练自然语言模型,核心理念是先用无标签的文本去训练生成语言模型,然后再根据具体的任务通过有标签的数据对模型进行微调。团队先用大规模中文新闻语料,训练出了中文 GPT 模型。然后用中国古典诗歌作为语料库,对其进行了微调,就得到了诗歌生成系统——乐府 AI。

除了绝句和律诗,诺亚方舟团队还用微调的方法训练它学会生成藏头诗

而且,为了让 AI 能够学习自己写诗,这个 GPT 模型没有进行任何设定,作诗所需要的字数、韵律、平仄、对仗知识,都没有设定,模型全靠自己从古诗数据中学会了这些。

和「乐府 AI」相比,学了多年语文,却依然写不出一句像样的诗的人类,真要自叹弗如了。 

细数 AI 学作诗的历程

中国古典诗歌的生成,是自然语言生成领域中一个有趣的挑战。

与自由文本生成不同,中国古典诗歌在形式和内容上通常要满足一定的要求。比如字数、押韵、平仄以及对仗等。此外,内容上也要求整首诗的主题是一致且连贯的。

苏轼的《水调歌头》朗朗上口如今还被谱成歌曲传唱

此外,中国古典诗歌有很多形式,五言绝句、律诗,七言绝句、律诗,以及词牌如满江红、水调歌头等,还有对联。因此,要用人工智能的方法产生中国古典诗歌是比较复杂的。华为诺亚方舟实验室的科学家,通过研究给定形式和特定主题的诗歌生成问题,提出了基于预训练模型 GPT 的诗歌生成方法。

方法具体细节为:「乐府 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)的方法简单的多,并且可以产生更好的诗歌。

AI 学作诗,早已有之

有人说,中国是一个诗的国度。自古至今,文人墨客、文艺青年对于写诗都热情不减。而广大理工生,也不断用技术来表达其浪漫情怀。

2017 年 12 月,清华大学团队研发的诗歌机器人 「九歌」亮相央视节目《机智过人》,作的诗给观众带来了巨大惊喜。

「九歌」就是基于深度学习,学习了超 80 万诗歌后学会了写诗。它具有多模态输入、多体裁多风格、人机交互创作模式等特点。

除了古诗,现代诗对于 AI 来说也似乎不在话下,比如微软小冰就出版过诗集,国外也有多种语言版本的 AI 诗歌生成工具。 

AI 是真正会写诗,还是瞎凑

AI 写诗,有人赞赏,有人批判。

微博网友对 AI 写诗的看法

上海诗词学会理事刘鲁宁曾表示,写诗拼速度,人类比不过电脑,但是自己用一天时间写的诗,电脑写一千首页比不过。理事邓婉莹也表示,AI 作诗的特点是「有诗无篇」。

相比起文人墨客,在文思泉涌之时的创作而言, AI 写的诗可以说是「没有感情的写手」,他们在大量的文字中,发现诗词的规律,并「拼凑」出完整但可能无意义的诗句。

但对于研究者们来说, AI 作诗更多是作为技术能力的展现,他们更看重 AI 作诗背后 NLP 技术的发展。

另外,对于普通人来说,AI 作诗工具也让每个人都可以去创作,用诗歌表达自己的感情,就是作为一个娱乐的工具,也是不错的。让我们也给 AI 一些时间,相信它会为这个世界带来更多惊喜。

—— 完 ——