華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

dicksonjyl560101發表於2019-09-09


乾明 發自 凹非寺

量子位 報導 | 公眾號 QbitAI

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

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

有網友讀完之後表示:

真啊,押韻,意境,內涵都很贊。

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

而且,還能寫藏頭詩:

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假


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

但它就是。

這些詩來自華為諾亞方舟實驗室新推出的寫詩AI“樂府”。

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

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

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

還有人“搞事情”,表示:

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

當然,也有人指出問題:

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

也有“真相帝”出來發聲:

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

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

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

理工男の文藝源自GPT

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

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

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

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


華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假


整個研究中,需要做的就是把訓練用的詩詞序列化為格式化的文字序列,作為訓練資料。

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

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

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

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

整體的GPT模型是在BERT的原始碼基礎上實現的,Transformer大小的配置與BERT-Base相同,也採用了BERT中釋出的tokenization 指令碼和中文 vocab。

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

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

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

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

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

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

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

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

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

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

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

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

誰是第一AI詩人?

中國古詩詞生成AI,華為“樂府”並不是第一個,也不是最後一個。

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


華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假


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

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

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

那麼,哪一個更強呢?

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

第一輪:主題“夏日”,七言絕句

清華九歌賦詩一首:

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

華為樂府賦詩是這樣的:

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

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

第二輪:主題“長夜”,五言絕句

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

華為樂府的作品:

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

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

第三輪,藏頭詩“神經網路”,七言絕句

清華九歌作品是這樣的:

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

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

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

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

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

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

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

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

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

華為諾亞方舟實驗室

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

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

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

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

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

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

華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假

對了,答案選C。

相關傳送門:

樂府AI論文

GPT-based Generation for Classical Chinese Poetry

清華九歌作詩網站:

— 完 —






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2656421/,如需轉載,請註明出處,否則將追究法律責任。

相關文章