任務式對話系統總結(1)---自然語言理解

 

任務式對話系統基本框架如下圖所示,這裏我對語音領域不是很熟悉,所以本文不做具體介紹,因此任務式對話系統基本框架主要包括自然語言理解(NLU)對話管理器( DM)語言生成(NLG)。下面內容就具體介紹下這幾個組件。

 

1 自然語言理解NLU

完成的具體任務在不同對話系統中差異較大,比較共性的能力包括領域識別意圖識別對話行爲識別槽位識別槽位值抽取

領域識別是將用戶文字輸入或者ASR輸出的文本分類到各個子領域,如查詢天氣,訂機票等。

用戶意圖指用戶想要完成的具體任務,通常同具體任務緊密相關,如一個賬單相關意圖包括查詢賬單、賬單投訴、賬單比較等.

對話行爲也是用於描述用戶意圖, 但不像用戶意圖那樣從具體完成的任務流程角度來定義意圖, 而是從對話本身更通用的角度來識別用戶當前對話的主要目的,如用戶提問、用戶確認一個問題、陳述一個事實等。
槽位識別和槽位信息的提取是一個典型序列標註問題,對輸入句子中的每一個字標註相應的槽位標識.下文將會從算法的角度進一步說明這些問題目前都是如何被解決的

1.1 領域識別/意圖識別

意圖識別問題在NLP領域可以當作文本分類任務來解決。目前應用在文本分類領域傳統的機器學習模型有 k 近鄰( k-nearest neighbor, kNN)、樸素貝葉斯、SVM等。神經網絡興起後, 一些基於深度學習模型的研究也取得了不俗的效果,主要是運用了CNN模型, 以及CNN 和 RNN相結合的模型。

當對話系統cover的領域很多時,可能意圖會多達成百上千,這時候意圖識別模型的決策空間變得過大,且各個意圖共享同一個模型,每增加一個新意圖就要重訓模型,導致其他意圖也受影響了。不僅導致意圖識別模型難訓,而且會導致系統變得難以維護。因此一種更好的辦法是在意圖識別之前再加一級領域分類(domain classification)

 

 

1.2 槽填充

雖然對於一個對話session,用戶的意圖往往只有一個,但是如前所述,一個意圖中往往包含很多個槽位。因此可以很自然的將槽位解析任務建模爲序列標註任務或者乾脆簡化爲文本多標籤分類任務(一個slot-value pair是一個類別)。而意圖識別跟槽位解析任務又明顯息息相關的,甚至說高度互相依賴的,因此這兩個任務joint training也是近來熱門的方法。

關於序列標註,通常使用的方法主要爲線性統計方法深度學習方法以及統計學習-深度學習結合方法:

線性統計方法包括條件隨機場(Conditional Random Fields, CRF)、隱馬爾可夫模型(Hidden Markov Models, HMM)、最大熵馬爾可夫模型(Maximum Entropy Markov Models, MEMM)等。線性統計方法主要依靠手工制定任務資源,開發成本高.

深度學習方法主要爲RNN模型及其變體,如長短期記憶網絡(Long Short-Term Memory, LSTM)、門控制循環單元(Gated Recurrent Unit, GRU)使用分佈式表示作爲輸入取代手工制定的特徵,減小了開發成本且絕對誤差更小。RNN 的變體例如長短記憶網絡通過三個門結構(輸入門、遺忘門和輸出門)可以學習長距離的依賴關係,得到了廣泛應用。

統計學習-深度學習結合的方法:由於基於 RNN 的模型存在輸出獨立性問題而採用的方法,例如具有條件隨機場層的雙向長短記憶網絡(Bi-LSTM+CRF),不但可以有效地利用過去和未來的信息,還可以使用句子級標記信息。

 

2 對話管理

對話管理是對話系統的“大腦”,控制着整個對話系統的流程。DM的輸入是自然語言理解的三元組輸出,並需要考慮歷史對話信息和上下文的語境等信息進行全面地分析,決定系統要採取的相應的動作,其中包括追問、澄清和確認等。 DM的任務主要有:對話狀態跟蹤和生成對話策略。 

2.1 對話狀態追蹤 Dialogue State Tracking

對話狀態是一種將 t 時刻的對話表示爲可供系統選擇下一時刻動作信息的數據結構,可以看作每個槽值的取值分佈情況。 DST以當前的動作 u_{n}、前n-1輪的對話狀態和相應的系統動作作爲輸入,輸出其對當前對話狀態S_{t}的估計。對話策略的選擇依賴於DST估計的對話狀態S_{t},因此DST至關重要。同時,DST也非常具有挑戰性,因爲ASR和NLU模塊的識別往往會出錯,可能導致對話系統無法準確理解用戶語義。所以, ASR 和 NLU 模塊通常輸出N-best列表,DST通過多輪對話不斷修改和完善來修正 ASR 和 NLU 識別的錯誤。

DST 主要分爲三類方法:基於人工規則、基於生成式模型和基於判別模式模型

  • 基於人工規則的方法,如有限狀態機(Finite State Machine, FSM)需要人工預先定義好所有的狀態和狀態轉移的條件, 使用分數或概率最高的NLU 模塊解析結果進行狀態更新。目前,大多數商業應用中的對話系統都使用基於人工規則的狀態更新方法來選擇最有可能的結果。該方法不需要訓練集,且很容易將領域的先驗知識編碼到規則中,與其對應的是其相關參數需要人工制定且無法自學習, ASR 和 NLU 模塊的識別錯誤沒有機會得以糾正。這種限制促進了生成式模型和判別式模型的發展。
  • 生成式模型是從訓練數據中學習相關聯合概率密度分佈,計算出所有對話狀態的條件概率分佈作爲預測模型。統計學學習算法將對話過程映射爲一個統計模型,並引入強化學習算法來計算對話狀態的條件概率分佈,例如貝葉斯網絡、部分可觀測馬爾可夫模型(POMDP)等。雖然生成式模型的效果優於基於人工規則的方法,且該方法可以自動進行數據訓練,減少了人工成本。但是生成式模型無法從 ASR、 NLU 等模塊 挖掘大量潛在信息特徵,也無法精確建模特徵之間的依賴關係。此外,生成式模型進行了不必要的獨立假設,在實際應用中假設往往過於理想。
  • 基於判別式模型展現出更爲有利的優勢,它把 DST 當作分類任務,結合深度學習等方法進行自動特徵提取,從而對對話狀態進行精準建模。與生成式模型相比,判別式模型善於從 ASR、NLU 等模塊提取重要特徵,直接學習後驗分佈從而對模型進行化。

下表爲各個方法的總結:

 

2.2 對話策略 Dialogue Police

對話策略根據 DST 估計的對話狀態S_{t},通過預設的候選動作集,選擇系統動作或策略a_{n}。DP 性能的優劣決定着人機對話系統的成敗。 DP 模型可以通過監督學習強化學習模仿學習得到。

1.監督學習需要專家手工設計對話策略規則,通過上一步生成的動作進行監督學習。由於 DP的性能受特定域的特性、語音識別的魯棒性、任務的複雜程度等影響,因此手工設計對話策略規則比較困難,而且難以拓展到其他領域。

2.強化學習是通過一個馬爾可夫決策過程(Markov Decision Process, MDP),尋找最優策略的過程。MDP 可以描述爲五元組(S, A, P, R, \gamma):

S:表示所有可能狀態(States)的集合,即狀態集;
A:針對每個狀態,做出動作(Actions)的集合,即動作集;
P:表示各個狀態之間的轉移概率,例如表示在狀態s下采取動作a之後轉移到狀態s’的概率;
R:表示各個狀態之間的轉換獲得的對應回報,即獎勵函數(Reward Function)。每個狀態對應一個值,或者一個狀態-動作對(State-Action)對應一個獎勵值,例如R_{s,a}表示狀態s下采取動作a獲得的回報;
\gamma:表示爲折扣因子,用來計算累計獎勵。取值範圍是0~1。一般隨着時間的延長作用越來越小,表明越遠的獎勵對當前的貢獻越少。

DP需要基於目前狀態𝐵和可能的動作來選擇最高累計獎勵的動作。該過程僅需要定義獎勵函數,例如:預訂餐廳的對話中,用戶成功預訂則獲得正獎勵值,反之則獲得負獎勵值。
傳統的強化學習需要在較多訓練數據的情況下,需要計算整個行動軌跡獲得的整體回報來尋找最高回報對應的最優策略,才能獲得較好的結果。因此在序列多步決策問題中,強化學習需要頻繁地試錯,來獲得稀疏的獎勵,這種“隨機”方式的不但搜索空間非常巨大,而且前期收斂速度非常慢。

3.模仿學習(Imitation Learning)能夠很好的解決多步決策問題。模仿學習的原理是通過給智能體提供先驗知識,從而學習、模仿人類行爲。 先驗知識提供 m 個專家的決策樣本{\pi _{1},\pi _{2}.......\pi _{m}},每個樣本定義爲一個狀態 s 和動作 a 行動軌跡:

將所有[狀態-動作]對抽取出來構造新的集合D:

把集合D的狀態視爲訓練數據中的特徵,動作視爲訓練數據中的標籤,通過迴歸連續的動作和分類離散的動作,來得到最優的策略模型。模仿學習需要專家提供較多數據或提供的數據覆蓋最優結果,需要花費大量的時間和精力。

下表爲方法總結:

3 自然語言生成

自然語言生成的主要任務是將 DM模塊輸出的抽象表達轉換爲句法合法、 語義準確的自然語言句子。一個好的應答語句應該具有上下文的連貫性、回覆內容的精準性、可讀性和多樣性。

NLG 的方法可以話分爲: 基於規則模板/句子規劃的方法、基於語言模型的方法和基於深度學習的方法。基於深度學習的模型還多處於研究階段,實際應用中還是多采用基於規則模板的方法。

1.基於模板的方法需要人工設定對話場景, 並根據每個對話場景設計對話模板,這些模板的某些成分是固定的,而另一部分需要根據 DM 模塊的輸出填充模板。例如,使用一個簡單的模板對電影票預訂領域的相關問題生成回覆:

[主演人 1]、 [主演人 2]、 […]主演的[電影名稱]電影將於[放映日期]的[放映時間]點在[影院名稱]進行放映。

該模板中, [**]部分需要根據 DM 模塊的輸出進行填充。這種方法簡單、回覆精準,但是其輸出質量完全取決於模板集,即使在相對簡單的領域,也需要大量的人工標註和模板編寫。需要在創建和維護模板的時間和精力以及輸出的話語的多樣性和質量之間做不可避免的權衡。因此使用基於模板的方法難以維護,且可移植性差,需要逐個場景去擴展。

2.基於句子規劃的方法的效果與基於模板的方法接近。基於句子規劃的方法將NLG拆分爲三個模塊:內容規劃、句子規劃、表層生成。其過程如下圖所示,將輸入的語義符號映射爲類似句法樹的中間形式的表示,如句子規劃樹(Sentence Planning Tree,SPT)。然後通過表層實現把這些中間形式的結構轉換爲最終的回覆。基於句子規劃的方法可以建模複雜的語言結構,同樣需要大量的領域知識,並且難以產生比基於人工模板方法更高質量的結果。

3.基於類的語言模型將基於句子規劃的方法進行改進:對於內容規劃模塊,構建話語類、詞類的集合,計算每個類的概率,決定哪些類應該包含在話語中;對於表面實現模塊,使用n-gram語言模型隨機生成每一個對話。從該方法生成的文本在正確性、流暢度有明顯提高,且規則簡單,容易理解,該方法是的瓶頸在於這些類的集合的創建過於複雜,且需要計算集合中每一個類的概率,因此計算效率低。上述的方法都難以擺脫手工制定模板的缺陷,限制了它們應用於新領域或新產品的可拓展性。基於短語的方法也使用了語言模型,但不需要手工制定規則,比基於類的語言模型方法更高效、準確率也更高。由於實現短語依賴於控制該短語的語法結構,並且需要很多語義對齊處理,因此該方法也難以拓展。

4.深度神經網絡可以從海量的數據源中歸納、抽取特徵和知識來學習,從而避免人工提取特徵帶來的複雜性和繁重問題。目前,基於深度學習的 NLG 模型普遍以編碼器 -解碼器(Encoder-Decoder) 作爲基礎框架。

 

References

 

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