12月18日,優必選研究院技術專家羅沛鵬在智東西公開課進行了一場的直播講解,主題為《優必選服務機器人自然語言處理技術》,這也是優必選專場第7講。
在本次講解中,羅沛鵬老師首先從自然語言處理技術的研究出發,對優必選的自然語言處理在機器人中的應用,如場景交互中的多輪對話問題,以及AI寫作創作等方面進行全面解析,并對優必選自然語言處理在機器人上的應用案例進行解析。
本文為此次專場主講環節的圖文整理:
各位朋友大家好,我是來自優必選研究院的羅沛鵬,今天由我給大家講解優必選服務機器人自然語言處理技術。內容會分為以下5個部分:
1、服務機器人語音交互技術概述
2、自然語言處理技術概述與發展
3、優必選自然語言處理技術的研究與開發
4、優必選自然語言處理技術在服務機器人上的應用
5、優必選自然語言處理技術未來研究方向
正文:
服務機器人語音交互技術概述
如上圖所示,人的語音通過ASR(語音識別)把音頻變成文本,文本經過NLU(語義理解)、DM(對話管理)以及NLG(語言生成),生成的語言在通過TTS(語音合成),最后機器人完成對話。
自然語言處理技術概述與發展
首先來幾個段子,相信大家在網上經??吹筋愃频亩巫樱热纭柏浝焕祭唷?,這個是一個典型的中文分詞問題,生活中給大家帶來不少的麻煩。另外我相信大家都在拼音輸入法上翻過車,“答辯”打成“大便”,這是一個典型的語言模型問題,后面會介紹語言相關的模型。還有在前段時間比較火的滿分作文生成器,可以用它來生成類似的滿分作文,后邊也有文本生成的算法介紹,請大家拭目以待。
自然語言處理技術可以分為基礎技術和核心應用。其中,基礎技術包括自動分詞、詞性標注、命名實體識別以及句法分析。
自動分詞是自然語言處理領域最基礎的工作,以前主要基于規則和概率統計,現在已經發展到基于深度學習。比如“武漢市長 江大橋”還是“武漢市 長江大橋”等都是通過統計模型可以把詞分配好。
詞性標注就是在分完詞后,利用算法把每個詞的詞性標注上。通常詞性標注的粒度可以很細,比如可以標注動詞、副動詞、趨向動詞、不及物動詞等。
命名體識別是指識別具有特定意義的實體,比如人名、地名、機構名、專有名詞等。
句法分析主要是指分析句中的主謂賓、定狀補的句法關系。它的應用非常廣泛,情感、信息、問答、機器翻譯、自動文摘、閱讀理解以及文本分類等。
上圖是自然語言處理的四個階段,第一階段:在2000年之前,主要是基于規則和基于概率統計的方法。在50年代提出了圖靈測試的概念來判斷機器是否會思考,到目前為止,還沒有出現大家一致認可的對話系統通過圖靈測試。第二階段:在2013年,隨著神經網絡的興起,極大的提升了NLP的各項能力。第三階段:基于seq2seq模型的NLP和注意力機制,在文本生成和機器翻譯方面獲得了比較大的進展。第四階段是2018年以來,大型預訓練模型的發展,也是我們現在所處的階段。
優必選自然語言處理技術的研究與開發
目前,優必選的研究方向分為以下幾種:
1、任務型對話,主要是把意圖詞槽以及上下文的一些信息給抽取出來,在日常生活和服務機器人上用的比較多。
2、開放式閑聊,主要基于多輪的語料,做了一些開放式的閑聊。
3、文本生成,主要是一些創作類的文本生成,開放式閑聊也用到了一些文本生成的技術。
4、知識圖譜,為了提升交互體驗以及賦予對話更多的知識,我們也在做這方面的嘗試。
5、相似問法生成,主要是為了平臺的語料能夠很好的自動擴展,提升泛化能力。
下面介紹下任務型對話的技術概述,如上圖所示,任務型對話主要分為用戶自定義技能以及內置技能。自定義技能是提供一個平臺可以讓用戶錄入語料,一鍵訓練后就會生效。內置技能則提供了20余個技能讓用戶可以勾選,比如天氣、鬧鐘。
接下來看下上圖右邊的流程圖,對話開始,然后采用用戶自定義的模型去預測,如果有結果,則進入會話管理模塊檢查下詞槽的完整性,如果完整,會進入內容的搜索,并儲存歷史會話信息;如果不完整,會引導補充詞槽話術,然后儲存歷史會話信息,返回引導話術。如果對話開始,用戶自定義模型預測是沒有結果的,它會采用內置技能的模型去預測,看否有內置技能的結果,如果有結果,跟重復上面是一樣的會話管理、完整性檢查、歷史會話存儲等流程,直到對話結束。
如果內置的技能也沒有,最后將走到閑聊模塊。右邊舉了一個詳細的例子,“今天天氣怎么樣”,算法會識別到領域意圖、天氣以及時間,然后識別到當前語句的語義之后,會進入會話管理模塊,看下是否有一些缺少的詞槽。比如天氣缺少城市,它會觸發“你想了解哪座城市的天氣”。然后,用戶問的下一輪,算法會根據上下文信息去預測該問題是哪個領域。例如“深圳的”上文可能是天氣、交通或其他的一些領域。在此處根據上下文信息,可以預測到“深圳的”是屬于是天氣領域的。
具體實現可以看下上面的Demo,在上面的平臺中提供給用戶自己去配語料,然后一鍵觸發訓練并生效。平臺需要添加詞典,詞典用于詞槽抽取。平臺也需要添加意圖以及語料。同時平臺還需要配置上下文信息,用于上下文預測算法以及會話管理。此外平臺也可以配置必須填的詞槽等。
為什么要做這樣的平臺?主要原因有三個:
第一是NLP場景特別多,機場、政府、商場的對話是完全不一樣的,通過這個平臺,公司的產品可以為每一臺服務機器人定制特定的語料,減輕了算法工程師的工作量。
第二是迭代快,我們的平臺自上線以來已經為咖啡機、防疫機器人等提供問答服務。尤其是防疫機器人在緊急情況下不到兩周就完成了迭代。
第三是成本低,極大的降低了人力成本。
對話的核心是在多輪對話語境中的有效識別,那怎樣在多輪對話語境中能夠表現很好呢?我們需要一個好的主算法,如上圖所示,先介紹下主算法的優點,它之所以適用于各種復雜的多輪對話語境中,是因為該算法基于預訓練的BERT模型,泛化能力好。同時,由于在神經網絡結構中有用到歷史會話的上下文信息,所以該算法可以提升上下文的理解能力。此外,該算法在一個神經網絡中能夠同時識別意圖、詞槽。最后,通過數據增強等策略提升模型對低資源應用場景的適用性。
接著看上圖左邊,介紹深度算法的流程,u(t)表示用戶當前的提問,s(t-1)表示機器人上一輪的回復,然后通過BERT提取特征,再進入到雙向的GRU里,因為當前的語句只在后半部分u這邊,該部分通過BERT的輸出可以再輸入到一個雙向LSTM中,接著再輸入到CRF里進行詞槽的抽取。同時該GRU的左右雙向的輸出結果可以拼接在一起,通過線性的轉換,然后通過sigmoid函數,進行動作的預測。該GRU用來做詞槽抽取的特征也會輸入到另外一個線性轉換中,然后每一個分別輸出一個key和value,再一一對應,輸入到一個attention layer,進入線性的轉換,最后進行意圖的預測。
意圖的數量是隨著用戶配置的意圖數量而定,比如一個咖啡機可能配了10個意圖。同時,該算法也是一個多分類的任務,因為這些意圖之間存在一定的附屬關系。舉個例子,比如“今天天氣怎么樣”,這可能是“查天氣”主意圖,但說“明天呢”,可能是“天氣查時間”子意圖。因此融合上下文的信息,可以對意圖進行比較好的預判。
下面重點講下上下文的網絡結構,上下文的輸入u表示用戶提問,s表示的機器人回復,可以通過BERT提取特征,進入雙向的 GRU里,然后把該時刻的信息作為時間序列的一部分。這些信息根據時間序列輸入到一個 GRU網絡結構中。最后的輸出將作為雙向初始特征,用于輸入意圖、詞槽的雙向GRU網絡中。
接下來介紹下平臺訓練的流程:導入詞典、編輯意圖、回復邏輯,然后再導入問法擴充模板,并導入一些實際的語料。在訓練時,先加載語料,這時我們會通過聚類的分析去篩選驗證集,因為我們想要驗證集的分布與訓練集是一致的。這里很重要,因為在自然語言處理中,每一個意圖,比如查天氣與查鬧鐘,它們的語料數量可能是不在一個數量級的。有可能查天氣有1萬條語料,而查鬧鐘只有區區幾百條語料,這樣造成了語料的不均衡。如果不用聚類算法把驗證集的分布與訓練集做的相似,采樣時可能會漏掉一些語料少的意圖。做完驗證集的篩選后,我們會生成一批多輪對話語料去進行訓練。為什么每次要生成語料,因為輸入會涉及到歷史的會話信息,所以在多輪的條件下,每次是不一樣的。因此,每次生成一批語料,然后看模型是否收斂,收斂則發布模型,不收斂就重復該流程,直到達到限制條件。模型訓練完發布后,進入使用階段,在這個階段用戶輸入對話,對它進行意圖的識別,詞槽的抽取,再經過一些會話管理的模塊,最后結束。
深度學習的優點是對上下文的理解會非常精準,對平臺的精準度提升非常有效,但是它的網絡比較復雜,所以需要比較好的設備,那有沒有比較節省成本的一些算法呢?我們還有一個快速算法,快速算法的特點是有以下三個:
1、只對語料模板進行訓練,可以千百倍的減少訓練時間;
2、模型體積較小,需要的硬件成本也較低;
3、在特定的場景下準確率也比較高。
那什么是快速算法?比如一句話“我想從北京去成都”,它拆成問法,就是“我想從去”。如果訓練模型只對模板進行訓練會很快,但也存在一個問題。比方說,句子中“我想從北京去成都”去預測時,需要把它還原成模板。然而,像“成都”這種詞,可能既是歌名又是城市名,這時它會產生相當多的排列組合。因此,需要準確的挑出來,“我想從去”,“我想從去”則是錯誤的模板。
在訓練時有大量的模板,有正例也有負例,因此有了第一個損失函數,令其中的正例模板為1,其他都是0。同時,還需要判斷該問題的意圖,即要知道這句話的意圖是交通,所以,需要設計一個意圖預測的損失函數。因此在訓練時,讓兩個損失函數都收斂就得到一個快速模型。為什么要用RNN和CNN的算法呢?答案是因為速度比較快。以上就是訓練的過程。
在預測時,需要先對句子進行詞槽的提取。由于最初是不知道意圖的,所以只能把它在相應的詞典里的信息都提取出來,通過排列組合的方式,會得到一組模板的候選集(“我想從去”,“我想從去”),把它們輸入到訓練好的模型中,就可以預測出來。
下面介紹下優必選的閑聊技術,閑聊分為匹配式閑聊與生成式閑聊。匹配式閑聊是有一個Q&A庫,Q&A庫如果夠大,可以達到一個比較好的閑聊效果。生成式閑聊不需要匹配,根據問題生成答案。他們各有優缺點,匹配式閑聊是可控的,可以通過語料的編撰,增加、刪除等方式,包括一些敏感詞可以在建立語料庫把它給刪除。生成式閑聊的對話時的變化會大一些,但是有一定的不可控性,有時語料不干凈,會生成一些不太健康的內容,同時還會存在一定的語義、語法的問題。
優必選的閑聊如上圖所示,首先進入匹配式閑聊,看庫里有沒有結果,如果有,儲存歷史多種信息并返回。如果沒有,通過知識圖譜問答,看知識圖譜里是否能收到相應的知識,有結果,儲存歷史信息返回。如果知識圖譜還沒有,我們將進入生成式閑聊,然后儲存歷史對話信息、反饋結果。
那么歷史多輪信息有什么用呢?歷史多輪信息會用于生成式閑聊,不管是匹配式閑聊的答案,還是知識圖譜答案,它的歷史信息都將成為生成式閑聊的輸入。
閑聊是NLP一個永恒的難題,主要是知識如汪洋之大海,永遠缺乏高質量的對話;那算法求的只是一個概率,缺乏現實的邏輯推理;最后機器是不冷暖的,所以單憑文字不一定能夠捕獲到豐富的情感。這需要借助視覺,包括語音識別,各種聲紋信息等。
接著介紹下生成式閑聊,目前生成式閑聊主要基于GPT的模型,它本質上是語言模型,GPT是基于Transformer 的Decoder 部分。那語言模型是什么?語言模型是根據一個句子的已知序列信息去預測該句子的下一個字。那具體怎么操作?我們把用戶的多輪閑聊作為語言模型的輸入,然后訓練模型,這是訓練部分。對于預測,相對于訓練多了一個環節,先根據歷史的多輪閑聊序列通過gpt生成一個字,生成該字時會生成多個候選的字。可以通過一些top-k、beam search等算法,以及一些參數的調節,來挑選候選字中最合適的那個。接著,該字加入序列,重復使用此方法生成下一個字,直到生成結束符。
通常不會只生成一個答案,會生成多個候選答案,那么生成了多個候選答案,該如何挑選一個更加合適的答案呢?可以訓練一個通過答案預測問題的模型,也就是最大互信息的評分。上圖左邊是回答生成的訓練過程,右邊的思路與左邊的思路是反向的,是由答案生成問題。實際運用時,采用正確的時序生成多個候選答案。再把生成的候選集輸入到訓練好的最大互信息模型里,看預測到原始問題時,哪個候選答案的損失值最低,這種方法可作為候選答案的挑選。
我們的閑聊在內部做了一個評測,從它的通順性、連貫性、信息性、趣味性以及憑感覺等方面打分。關于效果方面,通順性和連貫性還不錯,趣味性跟憑感覺方面,大家覺得還有優化的空間。除了上面提到的算法,還有其他一些比較優秀的算法,比如plato-2、blender等,但這兩個算法推理比較慢,所以我們沒有采用上面的算法。
接下來是文本生成技術,比如古詩生成,輸入“我是只小豬歡樂多”。生成的結果可以看下左上角的圖,生成的古詩是押韻的,那怎么做的呢?同樣還是采用GPT模型。首先要定義它的格式,比如五言絕句、七言絕句、詞牌等,然后用分隔符分開,接下來把詩詞給到模型,并且要帶標點符號,然后通過語言模型訓練,他具備這樣的生成能力。
生成完后,就涉及到一些押韻的處理。具體首先需要進行預處理,并定義詩詞的類型。然后,與詩詞的內容并拼接起來。接著文本向量化輸入到GPT里。接著也是一個字、一個字生成答案。當生成到有句尾標點符號時,要看最后一兩個詞與前一句是否押韻。如果不押韻,要重新生成一句話,以此來保證可以都押韻。但不一定保證所有情況都押運,可能預測很久都沒有押韻,這時候,我們會設一個超時,超時后直接生成一個不押韻的句子。
古詩詞生成存在一些問題,首先是押韻問題,語言模型學習到的韻律信息比較有限;其次是意境問題,語言模型只是學習到了古詩詞遣詞造句的概率模型,即文章套路,對比較有套路的文章,可以生成的比較好。于是乎,但是詞(宋詞)的效果比不上詩,因為詞的套路很多,還有各類詞牌,每句話字數也不一致,所以對詞的效果會差很多。
在知識圖譜方面,它的主要組成分三塊:節點、屬性、關系。在該圖中,節點表示每個人,比如周杰倫;屬性是他的出生、成就、身高等;連接節點之間的叫關系,比如周杰倫通過妻子的關系可以鏈接到昆凌。以關系相連各個節點,會組成一個龐大的知識網絡,關系是具有方向性:單向或雙向的,單向的比如昆凌是周杰倫的妻子;至于雙向,比如同學關系,甲是乙的同學,乙是甲的同學。
知識圖譜技術目前只是用來做知識問答,用來豐富閑聊的交互體驗。它的一個問答涉及到預處理、實體識別、實體鏈接、關系抽取、手寫識別,主謂賓、施受關系檢測,答案的生成以及排序,敏感詞過濾等。
知識圖譜存在很大的挑戰,首先在問答挑戰方面知識是無法窮盡的,知識的收集、梳理以及抽取是非常大的工作量,其次問法也是無窮無盡的,所以非常難理解到各種各樣的問法。
知識圖譜的應用主要是探索知識圖譜與開放式對話等方面的融合技術,我們的目的是為了優化交互體驗,提高對話系統的多樣性、邏輯性、可解釋性等。
優必選自然語言處理技術在服務機器人上的應用
NLP在服務機器人上有哪些應用呢?首先是機器人問答,還有無人輪值客服、機場與車站、無人販售等。具體應用案例包括無人咖啡館、防疫機器人問答和uCode等。
無人咖啡館
上面是我們咖啡機器人,它可以實現結合上下文語境,精準理解用戶點單,避免人員直接接觸。
防疫機器人問答
疫情期間,通過服務機器人的智能防疫問答,減少人員的聚集,為疫情的紓解提供有力保障。
uCode
uCode是優必選面向編程教育領域開發的一款軟硬件結合的編程客戶端,學生可以不使用鍵盤去敲代碼,可以通過拖拽積木的方式編程。
具體可以看到上圖,涉及到語音識別以及文本匹配,用戶可以輸入“聽到走幾步”時,他做什么樣的動作,可以通過語音識別把它變成文字,再進行動作匹配。涉及到語音識別時,由于環境中的噪音,可能會出現多一個字、少一個字。同時,編程為“走幾步”時,用戶在實際使用的時候也有可能說成“走幾步吧”或“請走幾步”類似的。有了NLP的文本模糊匹配功能,就解決了。其他的諸如于古詩詞生成等,都可以加入到uCode編程中,提升uCode的教學能力。
優必選NLP未來的研究方向
接下來的方向一個是提升交互體驗,要緊跟前沿走,探索交互體驗;同時,還需要提升平臺的能力,目前平臺的能力是比較基礎的,未來可能會增加語料自動擴展的功能;此外,系統還要增長知識,在智能對話中,知識是比較欠缺的。因此,我們正在做知識圖譜這塊,并在探索它跟對話的融合技術,為機器人的對話增智。
以上是今天的分享,謝謝大家。
原文標題:羅沛鵬:優必選服務機器人NLP技術最新研究進展
文章出處:【微信公眾號:中山市物聯網協會】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
機器人
+關注
關注
211文章
28476瀏覽量
207416 -
自然語言
+關注
關注
1文章
288瀏覽量
13359 -
nlp
+關注
關注
1文章
489瀏覽量
22052
原文標題:羅沛鵬:優必選服務機器人NLP技術最新研究進展
文章出處:【微信號:ZS-IOT,微信公眾號:中山市物聯網協會】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論