聊天機器人的挑戰與發展趨勢

雖然電腦視覺(Computer Vision)透過深度學習(Deep Learning)技術取得了重大進展,但在自然語言處理(Natural Language Processing)領域,深度學習的導入仍然處於發展初期。

以聊天機器人(Chatbot)來說,自從圖靈測試在2014年被聊天機器人Eugene通過後,加拿大學者改進測試的缺失提出了威諾格拉德架構挑戰賽(Winograd Schema Challenge),也是目前最具權威的AI競賽。

該競賽的第一輪是代詞消歧問題(Pronoun disambiguation problems)。舉例來說,當人類分析句子時,會用經驗來理解指代的對象:

  • 市議會拒絕示威者,因為他們害怕暴力。
  • 市議會拒絕示威者,因為他們提倡暴力。

而這個選擇題只有兩個答案,代詞”他們”是指”市議會”還是”示威者”,AI應該要指出在第一句說的是市議會,第二句說的是示威者,從問題上可以發現,系統無法透過這段話的上下文進行理解得到答案,這在傳統實作上必須透過知識圖譜(Knowledge Graph)進行推理,或使用深度類神經網路模型,要通過比賽拿到獎金25,000美金,準確率(Accuracy)必須達到90%以上,但目前最好的成績只有58%,遠比人類低得多。

除了上述根本影響Chatbot問答品質的問題,還有幾個難題仍未被突破:

  1. 通用的架構與模型:為了整合語音辨識、詞法分析、句法分析、語意分析、深度學習,答案搜尋,對話管理、自然語言生成和語音合成等模組,確保其相容性,當前Chatbot架構與模型相當複雜,管理較為困難,如何研發通用的架構與模型,是未來所有同業的發展目標。
  2. 情感分析( Sentiment Analysis ):使用自然語言處理來識別文本中的主觀資訊,例如正面或負面,或尋找更複雜的狀態,例如開心、生氣、哀傷等;可以讓Chatbot與人交互時更有溫度,是目前產學界熱門研究方向。
  3. 開放領域(Open Domain):現在的Chatbot只能做好特定領域的工作,如何建構開放領域的知識,甚至不需要人工建構知識,讓機器自學習,也是產學界正在努力的方向。
  4. 端對端 ( End to end ) :不經過傳統的模組串聯,利用深度學習 ( Deep Learning ) 建立端對端的簡潔模型;達到輸入原始資料後,可直接得到想要的輸出結果,但與此同時還要支援多輪對話管理、上下文情境及知識圖譜推理,避免安全回答,甚至是保持Chatbot個性的一致性,正確的進行指消代解,這些挑戰都是產學界近期的目標。
  5. 基於生成的模型(Generative Model):目前自然語言生成技術 ,可分為基於檢索、基於範本及基於生成兩種方法,三者都可以導入深度學習技術,目前以基於檢索及基於範本為業界主流;雖然深度學習Seq2seq模型非常適合產生文字,但此基於生成方法尚處早期的發展階段,空間和時間複雜度高,實際應用效果不佳。

模組化的任務導向對話系統實作方法

# 自然語言理解 (Natural Language Understanding)
問句 = input("請輸入你的問題: ") 
使用者動作.意圖 = 意圖識別(問句)
使用者動作.一組槽位 = 槽位填充(問句, 使用者動作.意圖)

# 對話狀態追蹤 (Dialogue State Tracking)
if (使用者動作.意圖 == null)
  對話狀態.意圖 = 得到意圖(對話歷史)
  對話狀態.一組槽位 = 更新對話狀態(使用者動作.一組槽位, 對話歷史)
else
  對話狀態 = 使用者動作
  填充個性化槽位(對話狀態.一組槽位, 使用者畫像)
  意圖所缺的槽位填入預設值(對話狀態)

# 對話策略學習 (Dialogue Policy Learning)
if (對話狀態.意圖 == null)
  系統動作.意圖 = "不明"
else if (對話狀態.意圖 == 特定服務)
  if (槽位是否缺失(對話狀態))
    系統動作.意圖 = "對空白槽位提問"
    系統動作.一組槽位 = 對話狀態.一組槽位
   else
    系統動作.意圖 = 特定服務
    系統動作.一組槽位 = 查詢服務API(系統動作.意圖, 對話狀態.一組槽位)

# 自然語言生成 (Natural Language Generation)
if 系統動作.意圖 == "不明"
  問句 = input("我不懂你的意思,請換個方式告訴我: ")
else if 系統動作.意圖 == "對空白槽位提問"
  系統提問 =  提問生成(系統動作)
  問句 = input(系統提問)
else if 系統動作.意圖 == 特定服務
  print(回答生成(系統動作, 回答模板))

聊天機器人的類型與對比(問答、對話與閒聊系統)

由於常常跟客戶和外部工程師雞同鴨講,最後發現大家對聊天機器人的定義都不一樣;你知道Chatbot可以分成三類嗎?部落格AI專欄的第一篇,就來介紹一下「各類Chatbot的用途」,並針對「開發方法」、「特點」、「關鍵評價指標」及「應用場景」等進行深入對比,讓你一次搞懂Chatbot,不再一知半解。

類別問答系統任務導向對話系統閒聊系統
英文Question Answering systemTask-Oriented Dialogue systemChit-Chat Dialogue system
功能回答使用者問題代替使用者完成任務陪伴使用者閒聊
領域特定領域特定領域 開放領域
方法基於Web檢索、基於知識庫、基於社群模組化(基於規則、資料驅動)、端對端(資料驅動)基於檢索、基於生成
特點單輪對話,著重問句分析(識別資訊詞)多輪對話,著重對話管理(對話狀態追蹤、對話策略學習)多輪對話,著重個性化及情感分析
關鍵指標Precision、Accuracy、Recall、F-Measure任務完成率、對話耗時、對話輪數、機器模擬使用者評分詞重疊率、詞向量距離、機器模擬使用者評分
應用場景FAQ、教育助理、訂票閒聊、陪伴
知名案例IBM WatsonSiri、Google Assistant微軟小冰、SimSimi
實作方法基於知識庫的問答系統模組化的任務導向對話系統應用搜尋引擎檢索,或訓練Seq2seq模型生成自然語言