清華大學矣曉沅:「九歌」——基於深度學習的中國古典詩歌自動生成系統|AI研習社69期大講堂
雷鋒網AI研習社按:近年來人工智慧與文學藝術的結合日趨緊密,AI自動繪畫、自動作曲等方向都成為研究熱點。詩歌自動生成是一項有趣且具有挑戰性的任務。在本次公開課中, 講者將介紹清華自然語言處理與社會人文計算實驗室的自動作詩系統,「九歌」,及其相關的技術方法和論文。
分享嘉賓:
矣曉沅,清華大學計算機系在讀碩士, 導師為孫茂松教授。主要從事自然語言處理、文本生成方向的研究。研究工作在IJCAI、CoNLL、EMNLP等會議發表。
公開課回放地址:
http://www.mooc.ai/open/course/545?=Leiphone
分享主題:「九歌」——基於深度學習的中國古典詩歌自動生成系統
分享提綱:
任務背景及「九歌」 作詩系統簡介
基於顯著性上下文機制的詩歌生成
基於工作記憶模型的詩歌生成
基於互信息的無監督風格詩歌生成
雷鋒網AI研習社將其分享內容整理如下:
人工智慧的概念提出不久後,許多科學家試圖將人工智慧與日常生活相結合。在 NLP 領域,我們熟悉的有機器翻譯、專家系統和對話系統,而詩歌屬於人類語言中高度凝練,高度藝術化的體現,幾十年以前便有科學家試圖讓 AI 具備創作詩歌的能力。
關於自動詩歌生成,我們的應用主要體現在:
一、娛樂場景——老百姓可以輕易通過詩意的方式去表達自己的情感;
二、詩詞教育——了解詩詞中的關鍵詞、意象、押韻等元素是如何在詩詞中起作用的。
三、文學研究——實驗中關於詞頻、意象之間的關係的發現,能給文學研究一定的啟發作用。
四、啟發其他類型文本的生成(歌詞、小說……)。
詩歌的特點是形式上高度凝練、簡潔、節奏感強、語義豐富,因此我們認為它是自動分析、理解和生成文本的理想切入點。
關於自動詩歌的生成,業界的研究主要經歷了三個階段:
我們實驗室是在 2016 年初開始做這件事情的,我們的九歌系統採用了最新的深度學習技術,結合多個為詩歌生成專門設計的不同模型,基於超過 30 萬首的詩歌進行訓練學習,能夠產生集句詩、絕句、藏頭詩、宋詞等不同體裁的詩歌。
下面我會給大家介紹九歌系統背後的幾個重要模型:
基於顯著性上下文機制的詩歌生成
第一個模型被稱作「基於顯著性上下文機制的詩歌生成」,在這之前,針對中國古典詩歌自動生成的一些工作在新穎性、韻律和關鍵詞插入有了顯著提升,然而在上下文關聯性方面還有所欠缺。前期的試驗中,我們發現這也是自動詩歌生成系統的硬傷部分。
以這首詩為例子,詩歌主要以「春風」為關鍵詞,通過 2016 的某個模型進行生成後,我們發現上下文的連貫性非常差。明明前兩句描述的是比較和煦的景色,後兩句卻突然轉變成比較悲愴的邊塞風格。也就是說,前半部分與後半部分的主題、風格和內容完全不一致,而且中間也缺乏必要的過渡,關聯性較差。
為什麼模型會出現這樣的問題呢?我們認為是因為之前的模型存在兩種不合理的假設。
第一種是認為一首詩的生成過程中,歷史信息可以被一個單獨的歷史向量存儲和利用。
簡單來說,就是每生成一句詩,便將這句詩的句向量壓縮到歷史向量中,以此類推,不停更新歷史向量然後生成詩句。
這個假設會帶來很多問題:
首先,單獨的向量的 capasity 並不高,無法將大量的句子和語義給保存下來。
第二,語義較好的詞和無明確語義的詞(如停用詞等)被混到了一起。
第二種不合理的假設認為 seq2seq 機制可以從一個無限長的歷史序列里探索和利用歷史信息。
這種假設的好處是可以有區分性地選擇歷史信息,忽略虛詞。然而隨之而來的問題是,當詩詞的句子數過多時,比如以某宋詞的第十五句作為例子,那麼就需要將前面的十四句先拼成很長的序列作為輸入,這將導致性能的大幅下降。
針對以上提到的兩項問題,我們提出了 salient clue 機制,通過機制實現更優質的上下文捕捉。我們的內部設計邏輯是忽略句子里語義表現較差的部分,如虛詞、停用詞等,從而選擇語義明確的部分來形成歷史向量,來指導下文的生成。
【更多關於 salient clue 機制的運作原理,請回看視頻 00:13:25 處,http://www.mooc.ai/open/course/545?=Leiphone】
無論是在自動評測還是人工評測上,我們的結果與之前的模型相比,效果有了顯著的提升。
在人工評測的部分,加了 style 的詩歌在「詩意」環節的表現較差,這是因為被強制控制風格以後,最終生成的用詞多樣性也會變差。
左邊是風格的人工評測識別矩陣,對角線上的數字越大,說明我們的風格控制準確率越高,可以看到,我們的結果在 70%—90% 之間。右邊是另一項人工評測結果,目的是要檢測模型選擇的字是否靠譜,我們請了一些專家進行人工挑字,與模型進行對比,結果顯示重合率在 50% 左右,有了明顯的提升。
由於模型較基礎,所以存在的問題不少:
一、 字詞的選擇較生硬;
二、 詩歌流暢性與詩意性受到影響。
基於工作記憶模型的詩歌生成
這個模型借鑒了認知心理學的原理——「工作記憶」。
人們認為怎樣的文章才具備連貫性呢?當讀者讀到一個新的句子時,如果這個句子能和存儲在讀者大腦工作記憶中的內容,或者文章的主題與大意建立關聯,那麼讀者就認為新讀到的這個句子和上文是連貫的。
有鑒於此,我們便提出了「工作記憶模型」,該模型整體由三種不同的 Memory 組成:
一、 Topic Memory
支持輸入多個關鍵詞,可以將用戶輸入的詞單獨保存在模型里,這裡主要起的是約束詩歌整體主旨的角色。由於是獨立保存,所以對關鍵詞的輸入順序不做要求,是一項對用戶非常友好的行為。
二、 History Memory
與之前提到的 salient clue 機制相類似。
三、 Local Memory
主要保存詩歌的前一個句子,因為中國古典詩歌的相鄰句子往往有非常強的關聯性。
【更多關於工作記憶模型的運作機制,請回看視頻 00:27:25 處,http://www.mooc.ai/open/course/545?=Leiphone】
我們的實驗分別生成了律詩、宋詞和歌詞,實驗結果與不同模型相比,都有了很大的提升。
這是一張 perplexity 圖,縱軸是 perplexity,橫軸是詩歌的句子數目,不同顏色的線則表示 History Memory 的槽數。
一首詩歌的句子數目越多,整體的 perplexity 就越大,因為句子數目越多,上下文的關聯性越難被確認,導致不確定性越大。同時我們還發現,History Memory 的槽數越多,perplexity 就越小,不確定性也隨著變小。
模型的成功之處,在於提升了讀取詞的可解釋性和表達的靈活性。
基於互信息的無監督風格詩歌生成
針對第一篇文章工作中存在的風格控制問題,我們又做了一項「基於互信息的無監督風格」的工作。眾所周知,中國古詩具有不同的風格表達,其中三個最有代表性的分別是:邊塞、閨怨和山水田園。
我們希望我們的模型可以做到以下幾個要求:
一、 給出一個關鍵詞,就能生成不同風格的詩歌。
二、 通過無監督的方式實現這個功能。
三、 生成的詩在其他指標上盡量減少損失或者沒有損失(流暢性、通順性……)
【更多關於無監督風格生成模型的運作機制,請回看視頻 00:36:17 處,http://www.mooc.ai/open/course/545?=Leiphone】
實驗中我們設置了 10 種不同的風格,每種風格分別生成一組詩,最後我們統計詩歌的詞頻。
右邊是人類評測的結果,對角線越明顯,說明風格的識別率越高。一下生成十種風格的詩歌,還能取得這麼高的識別率,說明實驗的結果非常好。
以上是生成的一些詩歌例子。
最後,歡迎大家前往試用我們的系統,多多給我們提寶貴的意見,後續我們會根據大家的反饋持續改進我們的系統。
左下角是我的個人郵箱,歡迎大家隨時跟我取得聯繫,今天我的分享就到此結束,謝謝大家!
以上就是本期嘉賓的全部分享內容。更多公開課視頻請到雷鋒網AI研習社社區(https://club.leiphone.com/)觀看。關注微信公眾號:AI 研習社(okweiwu),可獲取最新公開課直播時間預告。
※姚期智:要用物理學方法取得人工智慧的進展
※如何使用 TensorFlow mobile將PyTorch和Keras 部署到移動設備
TAG:雷鋒網 |