一種融合了NLU和NLG的生成模型

論文標題:A Generative Model for Joint Natural Language Understanding and Generation
論文來源:ACL2020
論文鏈接: https://arxiv.org/pdf/2006.0749...
論文源碼: https: //github.com/andy1946...



Abstract

自然語言理解和自然語言生成是構建任務型對話系統的兩個基礎而相關的工作,但兩者處理的過程相反。NLU將自然語言轉化爲形式化的表達,而NLG則做相反的轉換。在這兩項任務上,成功的關鍵都是平行的訓練數據,但要獲得大規模的數據的成本相當昂貴。

在本文中,作者提出了使用共享的隱變量將NLU和NLG融合起來的生成模型。這種方法能夠使我們探索自然語言以及形式化表達的空間,並通過隱空間增強信息共享並最終優化NLU和NLG。作者的模型使用平面以及樹結構的表示在兩個對話數據集上取得了SOTA。作者還表明,能夠通過半監督的方式利用未標記的數據來提高模型的性能。

Introduction

作者認爲之前的工作,大部分將NLU和NLG被拆成不同的問題進行研究,而研究兩者之間的聯繫卻很少。作者覺得,從本質上來說,可以將兩者都看成是一個翻譯問題:NLU將自然語言翻譯成形式化的語言,而NLG則反過來。兩種任務都需要大量的utterance及其表示才能成功,但這種數據因爲註釋的複雜性而變得很昂貴。 儘管可以很容易地獲取自然語言或形式表示的未註釋數據,但由於兩種語言在不同的空間中的位置,如何利用它們仍不清楚。

作者提出了一個生成模型JUG,使用共享的隱變量表示自然語言和形式化表示共享的意圖,以此來結合NLU和NLG。作者旨在通過一個連續的隱變量來學習兩個離散空間之間的關聯,該變量有利於兩個任務之間的信息共享。JUG可以使用半監督的方式訓練,以此來探索無標籤數據的信息。

作者在兩個數據集上進行了實驗,實驗結果表明該模型的效果超過單獨的NLU/NLG模型表現;並且可以通過未標註的數據進一步提升模型表現。

Model

作者假設在一對utterance x 和形式化表示y下存在一個隱變量z。在該生成模型下,這種抽象的意圖指導着標準的NLG/NLU生成(圖a);同時,z又可由x或者y推斷得到(圖b);這也就意味着進行NLU任務的時候,我們需要先根據utterance x推斷出z,再在x和z的共同指導下得到形式化表示y(圖c);當然,相反的過程同樣適用於NLG任務(圖d)。

NLG

正如上圖d中所示,在進行NLG任務的時候,我們需要先從y中推斷z,再使用y和z來生成x。作者選擇高斯分佈q(z|y)作爲z的後驗分佈。那麼推斷z則只需要計算均值 以及標準差 。這裏使用雙向LSTM編碼y,得到序列符號表示。編碼之後獲得一系列的隱藏向量H,H由前向及後向LSTM編碼拼接而成。H再經過平均池化操作,並經過兩層前饋神經網絡得到均值和標準差的向量表示:

然後,可以使用re-parameterisation技巧對近似後驗分佈採樣獲得隱變量z:

最後一步就是基於形式化表示y和隱變量z生成自然語言x。使用帶有attention機制的LSTM作爲解碼器,再每個時間步,解碼器計算如下,最終獲得生成詞的概率分佈:

NLU

NLU在預測隱變量的均值和方差的時候,過程與NLG類似,只不過輸入部分改爲自然語言x。

然而,應當注意到自然語言和形式化語言的細微差別。自然語言其實是模糊的,但形式化的語言則是精確定義好的。這就會使NLU任務表現爲多對一的映射關係,而NLG則是一對多的映射。爲了體現這一點,在NLU任務中的隱變量不再由採樣獲得,而是直接以上述計算得到的均值作爲隱向量z。

在隱向量獲得之後,形式化表示將在x和z的指導下由NLU解碼器解碼獲得。因爲y依賴於形式化語言的構建,因此作者考慮了對話系統中兩種通用的場景。

第一種場景,y表示爲一系列的slot-value對;這裏的解碼器就包括一些分類器,其中一個是爲每個槽位預測相關的槽值。每個分類器由一層前饋神經網絡建模,z作爲輸入,最終得到槽位的概率分佈:

第二種場景下,y是樹結構的形式化表示。這種場景下,生成的y爲線性token序列,解碼器也使用帶有attention機制的LSTM,具體解碼過程和NLG類似。

Optimisation

這一部分用來描述JUG如何由一對(x,y)優化性能;以及單獨的x/y。

Optimising p(x,y)

給定一組utterance x以及形式化表示y,目標是最大化聯合概率(x,y)的對數似然概率:

優化任務不是直接可處理的,因爲它要求將隱變量z邊緣化。 但是,可以通過遵循神經變分推斷的標準做法來解決:

等式右邊第一項表示NLU模型,第二項是x的重構,第三項表示隱變量z的先驗概率和後驗概率的KL散度。

由於NLU和NLG運算的對稱性,我們可以類似的得到變分優化目標:

從上述表述中可以看出,作者的模型存在兩種後驗推斷路徑,從x或者是y,當然也有兩種生成路徑。所有的路徑都可以被優化。

Optimising p(x) or p(y)

另外,當我們的輸入爲沒有標籤的x(或者y)時,JUG的優化目標則是邊緣似然分佈函數p(x):

但這裏的y和z是不可觀測的。

這裏可以基於邊緣的變分下界建立目標:

等式右邊第一項是在級聯的NLU-NLG路徑下的x的自編碼重構。第二項是後驗分佈的KL散度。

在計算x的重構項時,我們需要先運行NLU模型以便獲得對於y的預測,再運行NLG模型以重構x。整個信息流動的方向爲(x->z->y->z->x)。隱變量z的存在使得我們需要沿着 NLU->NLG路徑採樣z。引入的隨機性允許模型探索更大範圍的數據流形。

上述描述的目標是在輸入爲無標籤的x時。我們自然也可以建立類似的目標以利用未標記的y:

這裏的整個信息流動爲(y->z->x->z->y)。

Choice of Prior

上述主要目的都是尋找一個能夠符合預期的近似後驗來匹配先驗p(z)。即使我們都是使q(z|x)/q(z|y)來匹配相同的先驗分佈,但是這也不能保證這兩個推斷的後驗彼此接近,這是共享隱空間的理想屬性。

爲了更好地利用這種屬性,作者提出了一種新穎的先驗選擇:當後驗由x推斷得到時,選擇已參數化的分佈q(z|y)作爲先驗置信p(z);類似地,後驗由y獲得時,選擇q(z|x)作爲p(z)。這種方法可以直接讓q(z|x)和q(z|y)接近以確保他們共享隱空間。

當我們擁有平行的x和y的時候,我們可以直接計算q(z|x)/q(z|y);然而,當接觸到未標記的數據的時候,我們可以只使用由NLU/NLG模型產生的僞x-y對,這樣就可以將推斷得到的後驗匹配我們預先定義好的先驗。

Training Summary

JUG主要針對三種場景進行訓練:

當我們有完全標記的數據x和y時,JUG將以有監督的方式聯合優化NLG和NLU模塊,訓練目標如下:

在上述有監督的設定下,JUG還可以被用來優化NLU、NLG以及自編碼路徑,對應的訓練目標如下:

而對於額外的未標記的數據x或者y,將採用半監督的JUG來優化,目標如下:

Experiments

E2E數據集:

句子註釋爲slot-value對

weather數據集:

以樹結構表示對話和語義

實驗結果

不同比例的已標記數據的NLU/NLG結果:

E2E數據集上的結果

weather數據集上的結果

Analysis

這部分作者用來分析共享隱變量的影響以及利用未標記數據的影響。

Visualisation of Latent Space

從圖中觀察發現,對於每個數據點(x,y),採樣自q(z|x)或者q(z|y)的z值彼此之間十分接近。這也說明了在隱空間中x和y的含義聯繫在一起。此外,z空間存在不同的簇,而瞭解每個簇表示的實例之後,作者發現每個簇代表着相似的意思組成。例如中心在(-20,-40)的簇包含{name, foodtype, price, rating, area, near},而中心在(45,10)的簇包含{name, eattype, foodtype, price}。這表明共享的隱空間充當NLU和NLG的最終全局特徵表示。

Impact of the Latent Variable

該模型的一大創新之處就在於爲自然語言x和形式化表示y創建了一個共享的隱變量z。神經變分模型中的一個常見問題是,當使用耦合功能強大的自解碼器時,解碼器傾向於忽略z並僅依靠自身來生成數據。

因此作者設置了一組對照試驗。將z改爲從標準正態分佈N(0,1)中採樣得到,得到的實驗結果如下:

從結果來看,實驗效果下降顯著。因而反應了JUG模型十分以來隱變量z來產生高質量的x/y。

Impact of Unlabelled Data Source

實驗結果表明,同時使用未標記的數據對(x,y)會比單獨使用未標記的x/y效果更好。

Conclusion

作者提出了一種新穎的生成模型,該模型通過共享的隱變量來耦合自然語言和形式化表示。由於這兩個空間是耦合的,因此我們能夠利用每個不成對的數據源並將獲取的知識轉移到共享含義空間。這最終使NLU和NLG都受益,特別是在資源匱乏的情況下。所提出的模型還適用於兩種形式之間的其他翻譯任務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章