[對話式AI] Chatbot的挑戰與發展趨勢

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

[對話式AI] 預訓練語言模型比較(ELMO、BERT、GPT-2)

預訓練(Pre-train)語言模型可用於自然語言理解(Natural Language Understanding)的命名實體識別(Named Entity Recognition)、問答(Extraction-based Question Answering)、情感分析(Sentiment analysis)、文件分類(Document Classification)、自然語言推理(Natural Language Inference)等任務。

以及自然語言生成(Natural Language Generation)的機器翻譯(Machine translation)、自動摘要(Automatic summarization)、閱讀理解(Reading Comprehension)、資料到文本生成(Data-to-Text Generation)等任務。

本文透過列舉時下主流預訓練語言模型的特點,介紹最具代表性的ELMO、BERT及GPT-2模型;用最簡短的文字敘述,讓大家能夠輕易比較出差異。

ELMO(Embeddings from Language Model)

  • RNN-based Language Models
  • 透過一堆句子訓練,不需要標註
  • 預測下一個Token
  • 從RNN的hidden layer取得Contextulize word embedding
  • 從正反向embedding接起來就是上下文的embedding
  • 最後把每一層的embedding都加起來,再由後續任務學習到加權參數
  • 94M個參數

Source: https://arxiv.org/abs/1802.05365

BERT(Bidirectional Encoder Representations from Transformers)

  • 屬於Transformer的Encoder
  • 只需要訓練Transformer的Encoder(輸入輸出一對一)
  • 透過一堆句子訓練,不需要標註
  • 給一個詞序列,每一個詞都會吐embedding
  • 中文更適合用字為單位,因為用one-hot encoding詞太多了;常用中文字約4800個,中文詞則比這個高數倍
  • Masked LM: 輸入詞序列中隨機15%的詞被換成特殊的Token [Mask],並做預測
  • 預測下一個句子: 引入[SEP]代表兩個句子的交界,及[CLS]代表輸出分類結果的位置
  • 上述兩種方法都是把抽出來[Mask]或[CLS]的Vector丟到Linear Multi-class Classifier去預測詞
  • 以上兩種方法要同時使用
  • 340M個參數

Source: https://arxiv.org/abs/1810.04805

GPT-2(Generative Pre-Training)

  • 屬於Transformer的Decoder
  • 預測下一個Token
  • 40GB的文本訓練出來的
  • 可以做到Zero-shot Learning,不需訓練資料,做到Reading Comprehension(F-score=55接近Dr.QA)、Summarization(跟隨機差不多)、Translation(跟隨機差不多)
  • 1542M個參數

Source: https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf