徐楊
(四川大學計算機學院,成都610065)
目前各種智能應用出現在不同領域,例如:問答系統、對話系統等,這些應用幾乎都涉及文本生成任務,該任務是自然語言處理領域的研究熱點之一。文本生成旨在通過機器自動生成符合語法規范、滿足特定任務目標的文本,例如:在問答系統中機器根據源文本及問題查詢,生成簡潔且相關的答案;在對話系統中機器利用對話歷史產生對當前對話的回復。然而,隨著智能應用的發展,人機交互體驗更加受到重視,為了增加智能應用的趣味性與可互動性,生成的文本要求表現多樣性。例如:針對某些相似對話,聊天機器人如果只能產生特定的回答,將顯得枯燥無味,不利于聊天持續進行。因此,多樣性文本生成是文本生成研究的重點問題之一。目前多樣性文本生成研究以神經網絡的方法為主,利用Seq2Seq(Sequence-to-Sequence)模型對源文本編碼,然后再解碼產生目標文本。本文第一部分對多樣性文本生成任務中面臨的問題及其主要原因進行介紹與分析,第二部分重點介紹現階段各類解決多樣性文本生成問題的相關工作,尤其是變分自編碼方法。
多樣性文本生成任務要求機器根據給定的文本信息自動生成符合語法規范的、多樣的、相關的文本。Seq2Seq 模型在眾多文本生成任務[1-3]中均取得顯著效果,但該模型對輸入的相同源文本只能產生固定的輸出文本。例如:在聊天機器人中,向機器發送相同或相似的對話,機器只能產生固定的回復,這使機器顯得呆板、枯燥。此外,模型還傾向于產生數據集中較高頻的通用型文本,例如:總產生類似“I don’t know.”、“Me too.”的對話回復。以上兩方面問題顯示了Seq2Seq 模型并不直接適用于多樣性文本生成任務。
普通的Seq2Seq 模型主要由兩部分構成:編碼器與解碼器。首先編碼器接收輸入的源文本信息,將源文本信息編碼為特定的語義向量,然后解碼器利用該語義向量解碼出目標文本。通常將一個單向Recurrent Neural Network(RNN)作為解碼器,每一解碼時刻生成一個詞,逐步產生詞序列作為輸出文本。從上述Seq2Seq 模型工作過程看出:在測試階段由于模型參數固定,向模型輸入相同源文本時,編碼器將源文本編碼為相同的語義向量,此時解碼器只能產生固定的輸出文本。因此,Seq2Seq 模型對于相同輸入只能得到相同輸出,不能直接產生多樣性文本。另外,在Seq2Seq 模型中廣泛使用最大似然作為優化目標,讓模型在訓練過程中能盡可能地擬合標注的目標文本。然而,個別標注目標文本大量重復出現在數據集中,出現頻率遠高于其他文本,因此在最大似然優化過程中模型自然會更加傾向于生成頻率高的文本。
綜合上述分析,導致Seq2Seq 模型生成文本多樣性較差的原因主要是:①模型結構方面,模型只能將輸入源文本編碼為確定的語義向量,經解碼后僅能生成相同文本;②優化目標方面,采用最大似然方法優化模型參數,模型傾向于生成較高頻的通用型文本,缺乏多樣性。
基于前文對Seq2Seq 模型生成多樣性文本面臨問題的分析,現有相關工作主要從以下兩方面展開:重新構造模型優化目標函數、改變Seq2Seq 模型結構。
Seq2Seq 模型損失函數通常定義為交叉熵,其損失的計算要求訓練階段生成的文本必須與標注文本一致,一旦不一致就懲罰,但實際上對于給定的源文本并非只有訓練數據中的標注目標文本才能作為輸出,換句話說,交叉熵損失函數的懲罰側重于字面上的擬合,未進一步度量生成文本語義與源文本語義相關性等,所以出現了一系列重新構造優化目標的工作,其中最大互信息方法被廣泛使用。
Li 等人[4]利用最大互信息替代原最大似然優化方法,兩者的主要區別在于最大化互信息除了考慮到對標注目標文本的最大似然優化之外,還進一步考慮了標注目標文本自身出現的概率大小,對于那些高頻的標注文本施加更大的懲罰,以緩解模型傾向于生成高頻文本問題。然而計算互信息需要等文本生成結束,在生成過程中每個解碼時刻都涉及對詞表采樣,但離散詞表的采樣過程對模型參數是不可導的。為了解決此參數優化問題,Li 等人[5]利用強化學習延遲回報特性,借助策略梯度方法將互信息作為回報的一部分反饋給模型進行優化。雖然不少工作證明了最大互信息的有效性,但其優化過程也較為復雜,后續工作中提出了更為簡單、有效的啟發式方法。
Nakamura 等人[6]統計數據集語料后發現越高頻的詞越容易出現在通用型標注文本中,他們在原始交叉熵損失函數中考慮利用詞自身頻率的倒數加權,降低了高頻詞占損失的比例,讓模型關注到更多較低頻的詞。該方法優點在于簡單直觀,但其啟發式規則可能會受不同數據集的影響。
除了上述兩大類方法,不少工作考慮引入強化學習方法,基于各文本生成任務特點設計不同的回報函數對生成文本進行評分,設計的回報函數避免了交叉熵損失函數嚴格懲罰生成文本字面擬合的問題。從原理上看,強化學習方法更適合于文本生成任務,但在實際應用中強化學習面臨著較多優化問題,例如:每次決策時面臨的候選動作詞表空間較大,很難有效探索到高質量樣本,此外,回報函數極大地影響了模型性能,合適的回報函數較難確定。
當Seq2Seq 模型參數固定時,編碼器只能將輸入的相同源文本編碼為確定的向量表達,最終解碼器生成相同文本。從編碼角度看,編碼器的編碼方式限制了源文本語義表達的多樣性。為此,變分自編碼(VAE,Variational AutoEncoder)方法[7-9]被引入到文本生成任務中。與普通Seq2Seq 編碼方式不同,VAE 引入潛變量刻畫源文本語義分布,利用編碼器將輸入的源文本編碼為語義分布(通常假設為相互獨立的多元高斯分布),而不是特定的語義向量。解碼器在生成文本前需從語義分布中采樣出語義向量解碼。語義分布蘊含了更具多樣性的語義表達,為解碼器提供了可變的源文本語義向量。因此,變分自編碼方法通過改進Seq2Seq 模型結構,注入了更多樣的源文本語義。
Bowman 等人[10]較早將VAE 引入文本生成任務,他們發現直接將VAE 用于文本生成任務會出現KL 損失降為0 問題(KL 消失),即:優化目標中KL 項損失降為0。當VAE 優化目標中的KL 損失降為0 后,VAE模型逐漸退化為普通Seq2Seq 模型,此時生成文本的多樣性依舊有限。他們還指出原因在于RNN 解碼器在當前時刻會依賴之前解碼時刻及上一時刻的標注詞,這種較強的依賴關系使當前解碼時刻更多關注到之前時刻的狀態信息與當前時刻輸入的標注詞信息,忽略了引入的潛變量,所以注入到潛變量中的多樣性語義不起作用。Bowman 等人提出了兩個啟發式方法改變模型的訓練過程,首先在訓練開始時將優化目標中的KL 損失項權重置為0,隨著訓練進行再逐漸增加KL 項權重至1,然后在解碼過程中隨機遮蔽一定比例的標注詞,盡量削弱解碼器各解碼時刻間的依賴關系,迫使當前解碼時刻能更多關注到來潛變量提供的語義信息。雖然以上兩種啟發式方法能在一定程度上提高生成文本的多樣性,但實際效果受超參數影響較大,例如:當遮蔽比率過大時,模型擬合性能下降;反之則起不到遮蔽效果。此后,不少工作進一步針對VAE 在文本生成中存在的KL 消失問題展開了進一步研究與分析。
Bahuleyan 等人[11]研究發現當直接傳遞源文本信息到RNN 解碼器會更容易出現KL 消失問題,因為當解碼器能夠直接訪問到源文本信息后,會逐漸繞開潛變量,使后續解碼過程忽視潛變量。普通的注意力機制本質上是對源文本信息的一種加權,此時解碼器通過注意力機制得到的上下文向量同樣相當于直接訪問源文本信息,所以容易出現KL 消失問題。Bahuleyan 等人提出了變分注意力機制緩解解碼器繞過潛變量的問題,將原來確定的上下文向量轉化為潛變量分布,讓解碼器訪問源文本信息時不能繞過潛變量。
原始VAE 是作為自編碼方法,后續研究進一步提出了針對給定源文本情況下目標文本生成概率的建模方法——條件變分自編碼方法(CVAE,Conditional Variational Autoencoder)[12]。CVAE 與VAE 的主要區別在于兩者建模過程中學習的分布不同以及模型輸入不同。VAE 模型的輸入只有源文本,而CVAE 需同時輸入源文本與標注目標文本,因CVAE 需建模一個后驗分布,并從后驗分布中采樣參與解碼器訓練。此外,CVAE 還需學習一個條件先驗分布,該分布未直接參與解碼器訓練過程。由于CVAE 訓練過程中直接將標注目標文本作為輸入,而測試階段沒有標注文本,所以測試階段無法直接使用后驗分布,而是從條件先驗分布中采樣生成文本。因此,CVAE 模型在訓練和測試階段分別從不一致的分布中采樣,使模型性能在測試階段明顯下降。
之后,不少基于CVAE 的方法被提出來解決多樣性文本生成問題,例如:Zhang 等人[13]為了增強解碼器與潛變量之間的關聯,引入了一個標簽網絡,學習了標注目標文本的自編碼表達,然后利用均方誤差損失懲罰潛變量與標注文本自編碼表達的距離。雖然該工作在一定程度上提升了生成文本的多樣性,但依然面臨CVAE 訓練階段與測試階段間的非一致性采樣過程。
上述VAE/CVAE 方法主要改進Seq2Seq 模型結構,引入潛變量對源文本語義分布建模,為解碼器提供了更多樣的源語義表達,解決了原編碼器僅能將源文本編碼為確定語義向量的問題。變分編碼方法作為目前用于多樣性文本生成任務的流行方法,提高了生成文本的多樣性,但不可否認此類方法在優化過程中依舊面臨挑戰,現有緩解KL 消失問題的方法大多從是問題表面出發的或者啟發式的,仍缺乏理論上的分析與論證,因此,對于KL 消失的根本原因還值得深入研究。
本文首先描述了多樣性文本生成任務的研究背景與意義,然后分析了多樣性文本生成任務中面臨的問題及主要原因(編碼器只能將源文本編碼為確定的語義向量、模型傾向于生成數據集中高頻的文本),接著分別以上述兩原因為切入點,重點介紹了從重新構造模型優化目標、改變Seq2Seq 模型結構兩角度解決多樣性文本生成問題的現有工作,其中重點分析了目前基于VAE/CVAE 的相關工作。VAE/CVAE 引入潛變量對源語義分布建模,Seq2Seq 方法注入不同的源語義表達,提高了生成文本的多樣性,然而此類方法仍面臨優化挑戰(KL 消失問題)。雖然現有工作提出方法在一定程度上緩解了KL 消失問題,但仍缺乏理論上的分析與論證,如何從根本上解決KL 消失問題依然是待攻克的難題。