華爲推出AI詩人「樂府」:唐詩宋詞不在話下,我竟一時分不出真假

 2019-09-08 12:48:13.0

乾明 發自 凹非寺
量子位 報道 | 公衆號 QbitAI

理科生文藝起來,可能真沒文科生什麼事了。

不信?你看下這首七言絕句:


有網友讀完之後表示:

不僅能夠寫詩,還能作詞,比如這首滿江紅:



而且,還能寫藏頭詩:



你能想象,這是完全不懂寫詩的理工生的傑作嗎?

但它就是。

這些詩來自華爲諾亞方舟實驗室新推出的寫詩AI「樂府」。

問世之處便引發了不少關注。

對於它的作品,有人稱讚:

蘊意豐富的詩,工整不乏意趣,程序做的實在牛逼,給開發人員點贊

還有人「搞事情」,表示:

一聲塞雁江南去,幾處家書海北連。莫道徵鴻無淚落,年年辛苦到燕然。要說這個 AI 寫的沒有北大中文系平均水平好我是不信的。



甚至有人說「李白看了會沉默,杜甫看了會流淚」。



當然,也有人指出問題:

很工整,不過感覺目前大多還是syntax層面的,沒有到semantics層面。稍微欠缺些靈魂。

也有「真相帝」出來發聲:

辛棄疾的流水散文式用典,老杜的沉鬱頓挫拗救法,都是AI比較難學會的。問題不是AI太厲害,而是讀者已經看不出格律詩裏面比較精密的手法了…



對於這些問題,華爲諾亞方舟實驗室語音語義首席科學家劉羣也在微博進行了答疑,披露了不少這隻AI背後的故事:

其實我們也不懂詩,我們也沒有用詩的規矩去訓練這個系統,完全是系統自己學到的。

那麼,這一AI到底是如何學的?論文已經公佈。


理工男の文藝源自GPT

與自由生成文本不同,生成中國的古詩詞是一個挑戰,通常需要滿足形式和內容兩個方面的要求。

中國的古詩詞有各種各樣的形式,比如五絕、七絕、五律、七律、滿江紅、西江月、水調歌頭等各種詞牌以及對聯,每一種都有相應的字數、押韻、平仄、對仗等規定;

內容方面雖然簡單,但要求更加難以琢磨:一首詩要圍繞着一個主題展開,內容上還要具有連貫性。

華爲提出的「樂府」系統,與當前大多數解決方案不同,不需要任何人工設定規則或者特性,也沒有設計任何額外的神經元組件。



整個研究中,需要做的就是把訓練用的詩詞序列化爲格式化的文本序列,作爲訓練數據。

然後通過對語言模型token的抽樣,生成滿足形式和內容要求的詩詞,比如絕句、律詩、詞,以及對聯等等。

而且,他們還提出並實現了一種對模型進行微調以生成藏頭詩的方法。

這背後的能量來自GPT,一個由OpenAI提出的預訓練自然語言模型,核心理念是先用無標籤的文本去訓練生成語言模型,然後再根據具體的任務通過有標籤的數據對模型進行微調。

樂府AI是首個基於GPT打造的作詩系統,而且與谷歌提出的BERT息息相關。

整體的GPT模型是在BERT的源代碼基礎上實現的,Transformer大小的配置與BERT-Base相同,也採用了BERT中發佈的tokenization 腳本和中文 vocab。

具體來說,訓練詩歌生成模型的過程如下:


整個模型訓練過程一共有兩個階段: 預訓練和微調。

華爲的這個GPT模型,是用一箇中文新聞語料庫進行預訓練的,然後通過收集了公開可得的中國古詩詞進行微調。

如上圖所示,首先將示例詩歌轉換爲格式化序列。序列包括三個主要部分:格式、主題和詩體,中間用標識符分開。

在對聯中,因爲沒有主題,就上句爲主題,第二行爲正文。所以,在生成對聯的時候,就成了給出上聯,生成下聯的模式,也符合了「對對子」的習慣。



整體的數據集規模並不小,預訓練用的中文新聞語料庫,有2.35億句子。微調用的數據集有25萬絕句和律師,2萬首詞以及70萬對對聯。

預訓練是在華爲雲上完成的,使用8塊英偉達V100(16G) GPU訓練了4個echo,一共耗費了90個小時。

微調的過程是將所有詩歌序列輸入Transformer,並訓練一個自迴歸語言模型。目標是觀測任何序列的概率最大化:



微調的過程,不需要特別長的時間,如果訓練過長,這個模型就在生成過程中,就會傾向於從語料庫中直接用原始句子了。

訓練完成後,先將要生成的詩歌的格式和主題轉化爲一個初始序列,然後將初始序列輸入到模型中,然後對詩體部分的剩餘字段按token進行解碼。

在解碼過程中,並不使用硬約束來保證格式的正確性,而是讓模型自動爲特定位置分配逗號和句號,在識別到token爲「EOS」的時候,解碼過程結束。

而且,採用截斷 top-k 抽樣策略來獲得不同的詩歌,而不是束搜索。具體是每次採樣一個Token時,首先選擇具有 top-k 最大概率的Token,然後從 top-k Token中採樣一個特定的token。

他們說,即使採用截短的 top-k 抽樣策略,生成的詩歌仍然是正確的形式。

論文中介紹稱,訓練藏頭詩的方法也是這樣,只是在格式化序列的時候方法有所不同:用每一行中第一個字符的組合來代替一首詩的原始主題:「五言絕句(格式)牀疑舉低(藏頭詩)牀前明月光,疑…月,低頭思故鄉。」

效果如何,華爲也在論文中進行了充分的展示,比如下面這四首「江上田家」,只有一首是唐朝詩人寫的,其他三首都是來自樂府AI。



從上到下,ABCD,你能辨別出來哪個是真跡嗎?(答案在文末揭曉)

誰是第一AI詩人?

中國古詩詞生成AI,華爲「樂府」並不是第一個,也不是最後一個。

在此之前,就有清華大學孫茂松團隊提出的「九歌」。



根據官方介紹,這一系統的採用深度學習技術,結合多個爲詩歌生成專門設計的模型,基於超過80萬首人類詩人創作的詩歌進行訓練學習,具有多模態輸入、多體裁多風格、人機交互創作模式等特點。

近日,也有人基於中文版的語料訓練出了中文版的GPT-2,並將其用於詩歌生成。

就在「樂府」上線的這一天,還有北京大學、國防科大等機構聯合發佈了新的作詩模型,基於無監督機器翻譯的方法,使用基於分段的填充和強化學習根據白話文生成七言律詩。

那麼,哪一個更強呢?

因爲中文版GPT-2和北京大學聯隊的系統還沒有開放體驗,參與這場「華山論劍」的就只有華爲「樂府」和清華「九歌」兩個選手。

第一輪:主題「夏日」,七言絕句

清華九歌賦詩一首:



華爲樂府賦詩是這樣的:




兩個AI都有瑕疵的地方,清華九歌一張嘴就開始說「秋來」,華爲樂府也提到了「四月」,並沒有特別的意思,顯然都與夏日有些出入。

但相比之下,華爲樂府的夏日元素也更多一些,比如荷香,夏陰等等。

第二輪:主題「長夜」,五言絕句

來自清華九歌的詩是這樣的:




不須愁獨坐,相對倍悽然?這個意境Emmm……婚姻要破裂了?

華爲樂府的作品:



直觀上來看,意境刻畫不錯,但衝擊力有所不足。

這一輪,兩個AI表現都不錯,而且都有相應的意境體現出來。相對來說, 清華九歌的情感層次更豐富一些。

第三輪,藏頭詩「神經網絡」,七言絕句

清華九歌作品是這樣的:




從押韻和意境來看,都還不錯。華爲樂府給出了這樣一首詩:



同樣,這首藏頭詩也能夠展現幾分意境。

這一輪,兩隻AI都能較確切地完成任務,給出了具有幾分意境的詩詞。

至此,經過三輪比拼,整體上來說,高下難分。其差別,在於雙方的實現方式。

清華九歌,基於多個爲詩歌生成專門設計的模型,相對來說比較複雜,在詩歌的格式上,控制比較嚴格,雖然嚴肅但作詩速度的確比較慢。

而華爲的樂府,只是基於GPT,按照劉羣的話來說,他們也不懂詩歌,並沒有用詩的規矩去訓練這個系統,完全是系統自己學到的,生成詩歌的時候速度很快。

對於樂府AI生成的詩歌水平,劉羣也頗爲謙虛:

我們找過懂詩的人看,說韻律平仄並不完全符合規矩,只是外行讀起來還比較順口而已。

至於兩種方式孰優孰劣,也不妨參考下那句老話:文無第一。

華爲諾亞方舟實驗室

華爲諾亞方舟實驗室成立於2012年,隸屬於華爲2012實驗室。

諾亞方舟爲名,也能體現出這一實驗室在華爲內部的重要性。此前,任正非也提到過,希望這些實驗室能夠成爲華爲的「諾亞方舟」。

目前,這一實驗室在深圳、香港、北京、上海、西安、北美和歐洲等城市設有分部。研究方向包括計算機視覺、自然語言處理、搜索推薦、決策推理、人機交互、AI理論、高速計算等。

關於樂府AI,華爲也在論文中標註說明,這是他們在研究GPT時的一個副產品。目前,華爲樂府AI已經在小程序EI體驗空間上線。

支持五言絕句、七言絕句、五言律詩和七言律詩,以及藏頭詩模式。作詞、對對子還沒有上線。

最後,附上一首樂府生成的七言律詩人工智能


對了,答案選C。

相關傳送門:

樂府AI論文
GPT-based Generation for Classical Chinese Poetry
arxiv.org/pdf/1907.0015

清華九歌作詩網站:
118.190.162.99:8080/

—完—

量子位 · QbitAI

文章來源:量子位