
翻譯 | CDA數(shù)據(jù)分析研究院,轉(zhuǎn)載需授權(quán)
原文 | https://blog.statsbot.co/chatbots-machine-learning-e83698b1a91e
你是否曾與蘋果的Siri,亞馬遜的Alexa,微軟的Cortana或其他助手交談以設(shè)置鬧鐘、給朋友打電話或安排會(huì)議?許多人可能會(huì)說對的我的確這么做過,盡管會(huì)話助手在常見和日常任務(wù)中都很有用,但很難迫使會(huì)話助手就一般性的,有時(shí)是哲學(xué)性質(zhì)的話題進(jìn)行討論。
Statsbot團(tuán)隊(duì)邀請了數(shù)據(jù)科學(xué)家,dmitry Persiyanov,來解釋如何用神經(jīng)會(huì)話模型修復(fù)這個(gè)問題,以及如何使用機(jī)器學(xué)習(xí)來創(chuàng)建聊天機(jī)器人。
通過自然語言與機(jī)器交互是通用人工智能的要求之一。人工智能的這一領(lǐng)域被稱為對話系統(tǒng),語音對話系統(tǒng)或聊天機(jī)器人。機(jī)器需要為你提供信息豐富的答案,維持對話的上下文,并且難以與人類(理想情況下)區(qū)分。
在實(shí)踐中,最后一項(xiàng)要求尚未達(dá)到,但幸運(yùn)的是,如果機(jī)器人有用,并且是一個(gè)有趣的溝通者,可以進(jìn)行一些有趣的溝通,那么人類就準(zhǔn)備好與他們進(jìn)行對話了。
對話系統(tǒng)目前有兩種主要類型:面向目標(biāo)(Siri,Alexa,Cortana等)和一般會(huì)話(Microsoft Tay bot)。
前者幫助人們使用自然語言解決日常問題,而后者嘗試與人們進(jìn)行范圍廣泛的對話。
在這篇文章中,我將給出一個(gè)基于深度神經(jīng)網(wǎng)絡(luò)的一般會(huì)話對話系統(tǒng)進(jìn)行比較概述。我將描述主要的架構(gòu)類型和推進(jìn)它們的方法。
我希望這篇文章最終能成為每個(gè)想要用機(jī)器學(xué)習(xí)創(chuàng)建聊天機(jī)器人的人的切入點(diǎn)。如果你讀完這篇文章直到最后,你就可以訓(xùn)練自己的會(huì)話模型了。
準(zhǔn)備好了么?
讓我們開始吧!
我將參考循環(huán)神經(jīng)網(wǎng)絡(luò)和單詞嵌入,所以你應(yīng)該知道它們是如何工作的,以便輕松地理解這篇文章。
生成和選擇模型
一般會(huì)話模型可以簡單地分為兩種主要類型 - 生成模型和選擇性(或排名)模型。此外,混合模型也是可能的。但常見的是,這些模型構(gòu)思了對話語境的幾個(gè)句子并預(yù)測了這種語境的答案。在下圖中,你可以看到此類系統(tǒng)的說明。
在這篇文章中,當(dāng)我說“網(wǎng)絡(luò)使用單詞序列”或“單詞被傳遞給RNN”時(shí),我的意思是單詞嵌入被傳遞到網(wǎng)絡(luò),而不是單詞ID。
關(guān)于對話數(shù)據(jù)表示的注釋
在深入討論之前,我們應(yīng)該討論一下對話數(shù)據(jù)集是什么樣的。下面描述的所有模型都是成對訓(xùn)練(上下文,回復(fù))。上下文是在回復(fù)之前的幾個(gè)句子(可能是一個(gè))。 這個(gè)句子只是它的詞匯表中的一系列標(biāo)記。
為了更好地理解,請查看表格。從兩個(gè)人之間的原始對話中提取了三個(gè)樣本:
- 嗨! - 嗨,你好。 - 你幾歲? - 二十二。你呢? - 我也是!哇!
請注意批處理中每個(gè)句子末尾的“ ”(序列結(jié)尾)標(biāo)記。這個(gè)特殊標(biāo)記有助于神經(jīng)網(wǎng)絡(luò)理解句子的邊界并明智地更新其內(nèi)部狀態(tài)。
某些模型可能會(huì)使用來自數(shù)據(jù)的附加元信息,例如說話者的ID,性別,情感等。
現(xiàn)在,我們準(zhǔn)備繼續(xù)討論生成模型。
生成模型
我們從最簡單的會(huì)話模型開始,“ 神經(jīng)對話模型”。
為了對對話進(jìn)行建模,本文采用了一個(gè)序列到序列(seq2seq)框架,該框架出現(xiàn)在神經(jīng)機(jī)器翻譯領(lǐng)域,并成功地適應(yīng)了對話問題。該體系結(jié)構(gòu)由兩個(gè)具有不同參數(shù)集的RNN組成。左邊的一個(gè)(對應(yīng)于ABC標(biāo)記)稱為編碼器, 而右邊的一個(gè)(對應(yīng)于 -WXYZ標(biāo)記)稱為解碼器。
編碼器如何工作的?
編碼器RNN每次構(gòu)造一個(gè)上下文的標(biāo)記序列,并更新它的隱藏狀態(tài)。在處理整個(gè)上下文序列之后,它產(chǎn)生一個(gè)最終隱藏的狀態(tài),這個(gè)隱藏狀態(tài)結(jié)合了上下文的意義并用于生成答案。
解碼器如何工作?
解碼器的目標(biāo)是從編碼器獲取上下文表示并生成一個(gè)答案。為此目的,在解碼器RNN中維護(hù)詞匯上的softmax層。在每個(gè)時(shí)間步長中,該層采用解碼器隱藏狀態(tài)并輸出其詞匯表中所有單詞的概率分布。
以下是生成回復(fù)的工作原理:
解碼器中生成回復(fù),適用于那些喜歡公式而不是單詞的人。這里,w_t是時(shí)間步長t上采樣的單詞; θ是解碼器參數(shù),phi是密集層參數(shù),g表示密集層,p-hat是時(shí)間步長t詞匯表的概率分布。
在生成回復(fù)時(shí)使用argmax,當(dāng)使用相同的上下文時(shí),總是會(huì)得到相同的答案(argmax是確定性的,而采樣是隨機(jī)的)。
我上面描述的過程只是模型推理部分,但也有模型訓(xùn)練部分,它以稍微不同的方式進(jìn)行工作 - 在每個(gè)解碼步驟,我們使用正確的單詞y_t而不是生成的單詞(w_t)作為輸入。換句話說,在訓(xùn)練時(shí),解碼器使用正確的回復(fù)序列,但刪除了最后一個(gè)標(biāo)記并且標(biāo)記被預(yù)先添加。
解碼器推斷階段的說明。前一時(shí)間步長的輸出作為當(dāng)前時(shí)間步長的輸入。
目標(biāo)是在每個(gè)時(shí)間步長上最大化限度的提高下一個(gè)正確的單詞的概率。更簡單地說,我們要求網(wǎng)絡(luò)通過為序列提供正確的前綴來預(yù)測序列中的下一個(gè)單詞。通過最大似然訓(xùn)練進(jìn)行訓(xùn)練,這導(dǎo)致經(jīng)典的交叉熵?fù)p失:
這里,y_t是在時(shí)間步驟t的回復(fù)中的正確答案。
生成模型的修改
現(xiàn)在我們對序列到序列框架有了基本的了解。我們?nèi)绾螢檫@些模型添加更多泛化能力?有很多方法:
生成模型的問題
稍后,我將為你提供流行實(shí)現(xiàn)的鏈接,以便你可以訓(xùn)練自己的對話模型。但現(xiàn)在我想告訴你一些你將面對的生成模型的常見問題。
通用回復(fù)
通過極大似然訓(xùn)練的生成模型傾向于預(yù)測一般回復(fù)的高概率,例如“好”,“否”,“是”和“我不知道”的廣泛情境。
回復(fù)不一致/如何合并元數(shù)據(jù)
seq2seq模型的第二個(gè)主要問題是它們可以為釋義的上下文生成不一致的回復(fù),但具有相同的意義:
最常被引用的與之相關(guān)的工作是“ 基于角色的神經(jīng)對話模型”。作者為每個(gè)話語使用說話者的ID來產(chǎn)生答案,這不僅取決于編碼器狀態(tài),還取決于說話者的嵌入。揚(yáng)聲器嵌入與模型一起從頭開始學(xué)習(xí)。
使用這個(gè)想法,你可以使用你擁有的不同元數(shù)據(jù)來擴(kuò)充你的模型。例如,如果你知道說話的時(shí)態(tài)(過去/現(xiàn)在/將來),你可以在推理時(shí)以不同的時(shí)態(tài)生成回復(fù)!你可以調(diào)整回復(fù)者的性格(性別,年齡,情緒)或回復(fù)屬性(時(shí)態(tài),情緒,問題/非問題等),同時(shí)你有這些數(shù)據(jù)來訓(xùn)練模型。
為了你的練習(xí)
下面是一些不同框架中的seq2seq模型,如果你可以打開的話,可以看一下,都是一些外網(wǎng)的模型數(shù)據(jù)之類的。
TensorFlow
論文和指南
深入選擇性模型
完成生成模型之后,讓我們了解選擇性神經(jīng)對話模型的工作原理(它們通常被稱為DSSM,代表深層語義相似性模型)。
選擇模型不是估計(jì)概率p(回復(fù)|上下文; w),而是學(xué)習(xí)相似性函數(shù) - sim(回復(fù),上下文; w),其中回復(fù)是預(yù)定義的可能答案池中的元素之一(參見下圖)。
直覺是網(wǎng)絡(luò)將上下文和候選答案作為輸入,并返回它們彼此之間的可信度。
選擇性(或排名或dssm)網(wǎng)絡(luò)由兩個(gè)“塔”組成:第一個(gè)用于上下文,第二個(gè)用于響應(yīng)。每座塔都可能擁有你想要的任何結(jié)構(gòu)。塔取其輸入并將其嵌入語義向量空間(圖中的向量R和C)。然后,計(jì)算上下文和應(yīng)答向量之間的相似性,即使用余弦相似度。
在推理時(shí),我們可以計(jì)算給定上下文和所有可能答案之間的相似性,并選擇具有最大相似性的答案。
為了訓(xùn)練模型,我們使用三重?fù)p失。Triplet loss在triplets上定義(context, replycorrect, replywrong),等于:
選擇性模型的三重?fù)p失。它與SVM中的最大邊際損失非常相似。
什么是replywrong?它也被稱為“負(fù)面”樣本(replycorrect稱為“正面”樣本),在最簡單的情況下,它是來自答案池的隨機(jī)回復(fù)。因此,通過最小化這種損失,我們以絕對值不提供信息的排序方式學(xué)習(xí)相似性函數(shù)。但請記住,在推理階段,我們只需要比較所有回復(fù)的分?jǐn)?shù),并選擇一個(gè)得分最高的。
選擇模型中的抽樣方案
你可能會(huì)問,我們?yōu)槭裁匆獜臄?shù)據(jù)集中隨機(jī)抽取樣本?也許使用更復(fù)雜的抽樣方案是個(gè)好主意?確實(shí)如此。如果你仔細(xì)觀察,你可能會(huì)發(fā)現(xiàn)三元組的數(shù)量是O(n3),因此正確選擇負(fù)數(shù)是很重要的,因?yàn)槲覀儫o法完成所有這些(大數(shù)據(jù),你知道)。
例如,我們可以從池中抽取K個(gè)隨機(jī)否定回復(fù),對其進(jìn)行評分,并選擇最高得分的那個(gè)作為否定答案。這種方案被稱為“硬負(fù)面”開采。如果你想深入挖掘,請閱讀“ 深度嵌入學(xué)習(xí)中的采樣事項(xiàng) ”一文。
生成性與選擇性:利弊
此時(shí),我們已經(jīng)了解了生成模型和選擇模型的工作原理。但是你選擇哪種類型?這完全取決于你的需求。下表是為了幫助你做出決定。
最難的部分是評估
其中一個(gè)最重要的問題是如何評估神經(jīng)對話模型。有許多自動(dòng)指標(biāo)用于評估聊天機(jī)器人與機(jī)器學(xué)習(xí):
但是最近的一些研究)表明,所有這些指標(biāo)都與人類對特定情境的答復(fù)適當(dāng)性的判斷密切相關(guān)。
例如,假設(shè)你有上下文“Statsbot是否破壞了我們處理數(shù)據(jù)的方式”?,然后回答“當(dāng)然是這樣”。但是你的模型會(huì)回答例如“這絕對是真的。”之類的話來回答上下文。上面顯示的所有指標(biāo)都會(huì)給出這樣一個(gè)答案的低分,但我們可以看到這個(gè)答案與你的數(shù)據(jù)提供的一樣好。
因此,目前最合適的方法是使用目標(biāo)指標(biāo)對模型進(jìn)行人工評估,然后選擇最佳模型。是的,這似乎是一個(gè)昂貴的過程(你需要使用像Amazon Mechanical Turk這樣的東西來評估模型),但是目前我們沒有更好的東西。無論如何,研究界都朝這個(gè)方向發(fā)展。
為什么我們不能在智能手機(jī)中看到它們?
最后,我們準(zhǔn)備創(chuàng)建最強(qiáng)大,最智能的會(huì)話模型,通用的人工智能,對吧?如果是這樣的話,擁有數(shù)千名研究人員的蘋果,亞馬遜和谷歌等公司已經(jīng)將它們與個(gè)人助理產(chǎn)品一起部署。
盡管在這個(gè)領(lǐng)域做了很多工作,神經(jīng)對話系統(tǒng)還沒有準(zhǔn)備好在開放領(lǐng)域與人交談,并為他們提供信息/有趣/有用的答案。但至于封閉領(lǐng)域(例如技術(shù)支持或問答系統(tǒng)),有成功的案例。
總結(jié)
會(huì)話模型起初可能看起來很難掌握(而且不僅僅只有一開始)。當(dāng)你準(zhǔn)備練習(xí)時(shí),選擇一些簡單的架構(gòu),從一個(gè)流行的數(shù)據(jù)集或者自己的數(shù)據(jù)集(Twitter,Reddit或其他)中選取一個(gè),并在上面訓(xùn)練一個(gè)會(huì)話模型。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03