華為推出AI詩人“樂府”:唐詩宋詞都不在話下,竟一時分不出真假
乾明 發自 凹非寺
量子位 報導 | 公眾號 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
清華九歌作詩網站:
— 完 —
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2656421/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AI 智慧寫情詩、藏頭詩AI
- 詩人有情詩 程式設計師有情碼程式設計師
- 分享一個開源的古詩詞資料庫(約7w+古詩詞/3k+詩人)資料庫
- 豪情唐詩大全 v1.0 註冊演算法演算法
- 怎麼這麼唐詩的 DS 都做不出來啊
- DeepMind遊戲AI又有新突破,與智慧體、人類合作都不在話下遊戲AI智慧體
- 程式設計師都是詩人程式設計師
- 一首小詩
- 程式詩(+)
- AI,讓大海永遠蔚藍如詩AI
- 手把手的使用Toolkit外掛在詩情畫意中完成AI詩朗誦AI
- 築牢數字基礎設施:華為筆下的中國詩意
- 古詩解析
- 工人詩歌
- OI之詩
- 趣文:程式設計師是詩人程式設計師
- 急速搭建 Serverless AI 應用:為你寫詩ServerAI
- 不只會作詩 谷歌AI還能寫歌谷歌AI
- 實測崑崙萬維對話AI「Skyo」,會讀詩、知曉雷軍擺拍AI
- 機器也可以寫詩——中文詩歌生成網路初探
- 豐富的詩詞資源!一個現代化詩詞學習網站!學習網站
- 為你寫詩:3 步搭建 Serverless AI 應用ServerAI
- 用文字挖掘分析了5萬首《全唐詩》,竟然發現這些祕密
- 程式碼 PK 詩詞
- 使用python 下載全國曆代古詩Python
- 作畫、寫詩、彈曲子,AI還能這麼玩?AI
- 雜篇:一首詩認識[- Git -]Git
- 《音遊詩人》:國風音樂創意小遊戲的誕生與DIY編輯器探索遊戲
- [英譯]柏樺詩《成都》
- 程式設計師打油詩程式設計師
- 關於詩歌的故事
- 帶你用三種不同的工具體驗AI作詩AI
- 寫程式碼就像詩,一定要記住
- 移動裝置上實現“詩人”也能用TensorFlow
- 古詩網站前臺實現網站
- 古詩詞相關詞庫
- 用Java日誌來寫詩Java
- 詩意攝影《生活場景》