1. 程式人生 > 實用技巧 >《rasa聊天機器人框架學習》

《rasa聊天機器人框架學習》

https://www.bilibili.com/video/BV1c7411D75q

Rasa NLU:

Rasa Core:

對話狀態跟蹤

通過ML實現對話流程的管理不是第一家,但是是和工業界結合最好的一家

NLG:Rasa 裡面用的是模板...

seq2seq 啥的不成熟

Rasa X:

ML訓練:該故事下,所有對話歷史狀態;

spaCy是用於高階自然語言處理的開源軟體庫,以Python和Cython程式語言編寫

意圖識別:sklearn

實體識別:封裝的 C++ CRF 寫的sklearn-crfsuite

sklearn-crfsuite是基於CRFsuite庫的一款輕量級的CRF庫。該庫相容sklearn的演算法,因此可以結合sklearn庫的演算法設計實體識別系統。sklearn-crfsuite不僅提供了條件隨機場的訓練和預測方法還提供了評測方法。這裡再簡單說明一下CRFsuite。CRFsuite使用C/C++實現了條件隨機場模型。作者為東京大學的Naoaki Okazaki,從他的個人資訊頁來看,他應該從事文字處理研究十多年了。從Github原始碼來看,作者將具體的實現演算法全部封裝成了動態庫,這樣可能不利於我們瞭解條件隨機場內部原理。。從Github原始碼來看,作者將具體的實現演算法全部封裝成了動態庫,這樣可能不利於我們瞭解條件隨機場內部原理。在眾多實現條件隨機場的軟體中,CRFsuite具有下邊的特徵:

用開源實現(沒有用學術前沿的一些東西),實現一個工業可用的系統;

------------------------------------------------------------------------------------------

embedding

LTR:選擇系統行為時 —— 學習當前對話狀態 與哪些 系統行為 更接近;並且設定一個閾值,可以做到一個對話狀態可以選擇多個系統行為

LSTM

------------------------------------------------------------------------------------------

NLU識別的主要輸出結果:意圖 & 實體

tracker:記錄會話狀態,

tracker 要把當前的使用者狀態輸出到policy (狀態決策)

tracker 給決策層的時候,已經是 embedding 向量了

意圖和 系統行為 之間可能有關係,不是簡單粗暴到詞這個級別

把 intent 類別進行分詞:mood unhappy

utter cheer up ...

--> 這塊可以深入挖掘

至少先判斷 sentiment

反例:儘量不要把 使用者意圖 和 系統行為 的詞寫得一樣。。。這樣效果會變差

tracker輸出的 embedding 都 輸入到 LSTM裡面

《Few-Shot Generalization Across Dialogue Tasks》論文筆記

Posted on2019年3月18日

論文地址

在一個具體的task對話系統中,為了完成整個對話系統,通常而言需要收集一些該task需要具備的資訊——即slot,一旦所有預設的slot資訊收集完畢,便可以根據這些資訊完成該task。而這個資訊的收集過程是通過對話的形式展開的,論文中為此定義兩種對話形式:

  • Cooperative Dialogue: 系統只需要針對預設slots進行遍歷,當所有slots資訊都具備的時候便可以完成一次task,而這個過程使用者是比較配合的;
  • Uncooperative Dialogue: 與Cooperative Dialogue相反,使用者可能比較隨性,往往答非所問,並且跳出當前的話題,即可簡單理解為不配合的。如下圖中所示情況,論文作者主要考察了四種情況的uncooperative:正常task對話中插入Chitchat,對已有slot進行Correction,Broad context和Narrow context(這兩種沒怎麼看明白,直接看下圖中的例子吧)

論文中將dialogue management建模成這樣一個問題:從一個封閉域的候選list中選擇一個正確的action,而這個action型別可能包含:傳送一個message給使用者、發起一個API請求或者查詢資料庫的一個SQL操作。並且NLG並未使用生成模型而是使用模板的方法,

這裡使用LSTM作為HCN的前置網路,而HCN實際上是監督學習和強化學習的綜合,監督學習的資料來自於兩部分:前期提供的監督資料和後期上線後收集的線上實時反饋資料,並且通過HCN網路並不會使用分類的方法,而是使用embedding之間的相似度匹配方法。

本文提出的框架叫做Recurrent Embedding Dialogue Policy (REDP),這個框架主要目的便是計算dialogue states和system actions的表徵,因此在inference階段,將當前dialogue states的表徵和所有候選system actions的表徵計算相似度,並選擇最高的actions作為輸出,並根據action的不同進行下一步動作。

REDP的整體框架如下,可以分為四個模組。

Featurization

將使用者輸入、系統actions和槽位進行特徵化:

  • 對於使用者輸入主要是通過NLU模組得到意圖和實體等資訊;
  • 對於系統actions則將action名字中的詞作為特徵(比如action_search_restaurant = {action, search, restaurant}),這些特徵因為都是詞,所以各自都使用bag-of-words的方法進行表徵
  • slot資訊將使用一個binary vector進行表徵,各個維度上代表的slot資訊出現了就是1否則為0. -- 得有個例子輔助理解;

Embedding layers

整個框架中存在四個embedding layer,這是一個dense layer,並且針對這四個的引數各自不同。

Attention

這裡要解決的問題是隻能針對當前對話輪中已發生過的user input 和 system actions進行attention,而不能針對未來對話輪中的資訊,因此這裡修改了Neural Turing Machine,最終通過這個修改版的NTM,只針對已發生過的對話輪中的資料進行attention,並最終得到這個與對話上下文歷史資料互動之後的表徵

針對user memory和system memory上的attention,分別使用了兩個不同的模組。

RNN

使用LSTM結構做對話狀態追蹤。

  • 輸入: user memory attention之後的結果與embedded user input相加,爾後再將embedded slots vector拼接成一個向量作為LSTM當前輪的輸入向量;
  • 輸出:LSTM的輸出向量(隱層接一個dense layer)與system memory attention的結果進行相加,這個作為當前輪的dialogue state embedding

得到當前輪的state embedding後,會存入LSTM state中,並且會將所有前面輪數的相應state embedding與system memory attention中的二值化的attention權值進行相乘,從而可以實現在維護的所有歷史state中進行跳轉的目的(即跳轉到歷史的任意一輪的對話state中)。

Similarity

利用dialogue level embedding和某個候選system action之間計算相似度,並使用了一個margin loss的方法進行訓練。

總結:本文中實現不同意圖之間的切換非常新穎,並且後面還做了很多比較詳細的實驗,發在了NIPS 2018上,在遇到需要實現上下文中不同意圖間頻繁複雜切換的問題時候,可以好好參考下這篇論文。

文章導航


(4 條訊息)Few-Shot Generalization Across Dialogue Tasks《少資料互動對話生成》_圖靈與對話 - CSDN 部落格_few-shot generalization across dialogue tasks

摘要

基於機器學習的對話管理器能夠學習複雜的行為以完成任務,但是將其功能擴充套件到新領域並不容易。 我們研究了不同政策處理不合作使用者行為的能力,以及在學習新的任務(例如預訂酒店)時如何重新運用完成一項任務(例如餐廳預訂)的專業知識。 我們介紹了迴圈嵌入對話策略(REDP),該策略將系統動作和對話狀態嵌入同一向量空間。 REDP 包含基於改進的神經圖靈機的記憶體元件和注意力機制,並且在此任務上明顯優於基準 LSTM 分類器。 我們還表明,我們的體系結構和基準都可以解決 bAbI 對話任務,達到 100%的測試準確性。

1 Introduction

會話軟體隨著訊息服務內部內建的語音控制裝置和應用程式的增長而變得越來越重要。在該領域中的一個巨大挑戰是建立一種軟體,該軟體能夠進行擴充套件的對話,執行任務,跟蹤對話歷史記錄並一致地響應新資訊。沒有希望明確地將人類使用者可能與對話系統進行的所有可能的互動編碼,因此,在統計對話系統上存在大量工作,在統計對話系統中,使用機器學習來理解口語或書面語言,並且引導對話。
文獻中有關面向任務的對話系統的一個反覆出現的主題是應用程式開發人員提供領域特定程式碼或知識的必要性(或缺乏這種必要性)。一方面,是完全手工製作的系統,例如使用 AIML 構建的系統,開發人員必須在其中手動編寫每個可能的對話。另一個極端是所謂的 “端到端” 系統,該系統在無註釋的對話記錄上進行訓練,不包含任何特定於域的邏輯或程式碼。在這些極端之間,存在著將領域特定程式碼與使用對話資料訓練的概率元件相結合的方法。這種系統的一個眾所周知的缺陷是,一旦經過培訓,將這些系統適應新領域並不容易[1,2,3]。如果對話系統需要較少的特定於任務的程式碼,則可以輕鬆地增加其可以完成的任務數量,前提是每個任務都有訓練資料。對於許多開發人員而言,收集大量的對話作為培訓資料是一個巨大的障礙,因此我們特別希望從小型資料集中學習。

1.1 Cross-task Generalization in Dialogue

廣告位填充涉及確定使用者的目標,然後收集完成該任務所需的資訊。 例如,在進行推薦之前,搜尋餐廳可能需要美食,位置和價格範圍。 這些欄位通常稱為插槽。 我們將協作對話定義為使用者使用所請求的資訊響應系統提示的情況。 開發人員可以輕鬆地實現這些協作性對話,例如,使用由單個 while 迴圈組成的骨架對話管理器,該迴圈會要求缺少資訊,直到所有必需的位置

充滿。我們將不合作的對話定義為與此不符。顯式地處理所有可能的偏差是不可行的,因此我們主要感興趣的是使開發人員能夠構建可通過歸納幫助處理不合作對話的複雜性的軟體。
圖 1 舉例說明了一些使用者偏離合作對話的常見方式,這些方式是根據我們建立對話系統的經驗得出的。每種型別的偏差都必須以不同的方式處理,並且正確的反應取決於上下文。在每種情況下,系統都應響應使用者的感嘆,然後嘗試返回到任務。當用戶對有關即時對話上下文的問題有疑問時,例如為什麼您需要知道?,系統必須選擇適當的響應來說明為什麼需要此資訊。在感嘆詞指的是廣泛的上下文中,例如您能告訴我一些餐廳嗎?,系統必須根據是否填寫了所有必需的位置來選擇適當的響應。當用戶提供更正時,例如實際上,有些幻想,系統應該確認此更新。我們的聊天(非面向任務的談話)模型是最簡單的情況:對話策略應以適當的小談話語迴應,然後重新陳述之前的問題。特定的顫音響應由輔助系統選擇,對於我們的實驗而言並不重要。
我們遵循 Williams 等人的方法。 [4],其中開發人員使用他們的領域知識來編寫用於監督學習的初始對話集。在第 4 節的實驗中,我們測試了在一個領域中暴露於不合作對話的對話系統將這種知識轉移到新領域的能力。

2 Related Work

模組化與端到端方法有關構建模組化對話系統的大量文獻,包括語言理解,狀態跟蹤,動作選擇和語言生成 [5、6、7、8、9、10、11、12] 。 一種成功的方法是將對話建模為部分可觀察的馬爾可夫決策過程(POMDP)[6,13]。 POMDP 在可能的狀態上保持分佈,其中狀態編碼使用者的目標,對話歷史記錄以及使用者最新訊息的意圖。 通常,通過與模擬使用者互動,在強化學習(RL)設定中訓練 POMDP。 實施高保真模擬使用者並對於非專業應用程式開發人員而言,獎勵功能是一項艱鉅的任務,因此儘管我們可以根據需要使用 RL 完善我們的政策,但我們還是強調對 RL 的監督學習(SL)
混合程式碼網路(HCN)[4] 是最近提出的一種機制,用於將基於機器學習的對話管理器與開發人員編寫的功能介面。在我們的工作中,我們類似地將對話管理視為從封閉列表中選擇要執行的正確操作的問題。操作可以像向用戶傳送訊息一樣簡單,但通常是要執行的任意函式,例如呼叫 API 或查詢資料庫。注意,我們不使用統計自然語言生成,系統話語是簡單的模板。 HCN 無法直接應用於我們的任務,因為我們允許對話管理器連續執行多個操作,並且該策略必須預測何時應 “監聽”(即等待下一個使用者輸入)。儘管不完全相同,但我們在第 4 節中討論的 LSTM 分類器可作為 HCN 方法的代理。使用 SL 和 RL 的組合來訓練 HCN,其中初始 SL 資料由開發人員手動建立,並且在使用者與系統互動時線上收集更多 SL 資料。這建立在 Henderson 等人的混合 SL / RL 工作基礎之上。 [14]。通過採用手工製作的資料進行引導,我們採用了類似的方法,然後研究了對話策略從這些初始示例到與模擬使用者進行互動的概括程度如何。
最近,多位作者提出了培訓端到端面向任務的對話管理器的方法 [15,16]。就我們的目的而言,如果不需要特定於域的程式碼,並且可以在未註釋的示例對話中訓練策略,則模型為“端到端”。儘管這為構建適應性跨域對話代理提供了一條有希望的途徑,但[15] 和[16]均指出,仍需要使用特定於域的插槽定義來完全解決其任務。我們的方法不是端到端的,而是接受了以系統動作和對話行為(即自然語言理解(NLU)系統的輸出)註釋的對話的培訓。對話方塊示例如圖 6 所示。

Domain Adaptation

對話中跨域轉移學習的先前工作主要集中在對話狀態跟蹤上。狀態跟蹤涉及從使用者話語和系統話語序列中推斷出使用者目標的信念狀態,例如,通過使用在 ngram 特徵上訓練的 RNN [17]。 Gašic 等。 [2]建立了一個基於高斯過程的 POMDP 系統,該系統可以學習在現有域中整合新的時隙。 Mrkšic 和合作者 [1] 使用遞迴神經網路(RNN)方法建立了多域對話狀態跟蹤器。他們表明,在組合域上訓練的模型比在單個域上訓練的模型表現更好。 Williams [3]使用最大熵方法發現了相似的結果。對話狀態跟蹤的主要挑戰是處理口語理解中的不確定性,這與本工作中研究的任務不同。儘管 NLU 是一個活躍的研究領域,但這項工作的重點是對話政策,因此我們不考慮 NLU 錯誤。

Classification versus Ranking

與 [4] 和[16]不同,我們不使用分類器來選擇系統動作。相反,我們聯合訓練對話狀態和每個系統動作的嵌入,並在狀態和動作之間使用相似性函式對每個候選者進行排名。其他作者已將排名演算法應用於對話管理。威廉姆斯使用基於決策樹的排名方法進行狀態跟蹤 [18]。 Bordes 等人在[15] 中將基於嵌入的排名用作 “有監督的嵌入” 基準,但是以端到端的方式將使用者和系統的話語嵌入到單詞袋中。 Banchs [19]在開放域,非任務導向的對話中應用了嵌入和排序方法,使用阻尼試探法將當前話語的嵌入向量與對話歷史結合起來。與 [19,15] 不同,我們將對話狀態和動作都嵌入了更高的抽象層次。使用者輸入表示為對話動作,系統動作表示為功能包(請參見第 3 節)。與以前使用嵌入的工作不同,我們的體系結構包含一個迴圈元件以建立對話狀態的表示。

Tasks

我們的目標是將學習到的行為從一個插槽填充任務(域)轉移到另一個任務。 我們考慮的某些子任務已在單個域中考慮。 例如,多位作者研究了對話系統中任務和非任務對話的交織 [20,21],這類似於我們從使用者無提示的“聊天” 中正常恢復的任務。 此外,我們的 “處理更正” 任務類似於 [15] 中為餐廳領域定義的任務 2(更新 API 呼叫)。

3 Recurrent Embedding Dialogue Policy

我們提出了週期性嵌入對話政策(REDP)。目的是學習在監督環境下對話狀態和系統動作的向量嵌入。在推斷時,將對話的當前狀態與所有可能的系統動作進行比較,並選擇具有最高餘弦相似度的那個。該方案受 StarSpace 演算法的啟發 [22],但是與資訊檢索系統不同的是,建立對話狀態的表示作為簡單的功能包是無效的。取而代之的是,我們提出一種架構,該架構涉及對話的歷史,瞭解先前的使用者話語和系統操作對於確定下一步應採取的操作很重要。
這種方法的一個優勢是,目標標籤可以表示為具有多個特徵的包,從而使我們可以將系統動作表示為特徵的組合。通常,描述特定動作的功能可能來自多種來源,包括類層次結構,動作名稱,甚至是從程式碼本身派生的功能(例如呼叫了哪些函式)。無論特徵的來源如何,相似的動作應該比不相似的動作具有更多的共同特徵,並且理想地反映域的結構。在我們的實驗中,我們僅從動作名稱中得出特徵,要麼將整個名稱視為一個特徵,要麼將名稱拆分為標記並將其表示為一袋單詞。例如,操作 utter_explain_details_hotel 和 utter_explain_details_restaurant 告訴使用者必須提供哪些資訊才能獲得推薦。在詞袋特徵化中,這些動作具有 3 個共同的特徵,並且區別在於指示域的單個特徵。儘管基於令牌的特徵足以說明我們的體系結構的泛化效能,但我們一般建議以程式設計方式生成這些功能,因為它不易出錯。
我們的 REDP 的一個時間步驟如圖 2 所示。它由幾個關鍵步驟組成。

Featurization該策略的第一步是使使用者輸入,系統操作和廣告位具有特色。

使用者輸入的標籤是自然語言理解系統 [23] 提取的意圖和實體。 系統操作的標籤是操作名稱。 為了我們的目的,我們將標籤中的標記用作功能(例如 action_search_restaurant = {action,search,restaurant}),但通常這些功能可以從任何來源派生。 然後,使用每個標籤內的令牌計數來建立使用者和系統標籤的詞袋錶示。 系統操作將分別實現。 這些槽位以二進位制向量為特徵,表示在對話的每個步驟中它們的存在與否。 我們使用一種簡單的插槽跟蹤方法,用最近指定的值覆蓋每個插槽。

Embedding layers在第二步中,將嵌入層應用於特徵向量,以建立用於使用者輸入(意圖和實體),系統動作和插槽的嵌入。 嵌入層是密集層,具有分別用於使用者輸入,插槽,系統操作和 RNN 輸出的權重。
使用者輸入和先前的 RNN 輸出(先前的預測系統動作嵌入)用於計算對記憶體的關注

Attention

標準注意機制的問題是它們會使用固定大小的記憶體,在我們的情況下,這對應於將來和過去的時間步長。雖然我們可以在培訓期間關注過去和將來的動作,但是在測試時間這是不可能的,因為在當前時間步未知未來的輸入。因此,我們必須使用僅關注過去的投入和行動的注意力機制。為此,直到當前對話步驟為止,在截斷的記憶體上計算注意力分佈。
我們的注意力架構包括神經圖靈機的修改版本 [24]。主要區別在於,由於記憶體在當前時間步被截斷,因此插值門無法應用於關注概率。因此,將插值應用於巴赫丹瑙分數[25] 而不是概率,並且僅適用於先前的時間步長。使用當前時間步長的分數而不進行插值。通過使用 Bahdanau 注意和張量流 [27] 中實現的歸一化 [26] 來計算分數。為了按位置處理記憶體,我們用注意力轉移的權重因子執行一維卷積,而不是注意力概率的圓形卷積,這是根據 Graves 等人的方法計算的。 al [24]。我們對使用者和系統記憶體使用兩種單獨的注意機制。

RNN

作為 RNN 體系結構的單元,我們使用 LSTM 單元,該單元具有 [28] 中引入的忘記和輸入偏差的時間初始化以及隱藏狀態 [29] 上的反覆丟失。
為了建立對迴圈單元的輸入,將嵌入式使用者輸入和使用者注意力向量相加,然後與嵌入式插槽連線。 該單元的輸出被饋送到另一個嵌入層,以為當前時間步建立單元輸出的嵌入。 該嵌入式單元輸出和系統注意力向量的總和用作對話狀態嵌入。
在每個時間步長上,所有先前的 LSTM 狀態都按元素方式乘以二進位制化的系統注意力概率。 這樣,體系結構可以學會返回其先前的 LSTM 狀態之一,而跳過它們之間的任意數量的步驟。

Similarity對於每個時間步,在對話級別嵌入 a 和目標系統動作 b + 嵌入之間構建相似性。 我們通過對錯誤的系統動作 b−的嵌入進行負取樣來計算損失,確保與目標標籤的相似度很高,並且與任何錯誤動作的最大相似度都很低。
損失函式定義為:

這意味著對於一個正系統動作,相似度將被最大化,直到μ+ 的值;而對於一個負系統動作,相似度的最大相似度將被最小化為 -μ-。 全域性損失是所有時間步長中所有損失函式 Lt 的平均值。

4 Experiments

我們測試了 LSTM 和我們的 REDP 架構將圖 1 所示的每個模式從一個插槽填充任務擴充套件到另一個任務的能力。 出於說明目的,我們考慮餐廳和酒店推薦的領域。 對於這兩項任務,系統都需要一個價格範圍,位置和人數。 為了進行酒店推薦,系統還需要知道開始和結束日期,對於餐廳推薦,還需要一種美食型別。

4.1 Data Generation

正如開發人員會做的那樣,我們手工進行了許多對話,用於監督學習建立他們的對話系統的初始版本。我們建立了兩種對話:合作對話 DC(共有 11 個),使用者可以在其中提供部分或全部偏好設定立即進行,但否則將對系統的問題做出正確迴應,並且不配合 - 相對對話表明,在其中恰好發生一種偏離(圖 1 所示的四種類型之一)。 ü 我們在 dinit 上制定了關於對話的自舉對話政策。 cu
然後,我們建立了一個簡單的隨機模擬使用者,以與自舉策略進行互動。的使用者可以合作並提供所需的資訊,也可以插入其中一種偏差型別。在每個回合中,從這 5 種響應型別的均勻分佈中取樣使用者操作。我們在酒店領域進行了 120 次對話,刪除重複項後,我們獲得了 108 個獨特的對話對話。由於引導策略不完善,因此我們手動修復了這些生成的錯誤對話。我們將它們分為一個測試集 dh,測試 30 個對話,一個訓練集 dh,訓練 78 uu 對話。對於餐飲領域,我們生成了 50 個不合作對話 dru 和 8 個合作對話 drc,我們將它們包括在訓練資料中或從訓練資料中排除,以衡量對話政策的轉移學習能力。生成的對話至少有 12 個,最多 48 個,平均 29.4 個動作可以預測。

4.2 Evaluation

我們在實驗中比較了兩種不同的策略:用作 HCN 代理的 LSTM 分類器,以及第 3 節中描述的 REDP 策略。LSTM 分類器的輸入向量是對使用者意圖和實體(時隙)進行編碼的二進位制向量。 ,以及之前的系統操作。在 LSTM(bin)基線中,先前的動作被編碼為單熱向量。我們還評估了 LSTM(lt)策略,其中先前的操作被編碼為令牌袋。這是為了確保 LSTM 基線可以訪問與 REDP 策略相同的資訊,即不同域中的操作之間的共享功能。我們在兩個不同的資料集上進行了實驗,將初始合作對話與模擬使用者的不合作對話。第一個資料集僅涵蓋酒店領域,d = dh train dh,train,第二個還包括餐館領域的對話 d = d∪dr∪dr。 1 立方 21 立方我們逐步增加 dh,train 的分數,並對 dh,test 進行評估。我們以 uu 來衡量準確性正確預測每個動作的對話次數,平均經過 5 次獨立執行。

All dialogue policies were implemented using the Rasa Core [23] library https://github.com/ RasaHQ/rasa_core. The code and data for our experiments are open source and available on the web https://github.com/RasaHQ/conversational-ai-workshop-18. All hyperparameters are documented together with the code.

4.3 Results and Discussion

圖 3a 和 3b 顯示了酒店領域中每個測試策略在堅持的測試對話中的執行情況。在圖 3a 中,策略在 d1 上進行了培訓,僅包括酒店對話,而在圖 3b 中,策略在 d2 上進行了培訓,其中 d2 包括了餐廳領域的對話。在這兩種情況下,REDP 均明顯優於 LSTM 基準。
圖 4a-4c 顯示了與 3a 和 3b 相同的資料,但分組以說明轉移學習對每個策略的影響。儘管有一些證據表明 REDP 和 LSTM(lt)可以從餐館對話中受益,但該證據並非結論性的。但是,圖 3a 中 REDP 的學習曲線已經非常陡峭,與 LSTM 基線相比,轉移學習的改進空間較小。測試集中最常見的錯誤是對狹義上下文問題的錯誤回答(見圖 1),其中的主要困難是識別使用者所指的是哪個插槽。需要進行實際使用者測試才能確定跨任務學習的好處。
對 REDP 的消融研究(如圖 5 所示)表明,對本文提出的任務進行更好的概括的關鍵機制是對先前系統動作的關注。將結果平均 3 次。為了證明這一點,我們在圖 6 中說明了注意機制對從不合作的對話中恢復的影響:通過有選擇地關注對話歷史,該策略能夠從一系列不合作的使用者話語中恢復並返回要完成的任務。請注意,即使沒有引起任何注意,REDP 的最終測試精度也達到了 100%,這是 LSTM 基準均無法實現的。
我們還從 [15] 中測試了有關 bAbI 任務 5(進行全面對話)的兩種政策。通過自動標記生成的使用者和系統話語,我們將對話轉換為 Rasa Core 格式。兩種策略在測試集上均達到 100%的準確性。這是可以預期的,因為 bAbI 對話任務旨在挑戰端到端系統,並且我們的對話策略使用顯式的時隙跟蹤。

圖 6:說明注意機制在處理不合作對話中的作用。 左側是預測最終操作時系統(實線)和使用者(陰影線)記憶體對齊的直方圖。 中間是來自 Rasa Core 格式的測試集的對話方塊。 右側有語音幫助讀者跟進對話。 chitchat 響應必須單獨選擇,並且未顯示。 一致表明,該政策可以學會忽略早期的不合作對話並完成任務。

5 Conclusions and Future Work

在本文中,我們介紹了迴圈嵌入對話策略,該方法學會將對話狀態和對話系統動作嵌入相同的向量空間,並在任務中使用共享資訊,從而受益於跨域的轉移學習。 我們證明了 REDP 可以學習可重用的對話模式,並可以利用其注意力機制從不合作的使用者行為中正常恢復。 我們計劃更深入地研究 REDP 框架,將其應用於更多領域並與真實使用者進行測試,並研究學習的嵌入的屬性。