
翻譯 | CDA數據分析研究院,轉載需授權
原文 | https://blog.statsbot.co/chatbots-machine-learning-e83698b1a91e
你是否曾與蘋果的Siri,亞馬遜的Alexa,微軟的Cortana或其他助手交談以設置鬧鐘、給朋友打電話或安排會議?許多人可能會說對的我的確這么做過,盡管會話助手在常見和日常任務中都很有用,但很難迫使會話助手就一般性的,有時是哲學性質的話題進行討論。
Statsbot團隊邀請了數據科學家,dmitry Persiyanov,來解釋如何用神經會話模型修復這個問題,以及如何使用機器學習來創建聊天機器人。
通過自然語言與機器交互是通用人工智能的要求之一。人工智能的這一領域被稱為對話系統,語音對話系統或聊天機器人。機器需要為你提供信息豐富的答案,維持對話的上下文,并且難以與人類(理想情況下)區分。
在實踐中,最后一項要求尚未達到,但幸運的是,如果機器人有用,并且是一個有趣的溝通者,可以進行一些有趣的溝通,那么人類就準備好與他們進行對話了。
對話系統目前有兩種主要類型:面向目標(Siri,Alexa,Cortana等)和一般會話(Microsoft Tay bot)。
前者幫助人們使用自然語言解決日常問題,而后者嘗試與人們進行范圍廣泛的對話。
在這篇文章中,我將給出一個基于深度神經網絡的一般會話對話系統進行比較概述。我將描述主要的架構類型和推進它們的方法。
我希望這篇文章最終能成為每個想要用機器學習創建聊天機器人的人的切入點。如果你讀完這篇文章直到最后,你就可以訓練自己的會話模型了。
準備好了么?
讓我們開始吧!
我將參考循環神經網絡和單詞嵌入,所以你應該知道它們是如何工作的,以便輕松地理解這篇文章。
生成和選擇模型
一般會話模型可以簡單地分為兩種主要類型 - 生成模型和選擇性(或排名)模型。此外,混合模型也是可能的。但常見的是,這些模型構思了對話語境的幾個句子并預測了這種語境的答案。在下圖中,你可以看到此類系統的說明。
在這篇文章中,當我說“網絡使用單詞序列”或“單詞被傳遞給RNN”時,我的意思是單詞嵌入被傳遞到網絡,而不是單詞ID。
關于對話數據表示的注釋
在深入討論之前,我們應該討論一下對話數據集是什么樣的。下面描述的所有模型都是成對訓練(上下文,回復)。上下文是在回復之前的幾個句子(可能是一個)。 這個句子只是它的詞匯表中的一系列標記。
為了更好地理解,請查看表格。從兩個人之間的原始對話中提取了三個樣本:
- 嗨! - 嗨,你好。 - 你幾歲? - 二十二。你呢? - 我也是!哇!
請注意批處理中每個句子末尾的“ ”(序列結尾)標記。這個特殊標記有助于神經網絡理解句子的邊界并明智地更新其內部狀態。
某些模型可能會使用來自數據的附加元信息,例如說話者的ID,性別,情感等。
現在,我們準備繼續討論生成模型。
生成模型
我們從最簡單的會話模型開始,“ 神經對話模型”。
為了對對話進行建模,本文采用了一個序列到序列(seq2seq)框架,該框架出現在神經機器翻譯領域,并成功地適應了對話問題。該體系結構由兩個具有不同參數集的RNN組成。左邊的一個(對應于ABC標記)稱為編碼器, 而右邊的一個(對應于 -WXYZ標記)稱為解碼器。
編碼器如何工作的?
編碼器RNN每次構造一個上下文的標記序列,并更新它的隱藏狀態。在處理整個上下文序列之后,它產生一個最終隱藏的狀態,這個隱藏狀態結合了上下文的意義并用于生成答案。
解碼器如何工作?
解碼器的目標是從編碼器獲取上下文表示并生成一個答案。為此目的,在解碼器RNN中維護詞匯上的softmax層。在每個時間步長中,該層采用解碼器隱藏狀態并輸出其詞匯表中所有單詞的概率分布。
以下是生成回復的工作原理:
解碼器中生成回復,適用于那些喜歡公式而不是單詞的人。這里,w_t是時間步長t上采樣的單詞; θ是解碼器參數,phi是密集層參數,g表示密集層,p-hat是時間步長t詞匯表的概率分布。
在生成回復時使用argmax,當使用相同的上下文時,總是會得到相同的答案(argmax是確定性的,而采樣是隨機的)。
我上面描述的過程只是模型推理部分,但也有模型訓練部分,它以稍微不同的方式進行工作 - 在每個解碼步驟,我們使用正確的單詞y_t而不是生成的單詞(w_t)作為輸入。換句話說,在訓練時,解碼器使用正確的回復序列,但刪除了最后一個標記并且標記被預先添加。
解碼器推斷階段的說明。前一時間步長的輸出作為當前時間步長的輸入。
目標是在每個時間步長上最大化限度的提高下一個正確的單詞的概率。更簡單地說,我們要求網絡通過為序列提供正確的前綴來預測序列中的下一個單詞。通過最大似然訓練進行訓練,這導致經典的交叉熵損失:
這里,y_t是在時間步驟t的回復中的正確答案。
生成模型的修改
現在我們對序列到序列框架有了基本的了解。我們如何為這些模型添加更多泛化能力?有很多方法:
生成模型的問題
稍后,我將為你提供流行實現的鏈接,以便你可以訓練自己的對話模型。但現在我想告訴你一些你將面對的生成模型的常見問題。
通用回復
通過極大似然訓練的生成模型傾向于預測一般回復的高概率,例如“好”,“否”,“是”和“我不知道”的廣泛情境。
回復不一致/如何合并元數據
seq2seq模型的第二個主要問題是它們可以為釋義的上下文生成不一致的回復,但具有相同的意義:
最常被引用的與之相關的工作是“ 基于角色的神經對話模型”。作者為每個話語使用說話者的ID來產生答案,這不僅取決于編碼器狀態,還取決于說話者的嵌入。揚聲器嵌入與模型一起從頭開始學習。
使用這個想法,你可以使用你擁有的不同元數據來擴充你的模型。例如,如果你知道說話的時態(過去/現在/將來),你可以在推理時以不同的時態生成回復!你可以調整回復者的性格(性別,年齡,情緒)或回復屬性(時態,情緒,問題/非問題等),同時你有這些數據來訓練模型。
為了你的練習
下面是一些不同框架中的seq2seq模型,如果你可以打開的話,可以看一下,都是一些外網的模型數據之類的。
TensorFlow
論文和指南
深入選擇性模型
完成生成模型之后,讓我們了解選擇性神經對話模型的工作原理(它們通常被稱為DSSM,代表深層語義相似性模型)。
選擇模型不是估計概率p(回復|上下文; w),而是學習相似性函數 - sim(回復,上下文; w),其中回復是預定義的可能答案池中的元素之一(參見下圖)。
直覺是網絡將上下文和候選答案作為輸入,并返回它們彼此之間的可信度。
選擇性(或排名或dssm)網絡由兩個“塔”組成:第一個用于上下文,第二個用于響應。每座塔都可能擁有你想要的任何結構。塔取其輸入并將其嵌入語義向量空間(圖中的向量R和C)。然后,計算上下文和應答向量之間的相似性,即使用余弦相似度。
在推理時,我們可以計算給定上下文和所有可能答案之間的相似性,并選擇具有最大相似性的答案。
為了訓練模型,我們使用三重損失。Triplet loss在triplets上定義(context, replycorrect, replywrong),等于:
選擇性模型的三重損失。它與SVM中的最大邊際損失非常相似。
什么是replywrong?它也被稱為“負面”樣本(replycorrect稱為“正面”樣本),在最簡單的情況下,它是來自答案池的隨機回復。因此,通過最小化這種損失,我們以絕對值不提供信息的排序方式學習相似性函數。但請記住,在推理階段,我們只需要比較所有回復的分數,并選擇一個得分最高的。
選擇模型中的抽樣方案
你可能會問,我們為什么要從數據集中隨機抽取樣本?也許使用更復雜的抽樣方案是個好主意?確實如此。如果你仔細觀察,你可能會發現三元組的數量是O(n3),因此正確選擇負數是很重要的,因為我們無法完成所有這些(大數據,你知道)。
例如,我們可以從池中抽取K個隨機否定回復,對其進行評分,并選擇最高得分的那個作為否定答案。這種方案被稱為“硬負面”開采。如果你想深入挖掘,請閱讀“ 深度嵌入學習中的采樣事項 ”一文。
生成性與選擇性:利弊
此時,我們已經了解了生成模型和選擇模型的工作原理。但是你選擇哪種類型?這完全取決于你的需求。下表是為了幫助你做出決定。
最難的部分是評估
其中一個最重要的問題是如何評估神經對話模型。有許多自動指標用于評估聊天機器人與機器學習:
但是最近的一些研究)表明,所有這些指標都與人類對特定情境的答復適當性的判斷密切相關。
例如,假設你有上下文“Statsbot是否破壞了我們處理數據的方式”?,然后回答“當然是這樣”。但是你的模型會回答例如“這絕對是真的?!敝惖脑拋砘卮鹕舷挛?。上面顯示的所有指標都會給出這樣一個答案的低分,但我們可以看到這個答案與你的數據提供的一樣好。
因此,目前最合適的方法是使用目標指標對模型進行人工評估,然后選擇最佳模型。是的,這似乎是一個昂貴的過程(你需要使用像Amazon Mechanical Turk這樣的東西來評估模型),但是目前我們沒有更好的東西。無論如何,研究界都朝這個方向發展。
為什么我們不能在智能手機中看到它們?
最后,我們準備創建最強大,最智能的會話模型,通用的人工智能,對吧?如果是這樣的話,擁有數千名研究人員的蘋果,亞馬遜和谷歌等公司已經將它們與個人助理產品一起部署。
盡管在這個領域做了很多工作,神經對話系統還沒有準備好在開放領域與人交談,并為他們提供信息/有趣/有用的答案。但至于封閉領域(例如技術支持或問答系統),有成功的案例。
總結
會話模型起初可能看起來很難掌握(而且不僅僅只有一開始)。當你準備練習時,選擇一些簡單的架構,從一個流行的數據集或者自己的數據集(Twitter,Reddit或其他)中選取一個,并在上面訓練一個會話模型。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25