域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過
追一科技首席科學(xué)家楊振宇
相比于語音和圖像,自然語言是一個(gè)有「更多需求」和「更少標(biāo)準(zhǔn)答案」的領(lǐng)域。扎根自然語言的公司通常也不是從技術(shù)和方法出發(fā),而是選擇一個(gè)具體的需求,然后用所有可能的方法解決它。追一就是這樣的一家公司,它瞄準(zhǔn)的是「對(duì)話機(jī)器人」這個(gè)領(lǐng)域,把問題分類、分解、逐個(gè)建立準(zhǔn)確高效的機(jī)器人,再有序集成起來。三月,機(jī)器之心有幸在深圳追一科技總部對(duì)首席科學(xué)家楊振宇進(jìn)行了采訪,我們仔細(xì)聊了聊「對(duì)話機(jī)器人是怎樣煉成的」,以及在他眼里,深度學(xué)習(xí)與自然語言最好的結(jié)合方式是怎樣的。
對(duì)話機(jī)器人需要解決的問題是如何分類的?
對(duì)話機(jī)器人是一個(gè)相對(duì)比較復(fù)雜的系統(tǒng),由許多個(gè)模塊組成。其中最核心的模塊就是語義理解,理解用戶想要表達(dá)什么意思。而在利用深度學(xué)習(xí)處理商業(yè)對(duì)話機(jī)器人的語義理解問題方面,追一是國內(nèi)最早的一家。
根據(jù)服務(wù)類型,對(duì)話機(jī)器人可以分為FAQ咨詢、資料查詢、任務(wù)型和閑聊四種,涉及的自然語言處理問題也各不相同。
對(duì)于 FAQ 咨詢來說,模塊的輸出對(duì)應(yīng)知識(shí)庫里的一個(gè)知識(shí)點(diǎn)。解決問答就像解決一個(gè)大型分類問題,機(jī)器人要將用戶的需求對(duì)應(yīng)到知識(shí)庫里的某一個(gè)答案。
知識(shí)庫里的知識(shí)點(diǎn)數(shù)量少則幾百個(gè),多則上萬個(gè)。而根據(jù)知識(shí)庫大小不同,適用的模型結(jié)構(gòu)也會(huì)有所不同。例如,銀行類客戶通常有多個(gè)復(fù)雜的業(yè)務(wù)線,知識(shí)庫規(guī)模也是數(shù)以萬計(jì),直接對(duì)幾萬個(gè)知識(shí)點(diǎn)進(jìn)行分類是難以取得高準(zhǔn)確率的,因此,機(jī)器人會(huì)采用分層處理的方法,先判定問題與哪一個(gè)大領(lǐng)域相關(guān),再進(jìn)行詳細(xì)的知識(shí)點(diǎn)分類。
資料查詢類對(duì)話需要從客戶的輸入里判定兩件事:意圖和實(shí)體。比如「A 公司的市盈率是多少?」這個(gè)問句里,就包含了意圖「市盈率」和實(shí)體「A 公司」。成功獲得這兩個(gè)信息后,機(jī)器人會(huì)去一個(gè)結(jié)構(gòu)化的數(shù)據(jù)庫里做查詢。得到答案后,按照一個(gè)預(yù)定義的格式化模板填充后返回給客戶。
資料查詢的一個(gè)難點(diǎn)是,用戶在連續(xù)發(fā)問時(shí),不會(huì)每次都重復(fù)自己的意圖和實(shí)體,比如用戶會(huì)在詢問「A 公司的市盈率是多少?」之后,追問說,「那 B 公司的呢?」或者「那市凈率呢?」。這時(shí),系統(tǒng)就需要通過上下文管理,對(duì)意圖和實(shí)體這些要素進(jìn)行繼承或切換。用戶的提問到來之后,首先進(jìn)行判斷:用戶在這一句中是否提供了某一要素?如果沒有,則嘗試從前文追溯繼承;如果有,再判斷用戶是否進(jìn)行了意圖(實(shí)體)轉(zhuǎn)移,如果是,則需要進(jìn)行對(duì)應(yīng)更新。
另一個(gè)難點(diǎn)是,用戶可能不會(huì)直接說出實(shí)體全稱,無法進(jìn)行精準(zhǔn)的、基于規(guī)則的匹配。因此,機(jī)器人需要結(jié)合特定用戶的歷史記錄和用戶群體的統(tǒng)計(jì)信息,通過學(xué)習(xí)的方法計(jì)算詞與詞之間轉(zhuǎn)移的概率,然后進(jìn)行模糊匹配。
任務(wù)型對(duì)話是當(dāng)下比較流行的一種交互形式,機(jī)器人試圖以對(duì)話的形式來執(zhí)行訂機(jī)票、查賬單、買理財(cái)?shù)热蝿?wù)。任務(wù)型和資料查詢類對(duì)話有相似之處:它們同樣要從用戶處獲得兩類信息:意圖和「元素」。區(qū)別在于,確定意圖后,任務(wù)型機(jī)器人需要主導(dǎo)對(duì)話:它要理清進(jìn)行特定任務(wù)所必要的元素有哪些,并以對(duì)話的形式確保用戶提供了所有元素。以訂機(jī)票舉例,用戶說「幫我訂明天北京到上海的機(jī)票」,那么機(jī)器人在明確了任務(wù)是「訂機(jī)票」之后,就要理清,用戶已經(jīng)提供的元素有時(shí)間、出發(fā)地、到達(dá)地,尚未提供的元素有艙位偏好、時(shí)間偏好、特定機(jī)場(chǎng)偏好等。只有獲得了全部所需元素,機(jī)器人才能「執(zhí)行任務(wù)」。
最后一類是閑聊,與陪護(hù)機(jī)器人的閑聊功能不同,穿插在查詢、咨詢問答或任務(wù)交互之間的閑聊,需要結(jié)合上下文一起識(shí)別。有時(shí),一句話單獨(dú)看是閑聊的意圖,但結(jié)合上下文一起看則屬于查詢、咨詢問答或任務(wù)交互的一部分。這種場(chǎng)景下的閑聊不僅要識(shí)別準(zhǔn),而且要保證上下文對(duì)話的流暢性,也非常有挑戰(zhàn)。
一個(gè)對(duì)話機(jī)器人系統(tǒng)通常由哪些模塊組成?
如前所述,系統(tǒng)是由FAQ咨詢、資料查詢、任務(wù)型和閑聊等不同類型的機(jī)器人組成的。除此之外,還有一個(gè)中控模塊,是系統(tǒng)的管理控制中樞。
中控負(fù)責(zé)依據(jù)用戶當(dāng)前問句和歷史會(huì)話記錄,初步判斷當(dāng)前問題應(yīng)該由哪個(gè)機(jī)器人來回答,然后下發(fā)給一個(gè)或多個(gè)下游機(jī)器人。下游機(jī)器人處理后,將答案以及對(duì)應(yīng)的置信度返回給中控,中控根據(jù)下游返回的信息進(jìn)行決策后,將最合適的響應(yīng)返回給用戶。
對(duì)話機(jī)器人上線后效果如何持續(xù)運(yùn)營優(yōu)化?
對(duì)話機(jī)器人可能發(fā)生的誤判有兩種不同形式。
一種是「系統(tǒng)知道自己可能犯錯(cuò)」:某一請(qǐng)求雖然分配給了特定機(jī)器人,但是機(jī)器人給出的最佳回答的置信度仍然很低,換言之,該回答能夠滿足用戶請(qǐng)求的可能性很小。此時(shí),中控會(huì)進(jìn)行重新判斷:其他機(jī)器人是否有置信度更高的回答?如果仍然無法找到置信度足夠高的答案,系統(tǒng)會(huì)啟動(dòng)拒絕識(shí)別機(jī)制,即,系統(tǒng)判斷自己無法回答這一問題,返回給用戶一個(gè)通用話術(shù),如「十分抱歉,您的問題我暫時(shí)回答不了」,然后記錄下問題,定期推送給機(jī)器人運(yùn)營人員通過數(shù)據(jù)標(biāo)注、知識(shí)庫擴(kuò)充等手段進(jìn)行迭代優(yōu)化。
另一種則是「系統(tǒng)很自信,但還是回答錯(cuò)了」。這類錯(cuò)誤要通過分析用戶的反饋來發(fā)現(xiàn),比如用戶選擇點(diǎn)「踩」或者繼續(xù)提問,都意味著他們的需求可能沒有得到滿足。系統(tǒng)會(huì)結(jié)合分析結(jié)果把這種疑似錯(cuò)誤的回答挑出來,形成一個(gè)叫做「質(zhì)檢」的任務(wù),交給客戶的質(zhì)檢人員判斷并標(biāo)注,補(bǔ)充進(jìn)訓(xùn)練集進(jìn)行迭代優(yōu)化。與此同時(shí),客戶也擁有能夠進(jìn)行即時(shí)調(diào)整的人工干預(yù)工具:如果客戶需要立刻對(duì)某個(gè)錯(cuò)誤答案進(jìn)行調(diào)整時(shí),可以利用這個(gè)工具找到導(dǎo)致錯(cuò)誤答案的影響因素,通過對(duì)這些影響因素的調(diào)整來達(dá)到即時(shí)生效的干預(yù)效果。
對(duì)于機(jī)器人的優(yōu)化來說,極其重要的一點(diǎn)是在系統(tǒng)層面有完整的反饋學(xué)習(xí)機(jī)制,能夠讓機(jī)器人收集可能的錯(cuò)誤情景,以及特定場(chǎng)景下的正確回答信號(hào),然后利用這些數(shù)據(jù)和信號(hào)建立正反饋機(jī)制。
總體來說,通過初始化教育和持續(xù)運(yùn)營優(yōu)化,機(jī)器人一般能夠達(dá)到綜合準(zhǔn)確率 95% 的效果,這樣就會(huì)獲得比較好的對(duì)話體驗(yàn)了。
自然語言處理的業(yè)界與學(xué)界:鴻溝與啟發(fā)
對(duì)于學(xué)界而言,最好的研究是用新方法解決新問題,其次是用新方法解決老問題,最次是用老方法解決老問題。而工業(yè)界的衡量標(biāo)準(zhǔn)則截然不同,工業(yè)界的出發(fā)點(diǎn)是以需求為核心,無論什么方法,能落地提供極致體驗(yàn)的就是好方法。
舉個(gè)例子,業(yè)界的系統(tǒng)是需要給客戶提供快速干預(yù)工具的:一個(gè)無法調(diào)整的、干預(yù)不了的系統(tǒng)是不合格的。出于對(duì)企業(yè)形象的重視,客戶需要能夠監(jiān)控機(jī)器的效果、需要在發(fā)現(xiàn)問題之后能夠?qū)崟r(shí)干預(yù)、需要定期檢查用戶反饋,讓反饋數(shù)據(jù)作為新的監(jiān)督信號(hào)進(jìn)一步優(yōu)化模型。業(yè)界搭建的優(yōu)秀系統(tǒng)要有自適應(yīng)的閉環(huán)和流動(dòng)性,這是學(xué)界很少會(huì)考慮的事情。
另外,業(yè)界也需要更多地考慮系統(tǒng)上線時(shí)的資源限制問題。比如在自然語言領(lǐng)域里一個(gè)典型的測(cè)試環(huán)境,斯坦福的 SQuAD 數(shù)據(jù)集上,現(xiàn)在學(xué)界里效果最好的做法是把數(shù)十個(gè)不同的模型集成在一起,然而這種做法是很難在工業(yè)界大規(guī)模應(yīng)用的。工業(yè)界要考慮成本、客戶在云端的算力、用戶從提問到得到反饋的時(shí)間等種種限制,集成少數(shù)幾個(gè)模型也許是可行的,但是集成幾十個(gè)高代價(jià)的模型是不切實(shí)際的。
當(dāng)然,業(yè)界也在持續(xù)關(guān)注學(xué)界的新方法,希望得到方法論上的啟示。
例如,深度強(qiáng)化學(xué)習(xí)的飛速發(fā)展也會(huì)讓我們關(guān)注:能否依靠數(shù)據(jù)驅(qū)動(dòng),端到端地訓(xùn)練具有工業(yè)應(yīng)用價(jià)值的任務(wù)型機(jī)器人?能否在有了足夠多數(shù)據(jù)之后,把對(duì)話信息看做狀態(tài),用深度強(qiáng)化學(xué)習(xí)的方法學(xué)習(xí)一個(gè)對(duì)話策略出來呢?
另外,閱讀理解領(lǐng)域的發(fā)展也讓我們看到了不是基于「知識(shí)庫」而是基于「文檔庫」進(jìn)行回答的可能性。例如,一個(gè)特定問題的答案可能在某個(gè)文檔里,如何構(gòu)建一個(gè)深度學(xué)習(xí)系統(tǒng),根據(jù)某一問題,定位到特定的文檔,再從文檔中把信息提煉出來用以回答這個(gè)問題?
元啟發(fā)式優(yōu)化算法是否能與深度學(xué)習(xí)模型結(jié)合?
我個(gè)人的研究背景是計(jì)算智能(Computational Intelligence),在2015年之前的近10年里,主要關(guān)注如何應(yīng)用計(jì)算智能中的元啟發(fā)式優(yōu)化算法求解大規(guī)模復(fù)雜優(yōu)化問題。這是一類基礎(chǔ)性的研究難題,長(zhǎng)期受到關(guān)注,比如我大約10年前的一個(gè)關(guān)于演化優(yōu)化算法的工作,到現(xiàn)在已經(jīng)被引用500多次了,而且現(xiàn)在還在逐漸增加,偶爾還會(huì)收到同行提出算法代碼需求的郵件。隨著算力的持續(xù)提升,也許元啟發(fā)式算法在不久的將來會(huì)成為人工智能領(lǐng)域新的寵兒,我個(gè)人也非常關(guān)注它與深度學(xué)習(xí)結(jié)合的可能。
元啟發(fā)式算法的最大的優(yōu)點(diǎn)在于不要求目標(biāo)函數(shù)可導(dǎo),通用性強(qiáng)?,F(xiàn)在,為了求解方便,建模時(shí)往往會(huì)對(duì)實(shí)際應(yīng)用的真實(shí)目標(biāo)做一些簡(jiǎn)化,使得該目標(biāo)函數(shù)可導(dǎo),以便可以用現(xiàn)成的梯度下降算法求解。然而這往往不是最優(yōu)方案:一方面建模的簡(jiǎn)化一般會(huì)引入求解效果上限的損失;另一方面梯度下降算法不能保證獲得全局最優(yōu)解,往往只會(huì)收斂到一個(gè)極值。
元啟發(fā)式優(yōu)化算法是一個(gè)啟發(fā)式框架,一般是設(shè)計(jì)一些通用的、對(duì)問題的依賴沒有那么強(qiáng)的啟發(fā)式策略,使算法更容易收斂到全局最優(yōu)解。元啟發(fā)式優(yōu)化算法的缺點(diǎn)在于算法對(duì)計(jì)算能力的要求比較高。這主要是因?yàn)樘荻认陆邓惴ㄓ忻鞔_方向,只要朝著這一個(gè)方向下降就可以了,而元啟發(fā)式算法,如其中的「主流分支演化算法」,用的方法則是試錯(cuò)法(trial-and-error),需要在空間里進(jìn)行大量的采樣、評(píng)估,再?zèng)Q策接下來去何處繼續(xù)采樣更有獲得全局最優(yōu)解的潛力。這個(gè)過程是非常消耗算力的。
現(xiàn)在,學(xué)界的關(guān)注重點(diǎn)是能否用局部?jī)?yōu)化的思想減少采樣點(diǎn)的數(shù)量,以及能否提高采樣、評(píng)估的并行化執(zhí)行能力。
此外,元啟發(fā)式算法還有一個(gè)梯度下降無論如何也做不到的優(yōu)勢(shì),就是有希望進(jìn)行結(jié)構(gòu)的優(yōu)化。如今神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)是全部由人來設(shè)計(jì)的,未必或者極有可能不是最優(yōu)的。利用元啟發(fā)式算法能夠讓機(jī)器在卷積層、循環(huán)層、全連接層等不同開放組合結(jié)構(gòu)構(gòu)成的空間中進(jìn)行搜索,組裝出一個(gè)針對(duì)特定問題效果最好的結(jié)構(gòu)。這個(gè)方向一般叫做Neuroevolution,正逐漸引起越來越多的學(xué)界和業(yè)界的關(guān)注。
應(yīng)用深度學(xué)習(xí)帶來了哪些不同?
在中控的排序模型里,深度學(xué)習(xí)模型能夠提供含有大量信息的強(qiáng)特征,讓體量更小、更簡(jiǎn)單的模型就能獲得同等,甚至更優(yōu)的效果。
在前深度學(xué)習(xí)時(shí)代,傳統(tǒng)的搜索推薦經(jīng)常需要上千萬、上億的特征,這是因?yàn)椋跊]有強(qiáng)大的特征的情況下,只能把各種組合人為構(gòu)造出來,然后用一個(gè)淺層的大模型去學(xué)習(xí)。然而深度學(xué)習(xí)模型學(xué)習(xí)出的特征本身已經(jīng)包含了巨大的信息量,因此繁瑣的人工特征工程變得沒那么重要了,這對(duì)技術(shù)的商業(yè)化非常有利。
這種信息量是通過深度學(xué)習(xí)在面對(duì)大規(guī)模原始數(shù)據(jù)的抽象、非線性學(xué)習(xí)能力而獲得的。例如,通過抓取大量金融行業(yè)的相關(guān)文本,,進(jìn)行統(tǒng)一的文本語義相似度學(xué)習(xí)建模和訓(xùn)練,就能得到一個(gè)強(qiáng)大的文本特征提取模型。這個(gè)模型可以用于證券領(lǐng)域、基金領(lǐng)域、銀行服務(wù)領(lǐng)域等等各個(gè)行業(yè)系統(tǒng)中。
此外,深度學(xué)習(xí)也可以通過「多任務(wù)學(xué)習(xí)」(multi-task learning)的方式整合不同類型的問答數(shù)據(jù),極大簡(jiǎn)化了啟動(dòng)階段客戶標(biāo)注數(shù)據(jù)的工作。
知識(shí)點(diǎn)的構(gòu)建階段需要客戶提供有標(biāo)注的訓(xùn)練數(shù)據(jù):每一個(gè)知識(shí)點(diǎn)(標(biāo)準(zhǔn)答案),都需要客戶「手寫」用戶標(biāo)準(zhǔn)提問范式和可能的變體。構(gòu)建這樣的標(biāo)準(zhǔn)問答集是極其耗費(fèi)時(shí)間的,說服客戶進(jìn)行標(biāo)注也是有一定難度的,然而如果客戶之前采用過人工客服,有人工客服日志,我們就可以大量削減需要人工完成的標(biāo)注數(shù)據(jù)集創(chuàng)建工作。
追一一直偏重實(shí)用、偏重落地,我們不僅僅鉆研最前沿的技術(shù),也致力于優(yōu)化落地效果,把自適應(yīng)、有閉環(huán)正反饋的系統(tǒng)交付給用戶。令人自豪的是,我們有一批能夠把問題想清楚的人,正在用系統(tǒng)工程的思維為客戶構(gòu)建具有極致體驗(yàn)的對(duì)話機(jī)器人服務(wù)。
我們的對(duì)話機(jī)器人,不追求「一個(gè) AI 模型端到端解決全部問題」,而是在一個(gè)完整系統(tǒng)的每個(gè)模塊里、各個(gè)維度里,都用 AI 技術(shù)幫助提升效率、優(yōu)化體驗(yàn)。這種優(yōu)化可能幫助主系統(tǒng)提取了更強(qiáng)的特征,可能在冷啟動(dòng)階段幫助客戶簡(jiǎn)化了痛苦的數(shù)據(jù)標(biāo)注過程,可能在運(yùn)轉(zhuǎn)過程里幫助分析輿情、找到客戶產(chǎn)品設(shè)計(jì)的不合理之處。它們并不顯山露水,卻無處不在。
這也是追一希望向用戶傳達(dá)的理念:真正有「AI 意味」的系統(tǒng),是「草色遙看近卻無」的整體系統(tǒng),而 AI 的角色,是「潤(rùn)物細(xì)無聲」地、持續(xù)地優(yōu)化其中的每一個(gè)細(xì)節(jié)。
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!