2021/08/02

Chatbot

系統分類

  • 問答 QA 系統

    一問一答,一般沒有對話管理的功能。偏重問句分析,取得問句的主題、問題詞、中心動詞。問句分析目前主要採用 template 比對和語意分析兩種方法

  • 任務導向型對話系統

    目的是解決使用者的明確需求。透過對話管理追蹤目前狀態,確定目的與需求。重點在對話管理,將自然語言映射為使用者的意圖和對應的槽位。

  • 閒聊系統

    使用者無特定目的,沒有具體的需求的多輪人機對話。

  • 主動推薦系統

    人機自然互動

不同類型的系統都包含這三個模組

  • 自然語言理解 NLU
  • 自然語音生成 NLG
  • 對話管理

自然語言理解 NLU

可從語音、音韻、詞態、文法、語意、語用六個維度理解自然語言

  • 語音

    跟發音有關,例如中文拼音

  • 音韻

    由語音組合起來的讀音,例如中文拼音 + 四種聲調

  • 詞態

    詞態封裝可用 NLU,資訊量大小取決於具體的語言種類。拉丁語系有很詞態變化,中文沒有太多的詞態變化,只有偏旁的差異,例如:他 她

  • 文法

    主要研究詞語如何組成合乎語法的句子,文法提供單字組成句子的約束條件,為語意的合成提供框架

  • 語意、語用

    自然語言包含和表達的意思

自然語言的難度

  • 沒有固定的格式,相同的意思有多種句式表達,改了一個字、調整語調、語序,都可能改變語意
  • 不斷有新的詞彙出現
  • 不同的場景(上下文),同樣的句子有不同的意思

問句 + 上下文 ------> 自然語言理解 NLU -------> 語意

英文單字以空格分隔,但中文詞語沒有自然分隔符號,故要先進行分詞處理

NLU 需要提供的模組功能

  • 實體識別 Named Entity Recognition

    識別具有特定意義的實體,例如:人名、時間、地名及專有名詞

  • 使用者意圖識別

    顯式及隱式意圖

    ex: "好熱啊" -> 可能是想知道現在的氣溫,或是控制空調

  • 情感識別

    顯式及隱式情感

    ex: "今天心情很好" -> 正面 -> 顯式、容易判斷

    ex: "今天跟客戶談判出了問題" -> 負面情感 -> 程式很難判斷

  • 指代消解、省略恢復

    在聊天主題背景一致的情況下,對話過程通常會習慣使用代詞,取代出現過的實體。或為了方便表述,省略部分句子。

  • 回覆確認

    如果發生判斷模糊的狀況,chatbot 要主動詢問意圖,也就是回覆確認

  • 拒識判斷

    chatbot 要能主動拒絕識別,及回覆超過自身理解/回覆範圍,或涉及敏感話題

NLU 的方法分為基於規則和統計兩種

  • 基於規則

    人工定義很多語法規則,利用規則定義如何從文字中提取語意。NLU 根據規則解析輸入該模組的文字。

    優點:靈活,可定義各式各樣的規則

    缺點:需要大量不同場景的規則,隨著規則數量增加,維護規則的難度也增加

    適合簡單的場景,可快速時做一個簡單可用的 NLU

  • 基於統計

    資料量大,就要用統計方法訓練模型。

    優點:資料驅動

    缺點:訓練資料難以取得,模型難以解釋和偵錯

    適合處理分類和序列標註的問題。可將意圖識別定義為分類問題:輸入句子的文字特徵,輸出該特徵所屬的意圖分類。 SVM、AdaBoost 演算法

    實體識別就是序列標註問題:輸入句子的文字特徵,輸出特徵中,每個字詞屬於某個實體的機率。HMM、CRF(Conditional Radom Field) 演算法

採用 deep learning 方法時,需要大量的資料,因為長尾資料普遍存在,基於統計的方法,受訓練資料品質影響很大

實作通常結合使用兩種方法

  1. 沒有資料及資料較少,先採用基於規則的方法,累積資料後,再採用基於統計的方法
  2. 基於統計的方法可涵蓋大部分的場景,在涵蓋不到的場景,改用基於規則的方法

NLU 產品,強調通用性,很難客製

  • Facebook 的 Wit.ai

  • Google 的 api.ai

  • MS 的 LUIS.AI

NLU 基本技術

詞法分析 (分詞 + 詞性標註) ----> 句法分析 ---> 語意分析

  • 詞法分析 lexical analysis

    常用漢字有六、七千字,遠多於 26 個英文字母,中文詞之間沒有明確的分隔標記,多音現象嚴重,缺少詞態變化(單複數、時態、陰陽性),這些特性帶來了中文分詞方法、重疊詞區分(黑 / 黑黑的)、歧義欄位切分、專有名詞識別等等問題

    詞法分析包含 分詞 + 詞性標註 兩個部分

    • 分詞 word segmentation 有基於詞表和基於統計兩種方法

    基於詞表:逐字掃瞄字串,當子字串跟詞表的詞相同就算吻合。再細分為 最大比對法、逆向最大比對法、雙向掃描法、逐詞巡訪法等等。ex: IKAnalyzer

    基於統計:根據人工標註的詞性和統計特徵,對中文進行建模,透過模型計算各分詞出現的機率,以機率最大的分詞作為結果,常用 HMM、CRF、LSTM+CRF 演算法。ex: ICTCLAS、Standford Word Segmenter * 詞性是詞語最基本的文法屬性之一,詞性標註 Part-Of-Speech Tagging (POS Tagging) 是詞法分析的一部分

    將句子的每一個詞賦予特定類別,ex: 動詞、名詞、介系詞,句子中最能代表資訊的是名詞、動詞、形容詞、副詞,這四種是 Open Class,詞量會隨著時間增加,Closed Class 包含冠詞、介系詞、連接詞,數量固定

    主要採用 HMM,陸續採用判別式的最大熵模型、支援向量機模型等。有基於規則、基於統計兩種方法

    基於規則:依照詞性關係與上下文情境建造詞類消岐規則

    基於統計:將機率最大的詞性作為結果

    工具:Stanford Log-linear Part-Of-Speech Tagger、LTP

  • 句法分析 Syntactic Parsing

    分析輸入的文句,得到句法結構。從字串得到句法結構的過程。ex: 句法驅動和統計的機器翻譯

    不同的句法形式,對應到不同的句法分析演算法,片語結構及依存結構,是最常用的兩類文法體系。以片語結構樹為目標的句法分析器應用範圍最廣。

    分析結果以樹狀結構的形式呈現,稱為句法分析樹。

    根據句法結構不同的表示形式,可將句法分析分為以下三種

    • 依存句法分析 Dependency Syntactic Parsing:識別詞彙之間的相互依存關係

    基本假設:一個句子存在主體(被修飾詞)和修飾詞,句子中,詞的修飾關係具有方向性,通常是一個詞支配另一個詞,這種支配關係就是依存文法。

    詞和詞之間的依存(修飾)關係,本質上包含在句法結構中。

    一個依存關係連接的兩個詞,分別是 head 核心詞與 dependent 依存詞

    依存關係的五條公理:

    1. 一個句子只有一個成分是獨立的
    2. 其他成分直接依存於某一個成分
    3. 任一個成分都不能依存於兩個或兩個以上的成分
    4. 如果 A 直接依存於 B,C在句子中位於 A, B 之間,則 C 直接依存於 B,或依存於 A, B之間某一個成分
    5. 中心成分左右兩邊的其他成分,相互之間不發生關係

    常見依存關係

    關係類型 標籤 描述 例子
    主謂關係 SBV subject-verb 他邀請我跳舞 (他 <- 邀請)
    動賓關係 VOB 直接賓語 verb-object 媽媽給我一個吻 (給 -> 吻)
    間賓關係 IOB 間接賓語 indirect-object 媽媽給我一個吻 (給 -> 我)
    前置賓語 FOB 前置賓語 fronting-object 莫我肯顧 (我 <- 顧)
    兼語 DBL double 他邀請我跳舞 (邀請 -> 我)
    定中關係 ATT attribute 紅寶石 (紅 <- 寶石)
    狀中結構 ADV adverbial 特別嚴厲(特別 <- 嚴厲)
    動補結構 CMP complement 打掃完衛生(打掃 -> 完)
    同位語 APS appositive 我本人非常高興(我 <- 本人)
    並列關係 COO coordinate 天空和海洋 (和 -> 海洋)
    介賓關係 POB preposition-object 在陽光下 (在 -> 下)
    左附加關係 LAD left adjunct 天空和海洋 (和 <- 海洋)
    右附加關係 RAD right adjunct 朋友們 (朋友 -> 們)
    獨立結構 IS independent structure 我五歲,他四歲 (各自獨立)
    核心關係 HED head 美麗的花朵爭相開放 (花朵 是整個句子的核心)

    目前採用資料驅動的依存句法分析,將資料分為訓練集和測試集。基於圖 graph-based 和 基於轉移 transition-based 兩種分析方法。

    基於圖 graph-based:

    ​ 將句子(字串)和對應的依存樹組成的資料做為訓練資料,訓練目的是,學習一個可以預測一句依存樹未知的最佳依存樹。建模過程需要增加依存樹限制條件,例如圖的邊是有向邊,在有向的路徑上,一個詞只能被存取一次,每個詞只能有一個支配節點。

    基於轉移 transition-based:

    ​ 將圖預測轉變為序列標註問題,主要的轉移系統有 arg-eager, arc-standard, easy-first 等等,基於轉移的系統有三個操作

    1. 將單字從 buffer 移入 stack,或將單字從 stack 移回
    2. 從 stack 將單字 pop
    3. 建立帶有 label 的有向邊(左向邊或右向邊)

    基於圖在短句的表現較好,但長句容易受到早期錯誤的影響。基於轉移在長句有較好的表現,但是缺乏豐富的結構化特徵。

    • 片語結構句法分析 Phrase-structure Syntactic Parsing,也稱為成分句法分析 Constituent Syntatic Parsing:識別句子中的片語結構和片語之間的層級句法關係

    基於 Context Free Grammar (CFG),其規則分為人工編寫規則和資料驅動的自動學習規則兩類。

    人工編寫的缺點:規則之間的衝突會隨規則數量的增多而加劇,不易增加新規則。資料驅動的自動學習規則,開發週期短,且規則運作良好,目前為主流方法。

    為了在句法分析導入統計資訊,需要將 CFG 擴充為 PCFG: Probabilistic Context Free Grammar,最後利用 Maxmimum Likelihood Estimation (MLE) 計算每一條規則的機率。

    因為 CFG 的獨立性假設過於嚴格(一條文法規則的確定,僅與該規則左側句子的非終結符號有關,與上下文資訊無關),導致文法中缺乏其他資訊用於規則消岐,因此分析器的效能較低。這個問題有兩種弱化 CFG 假設的方法:一種是使用詞彙化 Lexicalization 方法,一種是使用符號重標記 Symbol Refinement 的方法,透過改寫非終結符號的方式,將上下文資訊導入句法分析器。

    • 深層文法句法分析,利用深層文法,對句子進行深層句法及語意分析,包含詞彙化樹鄰接文法 Lexicalized Tree Adjoining Grammar (LTAG)、詞彙功能文法 Lexical Functional Grammar (LFG)、組合範疇文法 Combinatory Categorial Grammar (CCG)

    依存句法分析是淺層句法分析,適合用在多語言環境,深層文法採用相對複雜的文法,句法和語意資訊較為豐富,分析器複雜。

    先將句子的基礎特徵(詞、詞性、類別標籤)向量化,再利用 MLP 進行特徵提取。

    深層學習的優點:

    1. 只需要句子的基礎特徵,利用向量乘法組合向量化特徵,理論上可達到任意元的特徵組合
    2. 能使用更多基礎特徵
  • 語意分析 semantic analysis

    語意是資料對應現實世界中,事物所代表的涵義。語意分析涉及語言學、計算語言學、人工智慧、機器學習、認知語言等多個學科,最終目的是理解句子表達的真實涵義。

    1. 語意分析在機器翻譯的應用,統計機器翻譯提升了翻譯的效能
    2. 語意搜尋:搜尋不在拘泥於根據輸入關鍵字字面的意思,而是要了解背後真正的意圖
    3. 實現大數據的理解與價值發現的有效手段

    Chatbot 利用語意分析可得知使用者的意圖、情感,藉由上下文情境的語意建模,保持 chatbot 的個性一致

自然語言表示

三種常用的文字特徵表示模型,將自然語言表示為電腦可以理解的形式

  • 詞袋模型 Bag Of Words, BOW

    最初用在資訊檢索 Information Retrieval (IR)。每個詞的出現都不依賴於其他詞是否出現的假設。在表示文件時,可忽略文字的語序、文法、句法,將其視為片語的組合

    ex: 以下兩份文件

    (1) 台北今天下雨,台中也下。

    (2) 台北和台中今天都下雨。

    建構辭典(前面是索引):

    Dictionary = {1: "台北", 2: "今天", 3: "下", 4: "雨", 5: "台中", 6: "也", 7: "和", 8: "都"}

    根據索引,可用向量表示該單詞在文件中出現的次數

    下:在第一句話出現 2 次,第二句話中出現 1 次

    (1) [1, 1, 2, 1, 1, 1, 0, 0]
    (2) [1, 1, 1, 1, 1, 0, 1, 1]

    詞袋模型可將文件轉換為次數的向量,但沒有表示單詞在原句中出現的位置,這是明顯的缺點。

  • 詞頻-逆向文件頻率 TF-IDF: Term Frequency-Inverse Document Frequency

    基於統計的加權方法,常用於 IR,用具體詞彙在文件中出現的次數,和其在語料庫出現的次數,評估該詞彙對相關文件的重要程度。TF-IDF 常被搜尋引擎用來評估文件與查詢之間的相關程度。

    TF (Term Frequency 詞頻) 就是詞語在文件出現的次數

    IDF (Inverse Document Frequency 逆向文件頻率) 詞語普遍重要性的度量。

    詞彙在指定文件內的高 TF,高 IDF,將使該詞彙在文件內享有較高權重的 TF-IDF

    TF-IDF 傾向於過濾常見詞彙,保留重要詞彙的做法。核心概念是:在一篇文件中出現頻率高,但在其他文件很少出現的詞彙,有較好的類別區分效果。

    但實際上,同一類文件頻繁出現的詞彙,往往代表該類文件的特徵,這類詞彙有較高的權重,應該視為該類文件的特徵詞,這是 IDF 的不足處。

  • 詞嵌入 Word Embedding

    將深度學習導入 NLP 的核心技術之一。

    要在 NLP 使用機器學習,必須找到一種適合將自然語言數學化的方法。最初用 one hot representation 方法,利用詞表大小維度的向量描述單詞,每個向量中多數元素為 0,只有該詞彙在詞表對應位置的維度為 1。

    ex: 詞表 H,包含 N 個詞彙,「雨傘」是 H 的第 2 個詞彙,「傘」是 H 的第 4 個詞彙

    「雨傘」的 one hot representation 為 [0, 1, 0 , 0, 0, 0 .....]

    「傘」的 one hot representation 為 [0, 0, 0 , 1, 0, 0 .....]

    同時分配 ID,「雨傘」的 ID 為 2,「傘」的 ID 為 4

    One-Hot Encoding 將所有詞彙單獨考慮,以向量表示,難於發現同義及反義的詞彙關係。另外因向量過於稀疏,在機器學習容易造成維度災難。

    Word Embedding 在基於 One-Hot Encoding 時,增加了單詞間的語意聯繫,並降低詞向量維度。

    一個包含 t 個詞彙 \[ w_1, w_2, ..., w_t \] 的句子,自然語言的機率 (也稱為語言模型)為 \[ p(w_1, w_2, ..., w_t) \\ = p(w_1)*p(w_2|w_1)*...*p(w_t|w_1,w_2,...,w_{t-1}) \\ = p(w_t|w_1,w_2,...,w_{t-1}) \]

    對於 N-gram 模型來說

    \[ p(w_1, w_2, ..., w_t) ≌ p(w_t|w_{t-n+1},w_{t-n+2},...,w_{t-1}) \]

    Yoshua Bengio 發表三層神經網路建構語言模型的方法

    第一層:輸入層,輸入句子內已知前 n-1 個詞彙的詞向量,將前 n-1 個詞向量拼接成一個向量

    第二層:隱藏層

    第三層:輸出層,第 i 個節點的值,等於下一個詞為 \( w_i \) 的機率的對數

    在最佳化模型的過程中,同時對單詞的詞向量進行優化。最佳化後可得到語言模型及詞向量。

    Encoder-Decoder 是文字處理的框架,可用於 chatbot、機器翻譯、文字摘要、句法分析。也就是由句子 (篇章)X,產生句子(篇章) Y 的通用模型。如果 X, Y 是相異語言,就是自動翻譯器。

    Encoder 負責將 X 變換為中間語意 C,Decoder 將 C 和歷史存在的 Y,產生 i 時刻的 \(Y_i\)

    Google 於 2008 年發表 BERT

    對於基於生成的 chatbot,除了 Encoder-Decoder 解決核心問題外,還需要注意多輪對話、安全回答、個性一致的問題

    • 多輪對話問題

      要將前文聊天資料,導入Encoder-Decoder,可產生更好的回應

      簡單拼接 context 及本次輸入句子的方法,因為 RNN 輸入模型的長度增長而減低成效 -> RNN 對於過長輸入資料敏感的問題

      以多層前饋神經網路替代 RNN:多層前饋神經網路的輸出,代表上下文聊天資訊,和目前輸入內容的中間語意表示,Decoder 根據中間語意產生回覆。

      另一種方法:階層式神經網路 Hierarchical Neural Network (HNN),本質類似 Encode-Decoder框架。Encoder 採用二級結構,以第一級句子 RNN(Sentence RNN) 編碼句子的每一個單詞,形成中間語意,第二級句子 RNN 根據上下文句子出現的先後順序序列,對第一級中間語意進行編碼。這個 RNN 稱為 Context RNN

      RNN 對出現在多輪對話的語言片段進行編碼,Context RNN 對時間進行編碼,解碼 RNN 負責對下一個對話回覆進行預測

    • 避免安全回答

      生成式 chatbot 的問題是「安全回答」,例如不管使用者輸入什麼,都回答 I Don't Know、Sure、呵呵、是嗎

      會發生這個現象的原因是,訓練的資料確實包含很多無意義的回答。問題在於訓練資料的詞語在句子不同位置的機率分佈,呈現出明顯的長尾狀況。也就是神經網路回覆陷入局部最佳解,可藉由給模型增加一些干擾,使其跳出局部最佳解。因此就把 Generative Adversarial Network (GAN) 導入聊天回覆生成系統,以解決安全回答的問題

      將系統分為生成器 Generator、判別器 Discriminator 兩個子系統,生成器使用 seq2seq 模型,以前文為輸入,再輸出對話語句,判別器用來判斷前文產生的回答是否接近人類行為。生成器不斷改良答案欺騙判別器,判別器不斷以生成器的回答作為負例。直到兩者收斂。

    • 個性一致問題

      chatbot 會被當作有個性的虛擬人物,該人物必須要有一致的年齡、喜好、習慣、語言風格。

      seq2seq 訓練都是單句資訊對單據回覆的映射關係,沒有統一的個性資訊。利用 seq2seq 很難保持個性資訊一致

      方法:將預定義的個性化資訊,透過 word embedding 方法呈現,仍然採用 seq2seq,也就是把個性資訊匯入 Decoder,

  • 基於知識圖譜的 NLU

    知識圖譜是結構化的語意知識庫,以符號形式描述真實世界存在的各種實體、概念、及其相互關係,其基本單位是「實體-關係-實體」形式的三元組,以及實體及其相關屬性的「屬性-值」對(Attribute-Value Pair、AVP)

    知識圖譜用 global 唯一的識別字來標籤知識圖譜的每個實體或概念。每個「屬性-值」都是對實體內在具體特型的刻畫,利用關係連接兩個實體,描述實體間的關係,構成網路知識結構。知識圖譜可視為一張巨大、包含節點與邊的圖,其中節點表示真實世界的實體或概念,網路的邊代表實體間的各種語意關係,這個圖模型可用 W3C 提出的 Resource Description Framework (RDF) 或屬性圖表示

    知識圖譜是知識表示與推理、資料庫、資訊檢索、自然語言處理等多種技術融合的產物

    • 知識表示

      知識在電腦內儲存和處理格式,一般以三元組表示一筆知識,頭尾實體是圖譜的節點,關係是圖譜的邊。

      知識表示使用的資料結構,最常見的是 graph 和 tree。每個邊和節點都有中繼資料。現有圖形式資料庫的缺點:在知識表示存在侷限,導致專案成本高,無法混合表示結構與非結構化資料。

      知識酷的資料由結構與非結構化資料混合而成,專案上,廣為接受是使用 Tree,其中 JSON 滿足了結構與非結構化混合的需求,是目前最常用的知識表示方式。缺點是無法結合 machine learning

      為解決以上問題,提出基於幾何空間的知識表示方法,每個實體是空間中的一點,關係是平移向量,每個元組都以平移原則作為基本幾何表示形式,頭實體可按照關係向量移動到尾實體。根據這種方法,可設計出基於統計的AI演算法。

    • 知識建構

      結構化資料可用簡單的映射,對應到知識圖譜

      半結構化資料 ex: html,可用 wrapper,提取資訊存放到特定格式的知識圖譜

      非結構化資料,以 text mining 發現文字隱含的模式

    • 知識融合

      由各來源提取知識後,要融合為一個知識庫,融合過程。

      本體 ontology,提供統一的術語字典,構成術語間的關係,根據具體業務建立或修改資料模型的功能

      本體比對演算法:模式比對 schema matching和實例比對 instance matching 兩種

      模式比對 schema matching:尋找本體中屬性和概念之間的對應關係,大規模本體比對一般使用 anchor 技術,將來自兩個本體的相似概念作為起點,根據這兩個相似概念的父概念、子概念,逐漸建構小型的相似片段,進而找出相符的概念。同時利用反覆運算,將新的相符概念作為新的 anchor,再根據 anchor 相關本體的鄰居資訊,建置新的片段。不斷反覆此過程,直到找不到新的相符概念為止。分而治之的方法

      實例比對可評估來自不同異質資料實例對的相似度,評估的結果用來判斷這些實力是否指向特定領域的相同實體。利用 Locality-Sensitive Hashing 提高實例比對的可擴充性方法,與使用向量空間模型表示實例,基於規則採用 inverted index,取得最初相符候選的方法


      chatbot 特殊需求

    • 需要個性化的知識圖譜

    • 需要動態知識圖譜

      要有生活規律,描述生活軌跡

    • 需要刻畫主觀情感的知識圖譜

      回覆時,除客觀事實外,要增加個性化主觀認知的情感元素

    • 要提供 API

    • 要有多媒體知識圖譜

      結合圖片、語音、文字

自然語言生成

分為 pipeline, integrated 兩種

pipeline 個模組間互相獨立,只有輸入、輸出界面。

integrated 系統模組之間緊密結合

integrated 符合人腦設計,但實作困難,現時常用的是 pipeline,有文字規劃(說什麼)、句子規劃(怎麼說)、句法實現(讓句子連貫)三個模組。

chatbot 對話生成技術

  • 檢索式

    由對話資料庫找出最佳回覆,只能用固定語言回覆

  • 生成式

    由 chatbot 創造句子

    • 需要關聯文法結構和應用特有的語意表徵
    • context sensitive,語言要整合時間、地點、位置等資訊
    • 基於 machine learning 產生的回覆很難解釋,難以被理解

基於範本的 NLG

範本由 sentence和 word 組成,是含有變數的 sentence,word 是範本中變數對應的可能值

適合任務驅動的對話系統

  1. 對話管理模組會根據目前的對話狀態,使用者輸入的資料,生成下一步動作的相關資訊,也就是選擇句子範本,及可選的詞彙範本
  2. NLU 需要利用詞彙範本、句子範本、有限狀態機,進行 slot filling 的相關工作

基於深度學習的 NLG

GAN 在電腦視覺,尤其是圖形生成方面有顯著成果。

對話管理

維護更新對話狀態與動作選擇,對話狀態是一種能夠處理聊天資料的表徵。包含所有可能會影響機器下一步決策的資訊。

動作選擇是基於目前狀態,選擇下一步合適的動作,例如向 user 詢問需要補充的資訊,執行要求的動作等等。

ex: user 輸入「幫我給媽媽預定一束花」,接下來可能是

  1. 詢問可接受的價位「請問預期價位如何?」
  2. 確認可接受的價位「像上次買兩百元的花可以嗎?」
  3. 直接預訂「好的,已預訂價值兩百元的紅玫瑰」

模組

  • 對話行為識別

    預先定義或動態產生,使用者對話意圖的抽象表示形式。分為封閉式、開放式兩種。

    封閉式:將對話意圖映射到預先定義好的對話行為類別體系,通常用在特定領域/任務,ex: 設定鬧鐘、票務預訂、酒店預訂

    開放式:對話行為沒有預先定義好的對話行為類別體系,ex: 閒聊系統

  • 對話狀態識別

    狀態跟 context 及對話行為相關,狀態轉移由前一時刻的對話狀態,與目前使用者輸入的對話行為決定

  • 對話策略學習

    讓機器從「人-人」的真實對話資料學習對話的行為與狀態

  • 對話獎勵

    通常將槽位填充效率、回覆流行度等參數納入考量

    基於強化學習的長期獎勵機制


常見的對話管理方法

  1. Finite State Machine FSM

    要人工定義對話系統可能出現的所有狀態,簡單易用,但需要人工設計,無法用於複雜場景

  2. 基於統計

    將對話過程表示為部分可見的馬可夫決策過程,只需要定義決策過程的狀態和動作,機器可透過學習得到不同狀態間的轉移關係

  3. 基於神經網路

    用神經網路學習動作選擇的策略,將自然語言理解的輸出,及其他特徵,都作為神經網路的輸入,把選擇的動作作為神經網路的輸出。需要大量訓練資料,為獲得大規模應用驗證

  4. 基於框架

    slot-value pair

    用於特定領域的對話系統


對話管理的挑戰

  1. 手工編寫的對話策略,難以涵蓋所有對話場景
  2. 基於統計與神經網路的方法,需要大量對話資料
  3. 要求大量的領域知識、對話知識,以產生有意義的回覆

One-shot Learning 和 Zero-shot Learning 可用少量(無)樣本進行訓練,以解決對話系統「冷開機」問題,透過 reward function 學習,不斷增加對話模型

seqGAN 採用對抗網路實作離散序列的生成模型,解決 GAN 難以應用於自然語言處理領域的問題,並可用來選擇最佳的獎勵函數與參數

沒有留言:

張貼留言