Dynamic Fusion Network for Multi-Domain End-to-end Task-Oriented Dialog
論文鏈接:https://arxiv.org/abs/2004.11019 (文中的代碼開源)
絕大多數神經網絡對話模型都依賴大量的訓練數據,但並非所有對話領域都能有大量的數據可用。然而,關於如何有效地使用來自所有域的數據來改進每個域和不可見域的性能的研究相對較少。爲此,文中研究了明確利用領域知識和引入共享-私有網絡來學習共享的和特有的知識的方法。此外,文中提出了一種新穎的動態融合網絡(DF-Net),它能自動探索目標領域和每個源領域之間的關係,結果顯示,該模型表現優於現有的多領域對話模型,獲得了SOTA的效果。此外,在訓練數據較少的情況下,模型的遷移能力比之前最好的超過了13.9%左右。
現有的方法可以被分爲兩類:如圖 (a) 所示,第一種是簡單將各種領域的數據混合起來訓練,這樣的方法可以隱式地提取共享的特性,但是不能有效地捕獲領域特定的知識。第二種如圖(b)所示,模型在每個領域上單獨訓練,這樣能夠更好的捕獲領域特定的知識,但是卻忽略了領域間共享的知識。
有一種簡單的基線模型是將領域共享的和領域特有的特徵在一個共享-私有框架中進行合併,圖(c),它包括用於捕獲域共享特性的共享模塊和用於每個域的私有模塊,該方法明確區分了共享知識和私有知識。然而這種框架依然存在兩個問題:1)給定一個數據量很少的新領域,私有模塊很難有效地提取出相應的領域知識;2)該框架忽略了跨特定領域子集的細粒度相關性(例如:schedule領域與navigation領域的相關性要超過weather領域)
爲了解決上述問題,文中提出了一種動態融合網絡,如圖(d)所示,對比於共享-私有模型,該模型進一步引入動態融合模塊顯式地捕捉領域之間的相關性。特別地,利用一個門控機制自動尋找當前輸入和所有的領域特定模型之間的相關性,以便爲每個領域分配權重用於提取知識。編碼器和解碼器以及基於特徵查詢知識的記憶模塊都用上了這種機制。給定一個幾乎沒有訓練數據的新領域時,這個模型仍然可以充分利用現有域,這是基線模型做不到的。
模型是基於seq2seq對話生成模型的,如下圖(a)所示,爲了顯式集成領域認知,文中提出使用shared-private框架來學習共享的和相應的領域特定特徵,如圖(b)。接下來,文中提出了使用一個動態融合網絡來動態地利用所有領域之間的相關行以進行細粒度的知識傳輸,如圖(c)。此外,文中還使用了對抗性訓練來促使共享模塊生成領域共享特性。
文中將seq2seq任務型對話生成任務定義爲根據輸入對話歷史 X 和知識庫 B 來尋找系統響應 Y。不同於典型的seq2seq模型,任務型對話系統中成功的會話依賴於精確的知識庫查詢。文中採用了global-to-local記憶指針機制(GLMP)來查詢知識庫中的實體。外部知識記憶用來存儲知識庫 B 和對話歷史 X。KB 記憶是爲知識庫設計的,而對話記憶是用於直接複製歷史詞彙。外部知識記憶中的實體以三元組的形式表示,並存儲在記憶模塊中。對於一個K-hop 記憶網絡,外部知識是由一組可訓練的embedding矩陣 C=(C^1,,C^{k+1})C=(C1,,Ck+1) 組成。爲了增加模型和知識模塊的交互,模型在編碼和解碼的過程中都會進行知識庫查詢。
在編碼器中查詢知識
使用最後一個隱層狀態作爲初始化的查詢向量:
<br>q_{enc}^1=h_T<br><br>qenc1=hT<br>
此外,它能夠循環 k 跳並計算每一跳之上的 attention 權重:
<br>p<em>i^k=Softmax((q</em>{enc}^k)^Tc_i^k)<br><br>p<em>ik=Softmax((q</em>enck)Tcik)<br>
最後模型通過 在c^{k+1}ck+1 上進行加權求和讀出記憶o^kok,並更新查詢向量q_{enc}^{k+1}qenck+1:
<br>o<em>{enc}^k=\sum_ip_i^kc_k^{k+1},\space q</em>{enc}^{k+1}=q<em>{enc}^k+o</em>{enc}^k<br><br>o<em>enck=∑ipikckk+1, q</em>enck+1=q<em>enck+o</em>enck<br>
q_{enc}^{k+1}qenck+1 可以看作是編碼的知識庫信息,並且被用於初始化解碼器。
在解碼器中查詢知識
使用一個 sketch 標籤來表示相同類型的所有可能的slot 類型(例如,@address表示所有的 Address)。通過式子4獲得 t 時間步的 sketch 標籤後,使用attention機制得到的$h{dec,t}^\prime$ 與 LSTM 解碼得到的 $h{dec,t}$ 連接起來查詢知識,這一過程與編碼器中的查詢過程類似:
<br>q<em>{dec}^1=[h</em>{dec,t},h_{dec,t}^\prime]<br><br>q<em>dec1=[h</em>dec,t,hdec,t′]<br>
<br>p<em>i^k=Softmax((q</em>{dec}^k)^Tc_i^kg_i^k)<br><br>p<em>ik=Softmax((q</em>deck)Tcikgik)<br>
這裏,作者將 P<em>t=(p_1^k,,p</em>{b+T}^k)P<em>t=(p1k,,p</em>b+Tk) 視爲查詢得到的知識的概率,並且選擇從查詢到的結果中概率最高的詞作爲生成的詞。
之前提到的模型在混合的多領域數據集上進行訓練,模型的參數在所有領域都是共享的,作者將這種模型稱之爲共享編解碼器模型。這裏作者提出了一個使用shared-private框架,包括一個共享的編解碼器用於捕捉領域共享的特徵和一個 private模型用於給每個領域顯式捕捉領域特定的特徵。每個實例 X 既要經過共享的編解碼器也要經過相應的私有的編解碼器。
增強的編碼器
給定一個實例以及它所屬的領域,shared-private編解碼器產生一個編碼序列 H_{enc}^{{s,d}}Hencs,d,包含共享的和來自相應編碼器的領域特定表示:
<br>H<em>{enc}^{{s,d}}=(h</em>{enc,1}^{{s,d}}m,\cdots,h<em>{enc,T}^{{s,d}})=BiLSTM</em>{enc}^{{s,d}}(X)<br><br>H<em>encs,d=(h</em>enc,1s,dm,⋯,h<em>enc,Ts,d)=BiLSTM</em>encs,d(X)<br>
最終的 shared-private 編碼器表示由下式得到:
<br>H<em>{enc}^f=W_2(LeakyReLU(W1[H</em>{enc}^s,H_{enc}^d]))<br><br>H<em>encf=W2(LeakyReLU(W1[H</em>encs,Hencd]))<br>
爲了便於說明, 作者將 shared-specific融合函數定義爲:
<br>shprivate:(H<em>{enc}^s,H</em>{enc}^d)\rightarrow H_{enc}^f<br><br>shprivate:(H<em>encs,H</em>encd)→Hencf<br>
此外,作者還在編碼狀態上使用了self-attention 獲得了上下文向量 c_{enc}^fcencf,並使用它代替式(5)中的 h_ThT。這使得查詢向量結合了領域共享和領域特定的特徵。
上述的 shared-private 框架可以捕捉到相應的專有特徵,但是卻忽視了跨領域的子集中的細粒度相關性。作者進一步提出一個動態融合層來顯式利用所有的領域知識,如圖所示。從任意領域給定一個實例,作者首先將它放入多個私有的編-解碼器中,以從所有領域中獲得領域特定的特徵。接下來,所有的領域特定的特徵被一個動態領域特定特徵融合模塊所融合,然後通過shared-specific特徵融合獲得 shared-specific 特徵。
動態領域特定特徵融合
給定所有領域的特 domain-specific 特徵,一種 Mixture-of-Experts(MoE)機制被用於在編碼器和解碼器中動態合當前輸入的所有的領域特定知識。
接下來詳細描述如何融合解碼的時間步t,編碼器的融合過程也一樣:在第 t 個解碼時間步給定所有的領域特徵表示expert gate E 將其當作輸入,輸出一個 softmax 分數代表當前輸入的token 於每個領域之間的相關程度。作者通過一個簡單的前饋層來實現:
<br>alpha<em>t=Softmax(W*h</em>{dec,t}^d+b)<br><br>alpha<em>t=Softmax(W∗h</em>dec,td+b)<br>
最終的領域特定的特徵向量混合了所有領域的輸出,取決於 expert gate 的權重.以解碼器爲例,在訓練期間,作者使用交叉熵損失 L_{dec}^{moe}Ldecmoe 作爲監督信號讓 expert gate來預測響應中每個 token 的領域,expert gate 輸出的 alpha_t可以被多個專用解碼器視爲第 t 個 token 的領域概率分佈預測值。因此,領域預測越準確,expert 得到的結果越正確.
Shared-specific 特徵融合
作者直接使用 shprivate 操作來融合共享的和最終的 domain-specific 特徵:
<br>shprivate:(h<em>{dec}^s,h</em>{dec,t}^{d<em>f})\rightarrow h</em>{dec,t}^f<br><br>shprivate:(h<em>decs,h</em>dec,td<em>f)→h</em>dec,tf<br>
最終,動態融合函數可以表示爲 dynamic(h<em>{dec,t}^s,{h</em>{dec,t}^{d<em>i}}</em>{i=1}^{|{D}|})dynamic(h<em>dec,ts,h</em>dec,td<em>i</em>i=1∣D∣),與section 2中相似,這裏用 [h<em>{dec,t}^f,h</em>{dec,t}^{f^\prime}][h<em>dec,tf,h</em>dec,tf′] 來代替式(8)中的 [h<em>{dec,t},h</em>{dec,t}^\prime][h<em>dec,t,h</em>dec,t′]。其它的部件和 section 2中的 shared-private encoder-decoder 框架一樣。
對抗訓練
爲了促進模型學習到領域共享的特徵,作者在共享的編碼器和解碼器模塊上使用了對抗學習訓練方式。
作者爲SMD數據集和 Multi-WOZ 2.1 數據集構造了相應的 KB,數據的統計信息如圖所示:
Embedding 和 LSTM 隱層單元的維度爲 128,dropout 從 {0.1,0.2}中選擇,batch size 從{16,32}中選擇,在框架中,作者還採用了權重類型技巧,優化器爲 Adam。
作者對比了他的模型和sota baselines:
- Mem2Seq:該模型以對話歷史和 KB 實體作爲輸入,使用一個指針 gate 來控制生成一個詞表詞語或從輸入中選擇詞彙輸出;
- DSR:該模型使用對話狀態表示來隱式檢索 KB,並且在解碼過程中應用拷貝機制從知識庫中檢索實體;
- KB-retriever:模型採用了一個檢索模塊來檢索最相關的知識庫,並過濾與生成過程無關的信息;
- GLMP:該框架採用 global-to-local 指針機制,在解碼過程中對知識庫進行查詢;
作者使用 BLEU 和 Micro Entity F1 作爲評估指標。結果如圖表所示:
結論:1)基礎的 Shared-Private框架表現要好於之前最好的模型 GLMP,這意味着領域共享和領域特有的特徵結合起來之後比起僅使用隱式領域共享特徵的模型,它能夠更好的增強每個領域的表現;2)作者提出的框架在兩個對領域任務型對話數據集上都獲得了最好的表現。
作者在 SMD 數據集上從幾個方面研究了模型的強度。首先通過幾個消融實驗來分析不同部件的效果,接下來,構造了領域適應實驗來驗證模型在一個數據量很少或者沒有的情況下模型的遷移能力。此外,作者還提供了動態融合層的可視化和實例研究,以便更好地理解模塊如何影響和促進性能。
1. 消融實驗
消融實驗結果如表中所示,1)w/o Domain-Shared Knowledge Transfer 代表除去領域共享特徵,僅使用領域特定特徵來生成;2)w/o Dynamic Fusion Mechanism代表僅簡單將所有的領域特定特徵加起來,而不是使用 MOE 機制來動態融合;3)w/o Multi-Encoder 代表移除多編碼器模塊,只使用一個共享編碼器;4)w/o Multi-Decoder 代表移除多解碼器模塊;5)w/o Adversarial Training 代表移除對抗訓練的實驗設置;
2. 領域適應
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可,轉載請附上原文出處鏈接和本聲明。
本文鏈接地址:https://www.flyai.com/article/569