中秋佳節,用 AI 為家人寫一首詩(文末送中秋福利)
- 2019 年 10 月 8 日
- 筆記
作者:神經小兮
來源:HyperAI超神經
中秋節即將來臨,這個團圓賞月的節日,激發了古今無數文人的情懷,留下了
諸多雋永的詩句。
面對中秋花好月圓的良辰美景,古人能夠吟出「海上生明月,天涯共此時」的絕美詩句,而現在大多數人卻只能無奈地,將無限感慨化為一句「啊,月亮好圓。」
這大概就是「落霞與孤鶩齊飛,秋水共長天一色」和「好大一隻鳥」之間的距離吧。
不過,不用難過,現在,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 一些時間,相信它會為這個世界帶來更多驚喜。