小蜜團隊萬字長文《讀後簡略概括》

 

1、對話系統主要分爲三類:閒聊型+任務導向型+問答型

     閒聊型:就是瞎聊,想聊啥就 聊啥

     任務導向型:考慮多輪對話,根據對話的不同狀態和槽位值進行回覆策略的選擇

     問答型:一問一答,識別詢問者的意圖,從知識庫中選取答案進行返回

2、任務導向型:pipeline系統+端到端系統

      pipeline系統:自然語言理解(槽值意圖的識別)+對話狀態跟蹤+對話策略+自然語言生成

                             對話狀態跟蹤和對話策略統稱爲對話管理模塊DM,就是做狀態的跳轉

               優勢:可解釋性強,易於落地。

               缺點:不夠靈活,各模塊之間獨立,難以聯合調優,誤差會層層累積

      端到端系統:自然語言輸入 ---> 自然語言輸出(中間是整體映射體系,類似於seq2seq)

               優勢:靈活性強,可拓展性高

               缺點:對數據的數量和質量要求高,建模不明確,還在探索中

整體存在的問題:DM通常建立在一個明確的話術體系內,用戶的行爲如果我們不在我們的話術體系內,有新的意圖進來, 怎麼辦?這就是可拓展性差!還存在冷啓動問題+訓練效率低

1、可拓展性差:變化的用戶意圖+變化的槽位和槽值+變化的系統動作

變化的用戶意圖:用戶輸入中出現了未在模型中的意圖。原模型意圖種類20個,模型輸出是1*20的one-hot向量,新增意圖時模型就要重新訓練,輸出一個1*21的one-hot向量。

解決1:知識蒸餾:一個“老師-學生”學習架構,之前是爲了解決大模型耗時嚴重準確率高,小模型準確率低耗時少的問題。

  1. 正常訓練大模型
  2. 訓練小模型,計算小模型的兩個loss,一個是soft target,一個是hard target,同一個輸入,計算大模型的softtarget(軟化過,即概率/T)與小模型的soft target計算交叉熵,真實標籤和小模型的hard target做交叉熵,這兩個交叉熵加權疊加
  3. 預測時就是常規預測
  4. 這裏的做法是:對於舊的意圖集合,舊模型的概率輸出直接指導訓練新的模型;對於新增的意圖,對應的邏輯規則爲新的標註數據來訓練新模型。但這樣做還是明顯訓練了新的模型,但是減少了訓練量,因爲使用了舊模型。

解決2:CDSSM:語義相似性匹配(DSSM貌似在推薦方面用的比較多,把兩個文本轉成向量做相似度計算)

  1. 利用訓練集中用戶意圖的自然描述直接學習出一個意圖向量的編碼器(這是不是和小樣本學習有點像,裏面C-way學習的就是一個類的向量表示
  2. 將任意意圖嵌入到一個高維語義空間,進而再做意圖識別。
  3. 個人觀點:如果進來新的意圖,用原來的模型得到新意圖的向量表示,這個表示不一定和別的意圖有很好的區分性,我們沒有訓練過它且我們本身就不知道它是什麼意圖,除非標註過。

解決3:人機協同:解析到新的意圖時返回給人工進行處理,人工處理的數據可以轉換成文本作爲我們新意圖的訓練數據。

變化的槽位和槽值:

  1. 槽值不固定:多輪對話中對每個槽位維護一個有限的槽值集合,當前對話輪次時,獲取新的槽值,對該槽位的槽值集合進行打分排序,輸出概率最高的結果。打分都比較高的話可以發出澄清話術。
  2. 槽位不固定:槽位描述編碼器?對任何槽位(無論見沒見過)進行編碼,得到該槽位的語義向量,然後和用戶語句一起作爲輸入,採用序列標註的方式得到識別的槽值。(如果是一個新的槽位,用什麼當做輸入到槽位呢??????)所以論文做了一個假設,任何槽位的自然描述很容易得到。
  3. 變化的系統動作:略,論文沒看過不是很明白,後續再補上吧

2、標註數據少:我當時自己標註樣本是真的標註到快崩潰,幾萬的樣本,看的眼都花了。

                    1、用機器自動標註數據,降低數據標註的成本

                    2、對話結構挖掘,儘可能高效利用無標註數據

                    3、加強數據採集策略,高效獲取優質的數據

3、訓練效率低:增強學習

      

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