
前言
許多 AI 助手沒有像我們想象的那樣使用太多機器學(xué)習(xí)。 雖然將機器學(xué)習(xí)應(yīng)用于 NLU 是一種常見的做法,但是在對話管理方面,許多開發(fā)人員仍然會回溯到規(guī)則和狀態(tài)機。
在正常情況下,隨著時間的推移,開發(fā)者會添加越來越多的規(guī)則來構(gòu)建 AI 助手,Rasa 試圖挑戰(zhàn)這個情形。取而代之的是,使用機器學(xué)習(xí)來選擇助手的響應(yīng),這是一種靈活且可擴展的選擇。這樣做的原因是機器學(xué)習(xí)的核心概念之一:泛化。
當(dāng)程序可以泛化時,開發(fā)者無需為每個可能的輸入都對響應(yīng)進行硬編碼,因為該模型會根據(jù)已看到的示例學(xué)習(xí)識別模式。這以硬編碼規(guī)則從未有過的方式擴展,并且對對話管理和 NLU 一樣有效。
Rasa Open Source 使用機器學(xué)習(xí)根據(jù)示例對話(作為訓(xùn)練數(shù)據(jù)提供)選擇助手的下一步動作。無需為每個可能的對話回合編寫if / else語句,而是為模型提供示例對話以從中進行泛化。何時需要支持新的對話路徑?無需嘗試通過更新現(xiàn)有的復(fù)雜規(guī)則來推理,而是將示例對話添加到適合新模式的訓(xùn)練數(shù)據(jù)中。這種方法不僅適用于簡單的單輪對話,還可以支持語音,多輪互動。
在此文章中,將通過剖析 Rasa Open Source 中使用的一種機器學(xué)習(xí)策略來探索對話管理。 Transformer Embedding Dialogue Policy(簡稱TED)只是Rasa Open Source 中用于選擇助手下一步應(yīng)采取的動作的對話策略之一。 它使用 transformer 體系結(jié)構(gòu)來確定在進行預(yù)測時應(yīng)注意哪些對話以及有選擇地忽略哪些對話。
建模多輪對話
一個 Rasa 聊天助手在其配置中使用多個策略來決定下一步要采取的動作。 一些對話策略針對簡單任務(wù)進行了優(yōu)化,例如將當(dāng)前對話與訓(xùn)練數(shù)據(jù)中的一個對話進行匹配,而其他對話策略(如TED策略)則適合于建模對話,在此對話中需要先前的上下文來選擇最合適的下一個動作。 當(dāng)助手需要響應(yīng)用戶時,助手配置中的所有策略都會對應(yīng)該采取的下一個最佳動作做出預(yù)測,而對其預(yù)測具有最高置信度的策略將確定要采取的動作。
TED 策略在非線性對話中表現(xiàn)尤其出色,在非線性對話中,用戶會插入偏離主題的消息,或者循環(huán)返回以修改較早的語句。 這種類型的多輪對話反映了用戶實際的交談方式,這種對話類型,如果嘗試用一組規(guī)則建模的話會非常復(fù)雜。
非線性對話是什么意思? 想象一下一個對話,如果你只能記住對方說的最新消息, 你可能會錯過很多提示并犯很多錯誤! 真實的對話傾向于在主題之間來回移動,然后返回到原本得主題。 可視化此模式的一種方法是將對話視為一組分層的段,其中對話的各個部分直接相互響應(yīng)。 每個片段不一定與之前討論過的主題相關(guān),并且可以同時播放多個片段。
一個示例是子對話:一種短暫離題的對話模式。 在下面的對話中,用戶回圈以驗證帳戶上的 credit,然后再繼續(xù)進行主要目的——進行購買。 購買完成后,用戶再返回 credit topic。

另一個常見的非線性示例是與目前的用戶意圖或任務(wù)無關(guān)的閑聊,陳述或問題。 如果用戶要問“你是機器人嗎?” 對話中,助手應(yīng)回答這個問題,然后返回上一個任務(wù)。 同樣,如果用戶想要修改較早的請求,則助手應(yīng)該能夠跟上并閱讀上下文以進行必要的調(diào)整。
讓我們看一下另一輪對話,并按顏色組織相關(guān)主題:

這種情況可能極具挑戰(zhàn)性,雖然可能不需要整個對話歷史記錄來確定下一步動作,但用戶可以參考的對話歷史記錄沒有限制。 可以考慮使用硬編碼規(guī)則來優(yōu)雅地處理此對話所需的嵌套邏輯。 但是更好的替代方法是基于機器學(xué)習(xí)的方法,該方法可以梳理分層的主題以找出重要和不重要的內(nèi)容。
Transformers vs Recurrent Neural Networks
處理這類對話的最常見方法是使用一種稱為遞歸神經(jīng)網(wǎng)絡(luò)或 RNN 的體系結(jié)構(gòu)。默認情況下,RNN 會將每個用戶輸入提交到內(nèi)存。雖然從理論上講,RNN 應(yīng)該能夠在廣泛的對話類型中產(chǎn)生準確的預(yù)測,但現(xiàn)實是,如果沒有大量的訓(xùn)練數(shù)據(jù),RNN 常常無法正確地泛化。
在對對話輪次建模時,對每個用戶輸入進行編碼存在一些明顯的缺點。它占用大量資源,而且并非每次對話都與當(dāng)前對話狀態(tài)相關(guān)。長短期記憶(LSTM)網(wǎng)絡(luò)是一種RNN,旨在通過學(xué)習(xí)忘記談話的某些部分來解決此問題。
但是,越來越多的 LSTM 被 Transformer 體系結(jié)構(gòu)取代,該體系結(jié)構(gòu)特別適合于建模多回合對話。與 LSTM 不同,Transformer 不會對用戶輸入的整個序列進行編碼。取而代之的是,Transformer 使用一種稱為自注意力的機制來選擇,進行預(yù)測時要在對話中獨立考慮哪些元素。這與 LSTM 相反,后者更新其內(nèi)部存儲器,然后將狀態(tài)傳遞給后續(xù)的對話回合。
如果 LSTM 遇到用戶的意外輸入,它可能會以無法恢復(fù)的狀態(tài)結(jié)束,因為內(nèi)存是從一個會話輪次傳遞到下一個會話輪次的。 Transformer 能夠更好地從意外輸入中恢復(fù),因為在每個輪次都會重新計算對話歷史記錄的相關(guān)性。
總而言之,在預(yù)測跨更復(fù)雜,多回合對話時,Transformer 體系結(jié)構(gòu)具有兩個優(yōu)點。
- 它可以確定對話序列中哪些元素需要重點注意(自注意力機制)
- 它可以按順序獨立進行每個預(yù)測,因此,如果用戶插入了意外內(nèi)容,它就可以恢復(fù)。
How the TED Policy works
讓我們從輸入到輸出,來更深入地了解TED策略做出預(yù)測時的情況。 如果想更深入一點,可以在論文中找到有關(guān)該過程的解釋。
每次對話時,TED策略都會將三條信息作為輸入:
- 用戶的消息
- 之前預(yù)測的系統(tǒng)動作
- 保存到助手內(nèi)存中作為插槽的所有值。
這些輸入中的每一個在被送入 Transformer 之前都經(jīng)過特征化和拼接。
自注意力機制的作用:Transformer在每個回合動態(tài)地訪問對話歷史的不同部分,然后評估并重新計算先前回合的相關(guān)性。 這允許TED策略在這一輪時考慮用戶的話語,而在另一輪時完全忽略它,這使得Transformer成為處理對話歷史記錄的有效架構(gòu)。
接下來,將稠密層應(yīng)用于 Transformer 的輸出,以獲取用于對話上下文和系統(tǒng)動作的 embeddings。 計算 embeddings 之間的差異,TED 策略是基于Starspace算法的技術(shù),可最大程度地提高與目標標簽的相似度,并最大程度降低與錯誤標簽的相似度。 比較 embeddings 之間相似性的過程類似于 Rasa NLU 管道中EmbeddingIntentClassifier預(yù)測意圖分類的方式。
當(dāng)需要預(yù)測下一個系統(tǒng)動作時,將根據(jù)所有可能的系統(tǒng)動作的相似性對它們進行排名,然后選擇相似度最高的動作。
如下所示,在每個對話回合中都會重復(fù)此過程。

TED Policy 架構(gòu)包括以下步驟:
- 將每個時間步的下列特征拼接到dialogue transformer embedding層的輸入向量中:
- 用戶輸入(用戶意圖和實體)或經(jīng)過user sequence transformer encoder處理的用戶文本,
- 通過 bot sequence transformer encoder 處理的先前系統(tǒng)動作或機器人的回復(fù)
-
slots 和激活的 forms
將輸入向量的 embedding 輸入到 encoder 中
在 encoder 輸出上應(yīng)用密集層,獲取每個時間步的對話 embedding
應(yīng)用密集層為每個時間步的系統(tǒng)動作創(chuàng)建 embedding
計算對話 embedding 和系統(tǒng)動作 embedding 之間的相似度。 此步驟基于StarSpace算法。
StarSpace,一種通用的神經(jīng)網(wǎng)絡(luò)嵌入模型,本質(zhì)是通過從實體的集合之間的關(guān)系中學(xué)習(xí)具有離散特征表示的實體embedding來直接用于排序或分類任務(wù)。
在每個時間步,將 user sequence transformer encoder 的 token 級輸出與encoder 的輸出連接在一起。
應(yīng)用 CRF 算法為每個用戶文本輸入預(yù)測上下文實體。
參考:
Unpacking the TED Policy in Rasa Open Source
Dialogue Transformers——RASA TED policy 論文翻譯
