Categories
程式開發

Passage.AI如何構建智能對話接口


本文要點

  • 創建用戶和機器人之間交互的思維導圖。
  • 構建交互工作流,使其更具對話性和個性化。
  • 自然語言理解(NLU,Natural Language Understanding)支持用戶以自然語言交流。
  • 用戶要傳遞信息,或是執行某個任務時,可能需要多輪交互。
  • 只需構建和設計機器人一次,就可以將其部署到多個平台。

近些年,智能音箱和對話設備的應用日漸普及。當前,有超過6600萬的美國成年人擁有智能音箱。也就是說,有近四分之一的美國人正在與設備對話。儘管此類智能設備已惠及芸芸眾生,但其巨大潛力剛嶄露頭角。

Passage AI公司考量及此,推出了支持企業構建智能會話應用和技能的平台。

本文將提綱挈領地介紹實現對話AI的底層支撐技術。

為對話設備開發企業級技能,主要涉及三個層面:

  1. 交互流(Interaction Flow)。交互流定義並構建用戶交互,以實現用戶設定的目標,或是實現答疑解惑。
  2. 自然語言理解(NLU,Natural Language Understanding)。 NLU支持機器人(bot)理解自然語言,並以自然語言作出響應。 NLU包括意圖分類、語義槽填充(slot filling)、語義搜索、自動問答、情感理解和響應生成等。
  3. 部署(Deployment)。一旦在接口中定義、構建並添加了NLU,就可將接口加入到各種會話渠道中,包括Google HomeMicrosoft CortanaAmazon Echo等對話設備,還包括Facebook MessengerAndroid Business MessagingSlack等消息應用,乃至集成在網站中的彈出式會話終端。

一、交互流

交互流是用戶與機器人(即會話界面)間交互的思維導圖。我們發現,預先設計交互流,非常有助於其實際構建。這需要我們在設計時做出更寬泛的考量,不僅考慮稱為“基本邏輯”(happy path)的設定交互(也就是希望用戶發起的交互),而且需補全基本邏輯之外的交互。下圖給出一個示例交互流。其中,我們不僅設計了基本邏輯,還額外設計了更複雜的交互流。

Passage.AI如何構建智能對話接口 1

圖1:左圖為基本邏輯流,右圖給出了更複雜的交互流。

下面列出我們在設計對話交互流中獲得的主要經驗:

使交互流更具對話性和個性化。智能對話機器人不應像個機器人那樣。在配置上,機器人應可從列表中隨機選擇會話,而非重複同樣的消息。另一個做法是在對話界面中引入一些個性化。人們是與對話界面閒聊或交談。因此在一開始不要只會說“嗨,我能為您提供什麼幫助?”。而應使其更具個性,諸如“王先生,您好,週末快樂。今天我能為您做什麼?”

Passage.AI如何構建智能對話接口 2

圖2:使交互流更具對話性和個性化。

掌握語境(context)。機器人需生成的響應,不僅取決於用戶的歷史消息,還取決於具體的語境。語境包括許多內容,例如:機器人與用戶之間的歷史對話;平台的模態(Modality),是基於語音的,還是基於文本的;用戶對產品的知識或經驗,是小白用戶,還是重度用戶;以及用戶在整個對話流程中所處的位置。

Passage.AI如何構建智能對話接口 3

圖3:使用語境生成機器人響應。

合理地處理錯誤實例。對話接口不可能完全了解我們的世界,因此難免會犯一些錯誤。下面給出一些小技巧,可最小化錯誤發生的機率,甚至是消除錯誤:

  1. 盡可能從已有的用戶對話歷史中獲取信息。
  2. 機器人如果需要進一步信息,以提問確認方式提出。
  3. 以合理方式告知用戶,機器人並未理解你的意思。

對話工作流的構建單元

完成交互定義後,下一步就是構建對話工作流。其中包括使用意圖、變量、WebHook等抽象調用API;使用決策樹排除故障;以及使用知識庫實現問答。

意圖(Intent)。意圖獲取用戶信息的底層含義,它是所有對話接口的基本構建單元。意圖可包括用於執行具體動作的關鍵字、變量和WebHook。關鍵字是用戶用於表達意圖的各種短語。構成意圖的各種關鍵字,以及已標記的真實用戶消息,將構成分類意圖的訓練數據(詳細說明,參見本文第二節“自然語言處理”)。對於客戶服務而言,我們可以定義“跟踪訂單”的意圖,與”客戶服務代理”進行對話。

變量(Variable)。變量定義了對話接口需從用戶獲取的輸入,用於執行意圖。例如,為了跟踪一個網購訂單,我們需要從用戶處獲取訂單ID。一旦確定了意圖,並獲得了所需的變量,就可執行特定操作。這時,我們可以給出一個Webhook執行API調用,獲取訂單的狀態。

決策樹(Decision Tree)。許多用例需要做故障排除,給出特定決策,並對用戶的各種信息提供方式做出響應。決策樹提供了一種解決此類問題的好方法。定義決策樹和控制流的方式,是工作流定義的重要組成單元。

知識庫(Knowledge Base)。在客戶服務實例中,對話代理需要解答客戶提出的問題。知識庫提供了一種根據輸入常見問題(FAQ)給出正確解答的方法。

二、自然語言處理(NLP)

本節介紹對話AI的各構建模塊,包括意圖分類、語義槽填充、語義搜索和機器閱讀理解等。在深入介紹這些構建模塊之前,我們先給出對深度學習和嵌入的基本介紹。

深度學習(Deep Learning)。傳統的機器學習中,大量時間都被用於手工調整特徵。例如,某個詞是否為停用詞、是屬於國家特徵還是位置特徵。由學習得到的模型或函數,將組合各個特徵給出響應預測。典型的經典機器學習技術包括邏輯斯蒂回歸(LR)梯度提升決策樹(GBDT)等。有別於此,深度學習不需要手工調整特徵。它將原始輸入表示為向量,模型將學習該向量元素間的各種相互作用情況,調整權重,並給出預測響應。

深度學習已成功地應用於各種自然語言處理(NLP)任務,包括文本分類、信息抽取、語言翻譯等。 NLP深度學習應用中使用的兩個關鍵技術,分別是嵌入(Embedding),以及長短時記憶網絡(LSTM,Long-Short Term Memory Network)等循環神經網絡(RNN,Recurrent Neural Network)。

嵌入。嵌入將句子轉化為向量,它是所有NLP深度學習應用的第一步。現有四種嵌入技術:

  1. 非語境詞嵌入(non-contextual word embedding);
  2. 語境詞嵌入(contextual word embedding);
  3. 句子嵌入(sentence embedding);
  4. 子詞嵌入(subword embedding)。

廣為使用的非語境詞嵌入技術包括GloVeWord2Vec。 Word2Vec是谷歌最早在2013年提出的詞嵌入技術,是第一種被廣泛使用的此類技術。其核心理念是將相似詞映射為高維空間中的相似向量,使向量間具有很高的相似度(相似度可通過點積或餘弦相似度衡量)。

Passage.AI如何構建智能對話接口 4

圖4:谷歌研究人員在開發Word2Vec中附帶給出了一個很有意義的發現,即該技術支持類比運算(analogy)。例如,“King”的詞向量減去“Man”的詞向量,再加上“Woman”的詞向量,所得到的詞向量與“Queen”的詞向量具有很高的相似度。

為在很深層上訓練Word2Vec模型,我們使用了維基百科這樣的大型語料庫,將語料轉換為單詞對的列表。例如,在採用窗口寬度為1的情況下,句子“I want to track my order”將轉換為((I, want), (want, to), (want, I), (to, track), ( to, want), (track, my), (track, to),…)。之後,每個單詞轉換為一個獨熱(one-hot)向量,輸入到神經網絡。輸入進而將投影到較低維度的空間,形成嵌入,再投影回一個語料庫規模的向量。這時,可採用softmax給出目標單詞的預測。大多數情況下,“track”和“find”這樣的詞會具有相似的預測,因此會被投影到相似的嵌入。也就是說,“track”和“find”的餘弦相似度很高。

Passage.AI如何構建智能對話接口 5

圖5:Word2Vec訓練架構。圖片引用自Chris McCormick的博客帖子

儘管Word2Vec廣為使用,但它並非語境相關的,即在不同語境中使用的同一單詞,將具有同樣的向量表示。最近,ElMoBERT等語境詞向量得到廣泛關注。這些技術源自於稱為“語言建模”的NLP系列問題。語言建模根據某個單詞的周圍單詞,學習該單詞出現的可能性。例如,單詞“play”可以表示參與某項運動,根據語境也可以表示戲劇表演。 BERT的巨大成功可歸因於雙向語言模型,儘管大多數嵌入工作是在單向語言模型的淺層連接(包括正向和反向)上進行的。在BERT使用的雙向語言模型中,句子中的某些特定單詞是被遮掩(mask)的,語言模型盡量對此給出預測。這樣,預測架構對於下游任務保持恆定和易用。

另一種最新提出的嵌入技術是句子嵌入,即將整個句子都嵌入到向量中。儘管詞嵌入的功能非常強大,但是有時很難從一個句子的多個單詞中得到該句子的向量表示。對詞向量求平均、最大值或求和等基本操作只能給出一個近似值,在實踐中效果不佳。一種廣為使用的句子嵌入技術稱為“思想跳躍向量”(skip-thought vectors)。該技術採用word2vec技術,並將其應用於句子,從而在高維空間中將相似的句子嵌入為相似的向量。

長短期記憶網絡(LSTM)。對於NLP在深度學習的應用,另一項重要技術是遞歸神經網絡(RNN)。 LSTM是一種RNN變體,已成功應用於文本分類等多種有監督NLP任務。 LSTM是一種特殊的RNN,它能夠學習單詞之間的長期依存關係,並避免了出現梯度消失等問題。 LSTM通過使用一種稱為“門控”(gating)的機制來實現。門控允許信息有選擇性地通過。 LSTM給出了三個門,即輸入門,輸出門和遺忘門(forget gate)。

  • 遺忘門決定了多少信息必須從上一個單元狀態流過;
  • 輸入門決定了多少信息必須從當前輸入和先前的隱藏狀態流過;
  • 輸出門決定了多少信息必須流向當前隱藏狀態。

Passage.AI如何構建智能對話接口 6

圖6:LSTM的單元(Cell)圖。

給定一個句子,文本分類的目的是給出該句子是否屬於任一設定的類別。解決文本分類的一種標準方法,是獲取文本的句子表示形式(即固定大小的向量),並使用該表示形式選擇類別。根據句子獲取固定大小的向量有很多方法,其中一種標準做法是將消息的單詞嵌入形式饋入到雙向LSTM(Bi-LSTM),並以輸出的最後一層作為句子的表示形式。

Passage.AI如何構建智能對話接口 7

圖7:LSTM層的展開(Unrolling)。

雖然意圖檢測是一個文本分類問題,但是語義槽填充和信息抽取屬於稱為一類稱為“序列標記”的問題。序列標記為句子中的每個單詞或標記分配一個標籤,目標是為每個單詞給出正確的標籤預測。如上所述,我們可以將句子輸入雙向LSTM,給出每個單詞的標籤預測。

如何基於FAQ等知識庫建立對話接口,是客戶服務領域的常見問題。針對此類問題,我們給出大量“問題-答案”對,目的是正確匹配用戶消息和正確解答。解決此問題的一種方法,就是使用傳統的信息檢索(IR)方法。其中,用戶消息是“查詢”,FAQ是語料庫。為加速檢索性能,可在語料庫上創建帶有發布列表的倒排索引,並使用TF-IDF等傳統的評分技術給出評分。儘管這些技術可幫助我們檢索到最相關的答案,但時常會在對話接口上耗費過多的時間。

“機器閱讀理解”和“問答”輸入一段文本或語境,以及一個查詢,目標是識別問題回答的文本部分。為在語境或文本片段中找出解答,有研究提出組合使用LSTM網絡和注意力模型(attention model)。該研究提出,在較高層上通過詞嵌入和字符嵌入,將文本的語境或段落饋入到LSTM層,對查詢或問題也做同樣操作。然後根據語境計算計算成對(pairwise)查詢。根據查詢計算注意力,進而再次用於雙向LSTM網絡,獲得文本片段形式的解答的起始和結尾。目前,該研究領域非常活躍。最近幾年中,機器閱讀理解已經取得了長足進步。

對話理解或對話狀態跟踪也同樣是非常活躍的研究領域。在很多情況下,用戶並非一次就能給出完成任務所需的全部信息。機器人必須與用戶交談,並導引用戶去完成跟踪訂單等各種任務。如何保持對話的“狀態”,並從不同的消息集中抽取信息,是實現對話理解的關鍵。此類技術支持用戶多輪交互,更改其中某些變量的值,無縫地完成任務。

三、部署

對話平台正與日俱增,例如Google Assistant、Amazon Echo、Facebook Messenger、Apple iMessage、Slack、Twilio、Samsung Bixby,甚至包括傳統的IVR。隨著此類平台數量的增加,為不同的平台構建獨立的機器人無疑成為開發人員的噩夢。客觀上,我們需要構建可與所有這些平台集成的中間件。其中面臨的挑戰,是需了解各接口間的差異和相似之處,並且還要跟上各個平台的不斷變化。

此外,還需關注機器人版本控制和機器人測試。 App Store和Google Play Store等應用開發平台可維護應用的不同版本。同樣,機器人開發平台也需要維護機器人的不同版本。版本控制支持開發人員輕鬆地實現更改回滾,掌握已部署更改的歷史記錄。但是機器人測試並非易事,因為機器人的響應不僅取決於用戶消息,還取決於具體的語境。在端到端測試之外,還可單獨測試NLU等子組件,以簡化調試,加快迭代速度。

結束語

本文概要介紹了智能對話接口的構建模塊。對話AI是一個新興的領域,一些最佳實踐也在不斷地發展。我們憧憬在未來,智能對話接口將能夠與所有設備開展對話、指引汽車控制各種功能、實現虛擬助理並預訂下次旅程。此外,當人們致電互聯網服務提供商的客戶服務時,虛擬助手可立即給出準確地回答。

參考文獻

作者簡介

Kaushik Rangadurai是一位早期加入Passage AI的工程師,主要從事對話和自然語言理解。他擁有8年以上為LinkedIn和Google等企業開發AI驅動產品的經驗。此前,他在位於亞特蘭大的喬治亞理工學院獲得計算機科學碩士學位,研究方向是機器學習。

Mitul Tiwari是Passage.AI的CTO和聯合創始人。他的專業領域是使用AI、機器學習和大數據技術構建數據驅動產品。此前,他曾任LinkedIn的“People You May Know and Growth Relevance”項目主管,引領大型社交推薦系統的技術創新。在任職LinkedIn之前,他曾在Kosmix(現Walmart Labs)從事Web規模文檔和查詢分類。 Tiwari在德克薩斯大學奧斯汀分校獲計算機科學博士學位,在孟買的印度理工學院獲本科學位。他作為合作作者在KDD、WWW、RecSys、VLDB、SIGIR、CIKM和SPAA等頂級會議發表論文20餘篇。

原文鏈接:

Building Intelligent Conversational Interfaces