對於同一個意象,不同風格的詩人可以寫出不同風格的詩句。大多數自動作詩的研究集中在提高詩句前後的一致性上,對於風格化的作詩,一些研究透過風格轉換來實現,但是這類方法嚴重依賴於標註資料。本文透過引入互資訊作為正則約束,提出了基於無監督的方法實現詩詞風格化輸出。
Introduction
利用計算機來作詩是很有意思,也具有挑戰性的任務。近年來,對自動作詩的研究也越來越多,方法從最初基於規則和模板的方法發展到基於神經網路序列到序列(Seq2Seq)的方法,但這些方法大多都在關注生成詩詞的質量上,比如連貫性,一致性等。但是古詩中還有另外一個問題,就是對於同一個意象,不同風格的詩人會寫出截然不同的詩句,這就要求對於同一個輸入,模型需要輸出不同的結果,如Fig1所示。
基於Seq2Seq的方法在機器翻譯中也廣泛應用,但是兩者的目的存在很大不同,對於翻譯任務來說,它的一一對應關係較強,比如“蘋果”這個詞在英文翻譯中必定會有 “apple” 與之對應,對於詩句則不然。本文提出了一種對於同一輸入可以產生多個輸出的生成模型,同時保證不同的輸出之間有較大的區分性。另一方面,因為語料庫中對於詩歌風格暫時沒有專家標註,本文的模型利用互資訊作為約束正則項,可以實現完全無監督的風格生成。人工評測結果表明,這個模型生成的各種風格都是可識別的,並且其他指標也優於基線模型。
Method
我們首先來回顧下互資訊和基於注意力機制的Seq2Seq模型。
互資訊
本文提出基於互資訊的方法來實現風格化的詩句生成。給定兩個隨機變數X和Y,互資訊I(X,Y)衡量的是給定其中一個變數,能得到關於另一個變數的多少資訊量,數學定義如公式1。 互資訊也可以用來衡量X與Y的聯合分佈 P(X,Y) 與它們邊緣分佈乘積 P(X)P(Y) 之間的相似程度。
Seq2Seq Model with Attention
對於序列到序列的建模,經典的框架是 Encoder-Decoder 框架,這個框架最早用於機器翻譯任務中,本文的詩句生成模型也基於這種框架。對於Encoder部分,採用雙向的LSTM結構,將輸入的句子X對映到特徵空間,LSTM隱層狀態的計算過程為:
(2)(3) 分別對應著前向和反向的計算,是對輸入句子每個字的 Embedding。最後將T 時刻前向和反向計算得到的隱層狀態級聯起來作為對輸入句子進行編碼之後的特徵表示,然後將其送入 Decoder 部分。
解碼器也是用 LSTM,並且採用 Attention 機制。其中的 Attention 機制是在解碼每個輸出字元時,同時利用 encoder 的每個時刻狀態的加權計算一個context 向量 ,共同用來產生當前時刻的輸出。因此對於解碼第 i 個字元時,對應的機率分佈可以表示為:
其中g(·) 是基於 softmax 的分類,si是解碼器 LSTM 的第 i 個隱層狀態,其中, e(yi-1)是 yi-1的 embedding,ai 是 context 向量。
Decoder Model with Style Disentanglement
為了生成不同風格的詩句,解碼器的輸入除了上一句詩句的特徵,還需要一個表示風格的輸入。對於風格採用 one-hot 編碼表示,假設擁有 K 種風格,然後將句子的特徵 hT 和風格的 one-hot 編碼級聯起來。但是這樣輸出模型並不能保證生成的句子和 style 之間有很強的相關性。換句話說,當 style 改變的時候,輸出的句子也可能完全一樣,導致這個問題的根源在於在模型訓練時沒有相關的監督訊號使得模型對於不同的 one-hot 風格編碼產生不同的輸出。因此,需要新增一個正則來加強風格化編碼和生成詩句之間的相關性。
在這裡我們假設輸入的 style 是服從均勻分佈的,即。由於互資訊是衡量兩個隨機變數之間的相互依賴性,因此本文提出最大化風格的分佈 Pr(Sty) 與生成句子的分佈 P(Y; X)之間的互資訊來增強它們的相關程度。接下來我們計算 Pr(Sty) 和 給P(Y; X) 之間的互資訊:
注意上面推導中用到了這樣的性質,後驗分佈,這是由於 X 與風格 sty 之間相互獨立。但是上述的後驗分佈 Pr(Sty=k|Y) 不可知,因此沒法直接求解上述積分。這種情況下,我們採用變分推斷的思想,引入另一個分佈 Q(sty=k|Y) 來逼近 P,透過推導我們能得到式子7中互資訊的下界:
注意上述推導中不等號部分採用的性質是 KL 距離的非負性和當 KL 為0時,兩個分佈相等。我們的問題從最大化 Str 和 P(Y;X)的互資訊,轉化為最大化式子8給出的下界。接下來的難題是如何得到分佈 Q 和如何計算下界式子中積分。
Posterior Distribution Estimation
給定輸出的句子,Q 分佈可以估計出給定 Y 時風格的機率分佈,因此可以區分出不同的風格。我們利用神經網路來擬合函式 Q。具體地,首先計算輸出句子 Y 的平均的 embedding ,然後使用線性對映,透過 softmax 進行歸一化,其中:
Expected Character Embedding
最後要解決的問題是對進行積分,由於積分的空間與詞彙表的大小成指數關係,不太可能列舉所有的可能性來計算這個積分。我們提出採用expected character embedding來近似輸出句子的機率空間。
式子4給出了生成第 i 個字的機率分佈,因此對輸出字元 embedding 的期望為:
其中。隨後作為解碼器的 LSTM 的輸入,更新下一時刻的隱層狀態:
最後,使用所有的作為 Y 的機率空間的近似,因此式子8可以寫為:
最後將正則加入到訓練的Loss 中,我們的目標是最大化如下的Loss:
實驗
具體的實驗細節請參考論文, 這裡主要來看下人工評測的結果,從Fluency,Coherence,Meaningfulness,Poeticness四個方面進行評測。對比的是 Seq2Seq 模型和利用本文提出的方法 SPG 生成的結果進行評分的結果:
參考連結
1. https://www.paperweekly.site/papers/2500
2. 論文連結:
http://nlp.csai.tsinghua.edu.cn/~yangcheng/publications/emnlp2018.pdf