【導(dǎo)讀】自然語(yǔ)言對(duì)話系統(tǒng)正在覆蓋越來(lái)越多的生活和服務(wù)場(chǎng)景,同時(shí),自然語(yǔ)言對(duì)話的理解能力和對(duì)精細(xì)知識(shí)的對(duì)話召回率在技術(shù)上仍有很大挑戰(zhàn)。
啟發(fā)式對(duì)話通過(guò)建立知識(shí)點(diǎn)之間的話題關(guān)聯(lián),使對(duì)話系統(tǒng)能夠主動(dòng)發(fā)現(xiàn)相關(guān)知識(shí),充分發(fā)揮知識(shí)的協(xié)同作用,引導(dǎo)對(duì)話過(guò)程,把知識(shí)在合適的時(shí)間主動(dòng)送達(dá)用戶。知識(shí)不只是以知識(shí)圖譜或問(wèn)答庫(kù)等形式被動(dòng)被搜索,啟發(fā)式對(duì)話中的知識(shí)結(jié)合了先驗(yàn)經(jīng)驗(yàn)和用戶對(duì)話習(xí)慣,從而擁有知識(shí)角色,讓對(duì)話理解和對(duì)話流程更加自然,也更有用戶價(jià)值。
在本期公開(kāi)課課程中,AI 科技大本營(yíng)邀請(qǐng)到了思必馳 NLP 部門負(fù)責(zé)人葛付江針對(duì)“啟發(fā)式對(duì)話中的知識(shí)管理”做系統(tǒng)的講解和梳理。
以下內(nèi)容為大本營(yíng)公開(kāi)課整理。
今天給大家分享一下,關(guān)于啟發(fā)式對(duì)話中的知識(shí)管理系統(tǒng),分享的內(nèi)容包括以下五個(gè)方面:
▌對(duì)話系統(tǒng)的架構(gòu)
首先是對(duì)話系統(tǒng)的架構(gòu),我們來(lái)看一下對(duì)話系統(tǒng)流程。
在一般的對(duì)話系統(tǒng)應(yīng)用場(chǎng)景,比如在智能音箱、智能電視,包括現(xiàn)在車載的設(shè)備等,當(dāng)用戶說(shuō)了一個(gè)問(wèn)句,智能客服自動(dòng)的問(wèn)答和對(duì)話,這樣的系統(tǒng)的基本流程是它接收到用戶的一個(gè)問(wèn)句或者用戶說(shuō)的一句話,然后系統(tǒng)里做一些處理,給用戶一個(gè)答復(fù)。
我們今天說(shuō)的對(duì)話系統(tǒng)和傳統(tǒng)的問(wèn)答系統(tǒng)有一個(gè)重要的區(qū)別,對(duì)話系統(tǒng)它是維護(hù)上下文的,在做一個(gè)對(duì)話的時(shí)候是有上下文場(chǎng)景,在這個(gè)上下文的過(guò)程中需要控制一些對(duì)話的狀態(tài),來(lái)完整地理解用戶的意圖。
例如,用戶問(wèn)一句明天會(huì)下雨嗎?系統(tǒng)會(huì)做一些預(yù)處理,即一些自然語(yǔ)言處理上的特征處理,比如分詞、詞性標(biāo)注、命名實(shí)體識(shí)別這樣的模塊,在這里可以識(shí)別到一些實(shí)體,比如里邊的時(shí)間是明天,關(guān)于天氣現(xiàn)象是下雨,這是命名實(shí)體可以做到的。
經(jīng)過(guò)特征的預(yù)處理以及命名實(shí)體的識(shí)別,然后進(jìn)入正式的對(duì)于這句話的理解。首先是對(duì)于用戶的每一個(gè)問(wèn)句需要做一個(gè)領(lǐng)域的判斷,一般做這個(gè)領(lǐng)域判斷是因?yàn)樵趯?duì)話系統(tǒng)里會(huì)支持各種場(chǎng)景,首先把用戶的這句話限定在一個(gè)固定的場(chǎng)景下,然后才能做相應(yīng)的后續(xù)處理。
領(lǐng)域的判斷一般情況下有各種方式,不管是寫模板,還是一些分類的算法,比如這句話我們送到一個(gè)分類器里,它可能能判斷出它是一個(gè)天氣領(lǐng)域相關(guān)的。在這里邊,通過(guò) Slot Filling,它就可以得到天氣領(lǐng)域的一個(gè)意圖,這個(gè)意圖領(lǐng)域是天氣領(lǐng)域,有它的地點(diǎn)和時(shí)間。當(dāng)然這句話沒(méi)有提到地點(diǎn),因?yàn)橐话氵@樣的系統(tǒng)會(huì)通過(guò)傳感器或者是定位的信息,或者是 IP,或者各種設(shè)備相關(guān)的場(chǎng)景的信息獲取到他一個(gè)默認(rèn)的地點(diǎn)或者默認(rèn)的城市,根據(jù)這些信息,然后我們得到一個(gè)結(jié)構(gòu)化的意圖。
這個(gè)結(jié)構(gòu)化的意圖,然后送給一個(gè)對(duì)話管理或者對(duì)話狀態(tài)追蹤的模塊,這個(gè)對(duì)話狀態(tài)的管理去做一個(gè)判斷,說(shuō)以當(dāng)前這個(gè)領(lǐng)域,比如天氣這個(gè)領(lǐng)域它的 Slot 是否是滿足的。對(duì)于天氣這個(gè)領(lǐng)域比較簡(jiǎn)單,發(fā)現(xiàn)這句話實(shí)際上它的領(lǐng)域意圖、時(shí)間、地點(diǎn)都已經(jīng)滿足了,然后把這些槽位都補(bǔ)充上。
根據(jù)這些補(bǔ)充好的信息,實(shí)際上它就是一個(gè)結(jié)構(gòu)化的信息,根據(jù)它的時(shí)間、地點(diǎn)、天氣現(xiàn)象,然后去后臺(tái)的數(shù)據(jù)服務(wù)里做一個(gè)查找,把真正的天氣,比如明天需要下雨或者是晴天這樣一個(gè)信息取出來(lái),然后經(jīng)過(guò)一個(gè)答案生成,Response Generation 這樣一個(gè)模塊,然后生成一句比較自然的話,比如說(shuō)明天可能是一個(gè)晴天,然后就說(shuō)明天是一個(gè)晴天,如果再說(shuō)得更自然一點(diǎn),可能說(shuō)是一個(gè)出游的好時(shí)間,類似這樣的,整個(gè)流程大概是這樣,實(shí)際上是一個(gè)比較簡(jiǎn)單的過(guò)程。
通過(guò)這個(gè)流程我想跟大家分享一下對(duì)話系統(tǒng)的基本架構(gòu),首先它要處理一個(gè)用戶的 Query,然后它要經(jīng)過(guò)一個(gè)對(duì)話管理的模塊,這個(gè)對(duì)話管理實(shí)際上就是維護(hù)上下文的信息。再下面是一個(gè)意圖的理解,這個(gè)意圖的理解可能有各種方式,包括知識(shí)庫(kù)或者叫知識(shí)圖譜,包括問(wèn)答的形式,這種問(wèn)句相似度匹配,還有一些通用的各種其他的意圖的理解,包括意圖分類的這些東西。
在這個(gè)里邊,對(duì)話管理在這個(gè)里邊,一般情況下對(duì)話管理實(shí)際上是一個(gè)類似于流程圖的東西,比如以剛才天氣的里邊,它實(shí)際上是一種叫 Slot Filling,有幾個(gè)信息填滿之后就可以了。然后在一些其他的對(duì)話過(guò)程中,比如說(shuō)典型的客服,實(shí)際上一般在客服的具體場(chǎng)景下,比如金融領(lǐng)域的某一種金融業(yè)務(wù)或者是用戶查詢一種金融產(chǎn)品,比如保險(xiǎn)這種產(chǎn)品,某一種保險(xiǎn)產(chǎn)品,它有一些信息,它實(shí)際上是一個(gè)流程圖的形式。
還有一種是我們后面會(huì)提到的啟發(fā)式的對(duì)話,這幾種形式的結(jié)合,其實(shí)是一個(gè)對(duì)話的管理?,F(xiàn)在一般的系統(tǒng)可能都是處理某一種對(duì)話,要么就是 Slot Filling,要么就是一個(gè)設(shè)定好的流程,要么是一種啟發(fā)式,能把它做到融合的可能還不是特別多。
繼續(xù)在這個(gè)圖里邊,剛才提到對(duì)話管理就是 DM,對(duì)話的理解就是知識(shí)庫(kù),問(wèn)答對(duì),還有一些通用的,比如說(shuō)抱怨,一種通用的狀態(tài),一般情況下可能是一種分類的方式來(lái)做的這種 NLU 的理解之后,各個(gè)模塊做到這個(gè) NLU 之后,它需要去做一個(gè)抉擇,因?yàn)樵诟鞣N系統(tǒng)里邊,用戶的一句話可能都會(huì)找到一個(gè)答案,我們到底選哪一個(gè)答案,所以就做一個(gè)排序,排序完之后經(jīng)過(guò)一個(gè)答案的生成,最后給用戶一個(gè)答復(fù)。
當(dāng)然這里邊,邊上還有一個(gè)模塊就是上下文的管理,它在對(duì)話管理、NLU 以及排序和答案生成這些模塊里都會(huì)用多,它會(huì)維護(hù)一些上下文的信息。當(dāng)然這張圖結(jié)構(gòu)是比較簡(jiǎn)單的,但是每一個(gè)里邊實(shí)際上有挺多東西,我們后面看具體的內(nèi)容,最后我們回過(guò)頭再來(lái)看這張圖,可能就會(huì)有一些不一樣的東西。
看之前我們先總結(jié)一下現(xiàn)在一些對(duì)話機(jī)器人的現(xiàn)狀,一般對(duì)話機(jī)器人怎么來(lái)評(píng)價(jià)或者它現(xiàn)在的狀態(tài),一般評(píng)價(jià)的標(biāo)準(zhǔn),我們對(duì)機(jī)器人的評(píng)價(jià)是不太好評(píng)價(jià)的,我們做一個(gè)系統(tǒng)或者做一個(gè)學(xué)術(shù)的研究,一般情況下它怎么來(lái)衡量這個(gè)機(jī)器人的效果,實(shí)際上是一個(gè)很重要的事,我們要做這個(gè)事前需要先定一個(gè)標(biāo)準(zhǔn)。
一般的像對(duì)話系統(tǒng)主要的幾種評(píng)價(jià)的東西,一個(gè)是準(zhǔn)確率,準(zhǔn)確率可能就是基于一些問(wèn)答對(duì)還是不對(duì),或者對(duì)話答的對(duì)還是不對(duì),比如這個(gè)對(duì)話進(jìn)行了十輪,這十輪里有幾次對(duì)的,幾次錯(cuò)的,直接給一個(gè)零一的判斷,然后算出準(zhǔn)確率。
另外一個(gè),人工打分,因?yàn)檫@個(gè)對(duì)話過(guò)程中它可能并不是一個(gè)絕對(duì)的零一的判斷,有的時(shí)候它給的答案可能不那么合理,但是一定程度上能夠接受,所以人一般可以給它打一個(gè)分?jǐn)?shù),比如說(shuō) 1 到 10 分或者 1 到 5 分,給一個(gè)分?jǐn)?shù),最后給這個(gè)機(jī)器人一個(gè)綜合的打分。
學(xué)術(shù)上可能借鑒一些其他系統(tǒng)的標(biāo)準(zhǔn),比如說(shuō)困惑度或者 BLEU 值這樣的方式來(lái)給一些打分,一般這種標(biāo)準(zhǔn)更多是在一個(gè)限定的數(shù)據(jù)集里去衡量這句話,生成的這句答復(fù)它的語(yǔ)言流暢程度,可能更多的是從語(yǔ)言流暢程度的角度來(lái)衡量,當(dāng)然這些困惑度或者BLEU值,它的好處是能自動(dòng)地來(lái)判斷,但是壞處是它其實(shí)很難嚴(yán)格地從語(yǔ)意上來(lái)判斷這個(gè)系統(tǒng)好或壞。
在一些極窄的領(lǐng)域里,比如說(shuō)訂餐,甚至更窄一點(diǎn),比如訂一個(gè)披薩或者訂咖啡,或者撥打電話,這種很窄的領(lǐng)域,實(shí)際上現(xiàn)在機(jī)器學(xué)習(xí)的方法和模板的方法都能夠做到一個(gè)比較好的精度。
機(jī)器學(xué)習(xí)或者深度學(xué)習(xí),但是深度學(xué)習(xí)在這種場(chǎng)景下它也依賴于一個(gè)比較大的數(shù)據(jù)量,相對(duì)于這個(gè)場(chǎng)景來(lái)說(shuō),因?yàn)橐话阍谶@種實(shí)驗(yàn)上,它的場(chǎng)景還是比較小的。如果場(chǎng)景比較多的話,現(xiàn)在在一個(gè)比較復(fù)雜的場(chǎng)景里,可能現(xiàn)在深度學(xué)習(xí)的效果還不是很好,就是在多輪對(duì)話的場(chǎng)景下,并且有多個(gè)場(chǎng)景混合的話。
另外在一些較大的領(lǐng)域,比如客服,客服這個(gè)場(chǎng)景,它一般情況下對(duì)于一個(gè)企業(yè)的客服,一個(gè)企業(yè)的客服可能會(huì)涉及到幾種產(chǎn)品,既使是一類產(chǎn)品也會(huì)涉及到這一類產(chǎn)品不同的產(chǎn)品線以及它各種型號(hào)這些東西,客服它相對(duì)來(lái)說(shuō)是一個(gè)比較寬的領(lǐng)域。
現(xiàn)在不管是深度學(xué)習(xí),還是其他傳統(tǒng)的機(jī)器學(xué)習(xí),如果在整體都用深度學(xué)習(xí)的方式,它的準(zhǔn)確率是比較低的,很少能做到 50% 以上的,就是在一個(gè)比較大的領(lǐng)域里。所以現(xiàn)在在客服領(lǐng)域里,很多系統(tǒng)是基于檢索式或者是基于模板的,檢索式就是它準(zhǔn)備好了一些標(biāo)準(zhǔn)的問(wèn)答對(duì),因?yàn)槠髽I(yè)做自己的客服的時(shí)候,一般情況下積累了一些它自己對(duì)自己產(chǎn)品的標(biāo)準(zhǔn)問(wèn)題和答案的,用戶的一個(gè)問(wèn)題就到這里找一個(gè)最相似的問(wèn)題,然后給它一個(gè)答案。這種方式目前是用得比較多的。
另外一種就是模板,人工去寫一些規(guī)則的模板或者叫語(yǔ)義的模板,然后去解釋用戶的這個(gè)問(wèn)句包含哪些主要的信息,然后把它對(duì)到一個(gè)意圖上給一個(gè)答案,在這些領(lǐng)域里邊,較大的領(lǐng)域?qū)嶋H上機(jī)器學(xué)習(xí)的算法還是有一些挑戰(zhàn)的,即使用模板它也有很多的挑戰(zhàn),因?yàn)槟0宥嗔酥笏蜁?huì)有沖突以及不好維護(hù)的問(wèn)題。
▌啟發(fā)式對(duì)話系統(tǒng)
啟發(fā)式對(duì)話系統(tǒng),是我們正在做的一個(gè)啟發(fā)式對(duì)話系統(tǒng),啟發(fā)式對(duì)話系統(tǒng)現(xiàn)在有一些相似的概念,比如說(shuō)主動(dòng)式對(duì)話,思必馳提出來(lái)這個(gè)啟發(fā)式對(duì)話可能主要是在這樣,在一些企業(yè)的場(chǎng)景下很多時(shí)候用戶實(shí)際上是面對(duì)一個(gè)對(duì)話機(jī)器人,他不太清楚能問(wèn)什么樣的問(wèn)題,以及這個(gè)機(jī)器人的能力是什么樣,它能回答什么樣的問(wèn)題,或者用戶大概知道他要什么東西,但是他對(duì)于問(wèn)問(wèn)題這個(gè)事,讓他去問(wèn)很多問(wèn)題還是要費(fèi)一點(diǎn)腦筋的。
啟發(fā)式對(duì)話大概就是這么一個(gè)流程。它實(shí)際上通過(guò)這些問(wèn)題背后的一些聯(lián)系,能讓這個(gè)對(duì)話一直持續(xù)下去。當(dāng)然你說(shuō)你不想了解然后它就結(jié)束了。這是一個(gè)基本的概念。
我們來(lái)看一下啟發(fā)式對(duì)話有哪些基本的特點(diǎn),首先根據(jù)用戶的問(wèn)題主動(dòng)引導(dǎo)對(duì)話交互,用戶問(wèn)了一個(gè)問(wèn)題,系統(tǒng)會(huì)根據(jù)這個(gè)問(wèn)題把一些相關(guān)的問(wèn)題列出來(lái)或者問(wèn)用戶他想不想了解。用戶的問(wèn)題是以多種形式連接到知識(shí)點(diǎn),當(dāng)然這個(gè)對(duì)話后面,我們叫知識(shí)點(diǎn),以一個(gè)知識(shí)點(diǎn)的方式,連接一個(gè)知識(shí)點(diǎn)可能就是對(duì)于一個(gè)具體的問(wèn)題,這個(gè)問(wèn)題可能有各種不同的問(wèn)法,我們都認(rèn)為它是一個(gè)知識(shí)點(diǎn)。
以多種形式指的是現(xiàn)在常見(jiàn)的形式,它可能是一個(gè)問(wèn)答對(duì)的形式,在這個(gè)對(duì)話系統(tǒng)后面可能是一個(gè)問(wèn)答對(duì)的形式,也可能是一個(gè)知識(shí)圖譜的形式來(lái)存在的,但是它們的連接是統(tǒng)一的,都是以一種知識(shí)點(diǎn)來(lái)管理它們。
知識(shí)點(diǎn)如果直觀地理解,我們可以認(rèn)為它就是問(wèn)答對(duì)或者知識(shí)圖譜里面的一個(gè)實(shí)體相關(guān)的屬性這樣的東西,這些知識(shí)點(diǎn)之間或者問(wèn)題之間,它通過(guò)話題來(lái)融合,話題實(shí)際上對(duì)用戶是一個(gè)不可見(jiàn)的概念,它是為了去做推薦,因?yàn)槲覀儼褑?wèn)題通過(guò)話題做一個(gè)連接之后,后面這個(gè)啟發(fā)式對(duì)話實(shí)際上是根據(jù)話題來(lái)做一些選擇,用戶問(wèn)了一個(gè)問(wèn)題,我們把這個(gè)問(wèn)題所在的知識(shí)點(diǎn),這個(gè)知識(shí)點(diǎn)它所在的話題,根據(jù)這個(gè)話題去找到一些相關(guān)的話題,然后在那些話題下面找到一些對(duì)應(yīng)的問(wèn)題,然后推薦給用戶。
話題之間有一些語(yǔ)義或者邏輯關(guān)系的,后面會(huì)具體講這些話題之間是怎么組織的。整個(gè)對(duì)話過(guò)程可能就是根據(jù)話題來(lái)做整體的規(guī)劃以及跳轉(zhuǎn)的。這是現(xiàn)在整個(gè)啟發(fā)式對(duì)話它的一些特點(diǎn)。
這是一個(gè)具體的例子,這是一個(gè)產(chǎn)品的形態(tài),就是說(shuō)這個(gè)話題的組織。對(duì)于一個(gè)企業(yè)的客戶,它如果想做一個(gè)它的對(duì)話系統(tǒng),它可以人為地去設(shè)定一些話題,這個(gè)話題是以樹(shù)型的組織,比如在這個(gè)里邊就是一個(gè)關(guān)于花相關(guān)的話題,比如怎么學(xué)習(xí)花藝,各種花藝相關(guān)的信息,每一個(gè)話題,橙色的這部分是這個(gè)話題的組織,話題樹(shù),用戶可以設(shè)定這樣一個(gè)話題的組織。在這個(gè)話題下面,每一個(gè)話題下面用戶都可以去定一些,比如花藝大師,花藝大師下面用戶可以定義它在這下面一些人相關(guān)的信息,然后具體把這些人相關(guān)的信息列出來(lái)。
一個(gè)終端的用戶就可以去問(wèn)這些關(guān)于人的信息,所以話題大概有這么幾種形式,首先以右邊這個(gè)圖的形式,某一個(gè)話題下面可能有兩三個(gè)這樣的話題,當(dāng)然這個(gè)話題還可以有層次,它可以有子話題、孫子話題,這個(gè)層次結(jié)構(gòu)可以來(lái)組織擴(kuò)展,當(dāng)然一個(gè)話題下面可以有很多話題,這個(gè)話題的一個(gè)組織形式,這些基本的概念。
▌對(duì)話系統(tǒng)中的知識(shí)管理
再我們來(lái)看一下,在對(duì)話系統(tǒng)里邊這些知識(shí)它在對(duì)話的理解以及對(duì)話管理中是怎么來(lái)發(fā)生作用的,后面我會(huì)結(jié)合現(xiàn)有的技術(shù),現(xiàn)有的大家常見(jiàn)的做對(duì)話里邊的相關(guān)技術(shù),然后和啟發(fā)式對(duì)話一起來(lái)介紹對(duì)話系統(tǒng)中的知識(shí)管理。
首先來(lái)看幾個(gè)例子,在機(jī)器人理解語(yǔ)言中可能遇到的一些問(wèn)題,這個(gè)給大家一個(gè)直觀的感覺(jué),可能遇到哪些問(wèn)題。比如說(shuō)在理解上,機(jī)器人理解語(yǔ)言的過(guò)程中,比如說(shuō)“今天天津適合洗車嗎”這樣一個(gè)輸入,如果是語(yǔ)音或者拼音輸入都可能會(huì)有這樣的問(wèn)題,“今天天津適合洗車嗎”可能和“今天天津市河西”,天津市有一個(gè)河西區(qū),可能就會(huì)理解錯(cuò),從拼音到文字可能就會(huì)出錯(cuò),實(shí)際上這個(gè)非常相似的。
這是我們?cè)谡Z(yǔ)言上可能會(huì)有一些問(wèn)題,機(jī)器來(lái)做這個(gè)事的時(shí)候,它實(shí)際上很難來(lái)判斷,人是有一些背景的知識(shí)和上下文知識(shí)的。
我們來(lái)看一下,剛才列了那么多問(wèn)題,一般情況下來(lái)做這個(gè)對(duì)話里邊核心的,剛才我們?cè)谧铋_(kāi)始的架構(gòu)圖里已經(jīng)看到對(duì)話系統(tǒng)里邊核心的三大塊,一個(gè)是自然語(yǔ)言理解,一個(gè)是對(duì)話意圖理解,對(duì)話管理和對(duì)話答案的生成三個(gè)部分。
大家比較關(guān)注的是前兩個(gè)方面,對(duì)話的理解和管理,理解這部分可能最常見(jiàn)的是基于規(guī)則的系統(tǒng),比如我們就寫一個(gè) pattern,科研人員、時(shí)間、發(fā)表過(guò)的文章,類似這樣的,這個(gè)規(guī)則系統(tǒng)里有一些詞典和規(guī)則的組織,當(dāng)然這有一系列規(guī)則組織的問(wèn)題,實(shí)際上它也是一個(gè)比較浩大的工程,但是我們從算法或者是我們理解的角度,可能覺(jué)得它還是一個(gè)比較簡(jiǎn)單的方式,當(dāng)然規(guī)則多了之后是挺難維護(hù)的。
另外一種可能就是通過(guò)意圖的分類的方式,比如通過(guò)一些機(jī)器學(xué)習(xí)的方式給它做一個(gè)分類。比如我們做一點(diǎn)簡(jiǎn)單的,比如天氣,對(duì)話系統(tǒng)只要理解出來(lái)它是天氣,然后我們就給它播一個(gè)天氣預(yù)報(bào),很多場(chǎng)景下用戶也可以接受,系統(tǒng)不理解它里邊具體的東西,只理解是某一種意圖,然后就給它做一個(gè)播報(bào)。這里面常見(jiàn)的這種分類的算法都可以用得到。
另外一種是問(wèn)句檢索的方式,比如在閑聊或者客服中實(shí)際上都大量地用到。我們說(shuō)閑聊,實(shí)際上從學(xué)術(shù)上來(lái)說(shuō)可能很多研究是在做深度學(xué)習(xí)的閑聊,但實(shí)際場(chǎng)景的閑聊里邊,有很多也是通過(guò)問(wèn)答檢索的方式檢索出來(lái)的,當(dāng)然它需要有大量的問(wèn)答對(duì),這些問(wèn)答對(duì)都是人手工事先整理出來(lái)的,這是一個(gè)比較耗費(fèi)人力的東西,并且它覆蓋的范圍有限。
一般做這個(gè)事的方式是說(shuō)先通過(guò)一個(gè)倒排索引,這個(gè)用戶問(wèn)題來(lái)了之后檢索出一組問(wèn)題,然后對(duì)它進(jìn)行一個(gè)侯選,然后再做一些排序,這個(gè)排序的算法可能有各種加權(quán),有傳統(tǒng)的 learning to rank,還有深度學(xué)習(xí)下來(lái)這種深度的語(yǔ)意匹配的算法,這些算法我們后面可以具體地看幾個(gè)例子。
問(wèn)句分類也有一些直接拿現(xiàn)在深度學(xué)習(xí)的,比如embedding,實(shí)際現(xiàn)在深度學(xué)習(xí),比如前面提到的 Sequence to sequence 模型可以直接把用戶的問(wèn)題 embedding 成一個(gè)向量,我們直接拿這個(gè)向量實(shí)際上就可以做一些問(wèn)句的分類或者相似度計(jì)算,這張圖是大概 2000 多個(gè)用戶的問(wèn)題,然后做了一個(gè) embedding,就是用 Sequence to sequence 做了一個(gè) embedding。
這個(gè)時(shí)候拿這種可視化的工具把它可視化出來(lái),我們可以看出來(lái)它大概是能分出來(lái)的,這是三類問(wèn)題,實(shí)上它確實(shí)也就是三類問(wèn)題,雖然它們之間有一些交叉,現(xiàn)在這種深度學(xué)習(xí)的方法對(duì)于這種東西的建模能力還是挺強(qiáng)的,基本的問(wèn)題類別還是能區(qū)分出來(lái)的。
下面這張圖,現(xiàn)在這種基本的深度學(xué)習(xí)里邊的這些算法有一個(gè)很基礎(chǔ)的模型,就是 Sequence to sequence 的模型,它是基于把用戶說(shuō)的里邊的每一個(gè)詞,比如 ABC 是一個(gè)輸入的詞,ABC 是輸入的這個(gè)問(wèn)句,A 是一個(gè)詞,B 是一個(gè)詞,C 是一個(gè)詞,然后它的輸出有可能就是 XYZ,它把它送到 Sequence to sequence 這個(gè)神經(jīng)網(wǎng)絡(luò)里邊,A 是一個(gè)詞,進(jìn)去之后是一個(gè) RN 的模型,它就做這樣一個(gè) embedding,實(shí)際上到了 ABC,然后 eos,就是這個(gè)句子結(jié)束了。
結(jié)束之后這個(gè)神經(jīng)網(wǎng)絡(luò)中間層就是一個(gè) W,這個(gè) W 可以表示這個(gè)句子的語(yǔ)意的表示,用這個(gè) W 再去解碼出來(lái)一個(gè)答案,經(jīng)過(guò)大量的數(shù)據(jù)訓(xùn)練實(shí)際上就可以生成一個(gè)答案,生成式的閑聊可能主要就是這么來(lái)做的,這個(gè)模型,包括中間的這個(gè)表示 W,實(shí)際上也可以用來(lái)做問(wèn)句的分類或者問(wèn)句相似度的計(jì)算。
這是一個(gè)基本的模型,現(xiàn)在做問(wèn)句,我們剛才提到現(xiàn)在大量的實(shí)際使用中做問(wèn)句的相似度匹配,可能一種方法就是做句子相似度的計(jì)算,這張圖是一個(gè)做句子相似度計(jì)算的基礎(chǔ)模型,這里面這些都是現(xiàn)有的方法。
比如說(shuō)用 LSTM 來(lái)對(duì)句子做一個(gè)編碼,這個(gè) LSTM 這個(gè)基本的模型和剛才的 Sequence to sequence 的編碼階段類似,用戶的一個(gè)問(wèn)題和一個(gè)系統(tǒng)中的問(wèn)題,兩個(gè)都經(jīng)過(guò)一個(gè) LSTM,這個(gè) X 代表了輸入,H 代表的是模型中間的隱藏層,用戶的這句話經(jīng)過(guò) LSTM 把它編碼成一個(gè) h3(a) 這么一個(gè)狀態(tài),還有一個(gè)標(biāo)準(zhǔn)問(wèn)題(被檢索的問(wèn)題),經(jīng)過(guò)一個(gè)編碼,編碼成了 h4(b) 這么一個(gè)狀態(tài),兩個(gè)經(jīng)過(guò)一個(gè)距離的計(jì)算,就可以送到一個(gè)分類器里,給它做一個(gè)相似或者不相似的判斷。
這個(gè)方法是把用戶轉(zhuǎn)換成一個(gè)分類的問(wèn)題,二分類的問(wèn)題,這個(gè)用戶的問(wèn)題和我們標(biāo)準(zhǔn)庫(kù)里的問(wèn)題相似或者不相似,然后做一個(gè)判斷。這樣也可以做這個(gè)事,這是一種比較經(jīng)典的方式,其實(shí)它的效果也還挺好,很多場(chǎng)景下都是挺適合的。
我們看一下下面這篇文章,這篇文章我覺(jué)得是在做相似度計(jì)算方面比較經(jīng)典的一篇文章,它還做得比較好。它左邊是輸入,比如有 u_1、u_n-1、u_n是用戶的輸入,u_1 到 u_n 是用戶輸入的整個(gè)上下文,他可能說(shuō)了多句。r是response響應(yīng)。
這個(gè)上下文經(jīng)過(guò)一個(gè) Word Embedding,每一個(gè)都可以 Embedding 成一個(gè)詞向量的表示,然后經(jīng)過(guò)一個(gè) GRU 或者 LSTM 都可以,然后把它編碼成一個(gè)向量。這里邊做了一個(gè)比較復(fù)雜的操作,中間這部分,M1M2 這部分,它是把用戶的輸入和答案分別交叉去做了一個(gè)內(nèi)積的計(jì)算,都是向量,實(shí)際上表示出來(lái)都是矩陣,它們之間做一個(gè)內(nèi)積混合的運(yùn)算,充分的交叉之后再經(jīng)過(guò) CNN,CNN 然后經(jīng)過(guò)一個(gè)Pooling,Pooling 之后再經(jīng)過(guò)一個(gè)類似于這里邊又過(guò)了一個(gè) GRU,最后輸出一個(gè)分值。
這個(gè)和剛才 LSTM 那個(gè)方式最大的區(qū)別是,首先它層數(shù)增多了,因?yàn)樗钋懊媸?GRU,最后邊這兒也是一個(gè) GRU,中間多了一個(gè) CNN 的層,這個(gè) CNN 層的作用實(shí)際上是把問(wèn)題和答案的信息充分地混合,去找到它里邊匹配的相似或者結(jié)合的點(diǎn),然后來(lái)給出一個(gè)答復(fù)。這個(gè)模型在很多場(chǎng)景下的效果是比較好的,我們?cè)谝恍?shí)驗(yàn)中它的實(shí)際確實(shí)也是比較好的,但是它的問(wèn)題是,因?yàn)樗?jīng)過(guò)了一個(gè)很充分的混合,我們看到它對(duì)輸入的要求是有一定要求的,這個(gè)輸入相對(duì)比較長(zhǎng)一點(diǎn),它的信息比較充分,這樣做是比較好的。但是在有一些對(duì)話場(chǎng)景下,當(dāng)這個(gè)對(duì)話比較短的時(shí)候,它的效果實(shí)際上是有限的。這是一種方式。
這張圖是谷歌的一篇文章里,它只用 Attention來(lái)解決,比如 Input 和 Output 這兩個(gè)地方,經(jīng)過(guò)一系列的 Attention 最后輸出出來(lái),我們做一個(gè)分類決策。我們借助于 Attention 的這個(gè)模型,多層 Attention 的模型去做這個(gè)分類任務(wù)的時(shí)候,這個(gè)在一些比較短文本的場(chǎng)景下,問(wèn)題都比較短的情況下,它的效果實(shí)際上是比較好的。實(shí)際上這些模型可能都不是萬(wàn)能的,每一種模型都有它適用的場(chǎng)景,根據(jù)數(shù)據(jù)我們才能看到它在哪些場(chǎng)景下更好或者是有它的長(zhǎng)處。每一種模型都有它的長(zhǎng)處和缺點(diǎn)。
還有一些知識(shí)圖譜的方式,最直觀的可能知識(shí)圖譜是通過(guò)一些邏輯表達(dá)式來(lái)做的,比如說(shuō)一個(gè)簡(jiǎn)單的問(wèn)題,就是姚明的老婆出生在哪里這種,知識(shí)圖譜里邊存儲(chǔ)了姚明以及他的配偶葉麗,這個(gè)方式我們理解起來(lái)也比較簡(jiǎn)單,就是做了這么一個(gè)查找,但是當(dāng)知識(shí)圖譜比較大的時(shí)候,實(shí)際上知識(shí)圖譜上的問(wèn)答還是比較難做的。主要是用戶的表達(dá)很難去和知識(shí)圖譜里的東西嚴(yán)格地匹配上,一般情況下這種方式,把用戶的一個(gè)問(wèn)句嚴(yán)格地解析出來(lái)問(wèn)句里各個(gè)實(shí)體及其關(guān)系,然后把這些轉(zhuǎn)換成一個(gè)邏輯表達(dá)式,通過(guò)這個(gè)邏輯表達(dá)式到這個(gè)知識(shí)圖譜里去查找。這種方式其實(shí)也很常用。
剛才介紹了現(xiàn)在理解方面主要的方法,但是現(xiàn)在也有很多方式是說(shuō)集成,我集成上面各種方法,然后做一個(gè)集成學(xué)習(xí),比如問(wèn)句理解的方法,問(wèn)答的方式,就是檢索、知識(shí)圖譜、 embedding 的,都可以用來(lái)做問(wèn)答,任務(wù)型的問(wèn)答可能有規(guī)則的,也可以做embedding,也可以做分類,復(fù)雜問(wèn)題可能就是客服里邊有很多問(wèn)題其實(shí)挺復(fù)雜,長(zhǎng)度也比較長(zhǎng),可以用這種分類或者檢索的,也可以用更嚴(yán)格的語(yǔ)意解析的方式來(lái)做。這些不同的方式、算法做一個(gè)集成,實(shí)際上現(xiàn)在有挺多是這樣做的,效果也還是挺好。
就是我們?cè)谧鲆粋€(gè)模型去做選擇,上面比如做了三個(gè)或者五個(gè)模型來(lái)去理解,用戶來(lái)一句話對(duì)這幾個(gè)模型都去理解,理解出來(lái)之后然后做一個(gè)集成,集成之后再做最后的輸出,集成實(shí)際上是為了做選擇,到底用哪個(gè)模型的答案,當(dāng)然集成方式主要是兩種,一種是流水線,這些模型我排成一個(gè)順序,哪個(gè)模型解決了我就出了,我就把答案出出來(lái),然后就不再往后走了,另外一個(gè)是模型集成,每個(gè)模型都走,然后做一個(gè)決策判斷,選哪個(gè)模型的結(jié)果。
上面是關(guān)于對(duì)話中 NLU 的部分,另外一部分是關(guān)于對(duì)話中的知識(shí)管理,或者對(duì)話管理里的知識(shí)管理,對(duì)話管理這部分。
對(duì)話管理一般是這樣,我們?cè)谟猩舷挛牡那闆r下,對(duì)話管理就是用戶當(dāng)前我們可能能分析出來(lái)一個(gè)意圖,有的時(shí)候甚至當(dāng)前我們都分析不出來(lái)一個(gè)意圖。比如說(shuō)用戶說(shuō)了一個(gè)上海,我們實(shí)際上不知道用戶說(shuō)上海是什么意思,如果前面是在說(shuō)天氣,那上海就是跟天氣有關(guān),如果前面在說(shuō)訂票,那上海就是和訂票有關(guān)。有當(dāng)前的一個(gè)用戶的意圖,甚至這個(gè)都不是一個(gè)意圖,然后有上文,有一些上文是在哪個(gè)領(lǐng)域里邊,有用戶的信息,這個(gè)有時(shí)候可能還有一些用戶長(zhǎng)時(shí)間的信息,根據(jù)這些信息做出一些行為,到底是要答復(fù),還是拒絕,還是去問(wèn)用戶的補(bǔ)充,用戶需要補(bǔ)充一些信息。
對(duì)話管理里面有幾種主要的形式,一種是基于 slot 的,slot 可能就是一個(gè)填槽,如果有三個(gè)槽位,時(shí)間、地點(diǎn)、天氣現(xiàn)象,我就把它填完就行了,缺哪個(gè)我就問(wèn)用戶有哪個(gè)。另外一種用 slot 不是特別好解決的就是有些流程很復(fù)雜的,特別是在客服,比如這張圖里的場(chǎng)景,這是一個(gè)客服的場(chǎng)景,它的流程就很復(fù)雜,用戶到了某一個(gè)地方,他需要去判斷關(guān)于這個(gè)地方的信息,然后再做下一步的操作,這是這個(gè)對(duì)話管理主要的東西。
這張圖介紹一下關(guān)于最基礎(chǔ)的對(duì)話管理,比如 SlotFilling,它是在有沒(méi)有上下文,事先定義好了這張訂票的場(chǎng)景,然后它有一些上下文的信息怎么來(lái)控制,這個(gè)場(chǎng)景是剛才已經(jīng)提到的,就不詳細(xì)說(shuō)了。
在啟發(fā)式對(duì)話里邊還有一種基于話題的對(duì)話管理,首先話題本身,因?yàn)樗肓艘粋€(gè)新的概念就是話題,在問(wèn)用戶的問(wèn)題之外引入了話題,話題可以是人工建的,也可以是系統(tǒng)自動(dòng)計(jì)算出來(lái)的,也可以是系統(tǒng)引導(dǎo)用戶來(lái)創(chuàng)建,這個(gè)話題就是我剛才在最開(kāi)始講啟發(fā)式對(duì)話的時(shí)候,我們看到的,比如說(shuō)關(guān)于花的一些相關(guān)話題的組織,也可以通過(guò)一些學(xué)習(xí)的方式去挖掘問(wèn)題之間有哪些話題,特別在一些企業(yè)服務(wù)的場(chǎng)景中,因?yàn)槠髽I(yè)本身有它明確的應(yīng)用場(chǎng)景,所以它是有一些話題,它本身已經(jīng)組織好的關(guān)于這些話題的組織。
當(dāng)然話題的組織實(shí)際上是有很多問(wèn)題的,我們比如拿樹(shù)型來(lái)組織這些話題,這個(gè)系統(tǒng)的后面怎么來(lái)組織這個(gè)話題。比如按產(chǎn)品、人物來(lái)組織話題,所有的產(chǎn)品是一個(gè)話題,所有的人物是一個(gè)話題,但是當(dāng)我真正要去問(wèn)這個(gè)系統(tǒng)的時(shí)候,你會(huì)發(fā)現(xiàn)產(chǎn)品和人物它們之間是有交叉的,因?yàn)槿宋?,比如說(shuō)科技領(lǐng)域的人物和娛樂(lè)領(lǐng)域的人物,他們可能就沒(méi)有什么交叉領(lǐng)域,我們把它放在一個(gè)話題下面也不合適。所以說(shuō)話題的劃分實(shí)際上是有一定交叉的,當(dāng)然我們顯示出來(lái)一般情況下是一種樹(shù)型的方式來(lái)組織,這樣對(duì)用戶也比較容易理解。但是它真正的管理后面實(shí)際上有很多的交叉。
對(duì)話的管理,實(shí)際上一般情況下我們可以認(rèn)為它是這種狀態(tài),這種狀態(tài)轉(zhuǎn)換的過(guò)程,比較典型的可能就是一個(gè) Markov 決策過(guò)程,這里邊 S 是一組狀態(tài)集,A 是一組動(dòng)作,在某一個(gè)狀態(tài)下它遇到一個(gè)什么東西,然后要做一個(gè)什么樣的響應(yīng)或者什么樣的動(dòng)作,機(jī)器學(xué)習(xí)的方式可能就需要把這個(gè)對(duì)話組織成這樣一個(gè)狀態(tài),在這里邊一個(gè)重要的地方是需要有一些回報(bào)的函數(shù)。
比如說(shuō)在強(qiáng)化學(xué)習(xí)做這種對(duì)話的時(shí)候,不一定是做對(duì)話管理,做對(duì)話生成的時(shí)候也有這種場(chǎng)景,就是說(shuō)它去定義一個(gè)在對(duì)話里邊,它模擬多輪,根據(jù)一個(gè)定好的回報(bào)函數(shù),然后來(lái)做一個(gè)判斷,這是對(duì)話管理,對(duì)話管理用強(qiáng)化學(xué)習(xí)可以來(lái)做。實(shí)際上強(qiáng)化學(xué)習(xí)就是模擬多輪的對(duì)話,然后再回過(guò)來(lái)判斷當(dāng)前的狀態(tài)到底走哪一步合適。
這是一個(gè)用深度強(qiáng)化學(xué)習(xí)來(lái)做對(duì)話狀態(tài)跟蹤的簡(jiǎn)單狀態(tài),比如用戶輸入了一句話,通過(guò)語(yǔ)音識(shí)別,它可以有一個(gè)狀態(tài)的管理,然后去管理這個(gè)狀態(tài),通過(guò)一個(gè)策略來(lái)控制它的輸出。當(dāng)然它中間核心的一個(gè)部分是有這個(gè) Reward 函數(shù),在對(duì)話里,這個(gè) Reward 函數(shù)就非常重要,一般情況下它也不太好定義,因?yàn)槲覀儗?duì)話,它到底什么算合適,什么算不合適,這個(gè)還不是特別好控制的。
我們來(lái)看一下用強(qiáng)化學(xué)習(xí)來(lái)做對(duì)話,簡(jiǎn)單總結(jié)一下,在一個(gè)狀態(tài) S 下它可能有 m 種操作,我們不知道這個(gè) m 種操作哪一種能帶來(lái)什么樣的回報(bào),所以我們做一個(gè)探索,去探索每一種可能操作的回報(bào),利用這種回報(bào)做一個(gè)響應(yīng),做一個(gè)決策或者對(duì)這個(gè)回報(bào)做一個(gè)打分。
另外也有用對(duì)抗網(wǎng)絡(luò)做的,但對(duì)抗網(wǎng)絡(luò)有一個(gè)問(wèn)題,實(shí)際上也不太好控制,并且有些情況下可能會(huì)強(qiáng)制這些對(duì)話的走向,并且對(duì)抗網(wǎng)絡(luò)它的穩(wěn)定性也是一個(gè)問(wèn)題,這個(gè)訓(xùn)練過(guò)程中的穩(wěn)定性也是一個(gè)問(wèn)題。
不管是深度學(xué)習(xí),還是傳統(tǒng)機(jī)器學(xué)習(xí),在對(duì)話的 NLU 以及對(duì)話管理中的一些方法或者作用,前面講的都是一些現(xiàn)有的方法,怎么來(lái)做的,但是它里邊都會(huì)有一些問(wèn)題,機(jī)器學(xué)習(xí)的方法很多時(shí)候,如果生成式的那就不好控制它到底生成的和這個(gè)相關(guān)還是不相關(guān),很難判斷。如果是檢索式的,用戶說(shuō)的這句話,不管怎么著都會(huì)給它一個(gè)檢索答案,到底這個(gè)答案是給用戶還是不給用戶,用戶說(shuō)了一個(gè)不相關(guān)的問(wèn)題,我可能也會(huì)給它檢索出來(lái)一個(gè)答案,答案是給還是不給?這也是一個(gè)問(wèn)題。實(shí)際上這里邊就用到知識(shí),這個(gè)過(guò)程中就非常重要了。
知識(shí)在這里邊分為兩種,一種是知識(shí)圖譜,嚴(yán)格的知識(shí)圖譜,這里邊 KG 的這部分。另外一些是語(yǔ)言的知識(shí),比如說(shuō)語(yǔ)言的搭配、語(yǔ)言語(yǔ)法的轉(zhuǎn)換、拼寫的問(wèn)題、領(lǐng)域的問(wèn)題,實(shí)際上還包括一些領(lǐng)域詞的問(wèn)題,相似詞、同義詞,這些東西在自然語(yǔ)言發(fā)展,這么多年實(shí)際上已經(jīng)積累了很多這方面的知識(shí),但是這些東西在現(xiàn)在深度學(xué)習(xí)里邊實(shí)際上很難結(jié)合進(jìn)去。
通過(guò)上面提到的相似度計(jì)算模型我們可以完成前面說(shuō)的自然語(yǔ)言的相似度計(jì)算的問(wèn)題,但是我們給了這個(gè)答案很有可能是不對(duì)的,所以說(shuō)經(jīng)過(guò)這些語(yǔ)言的特征以及 KG 的知識(shí),把知識(shí)作為驗(yàn)證候選的證據(jù),深度語(yǔ)義模型給出多個(gè)候選答案,我們對(duì)于這種可能的各種侯選,通過(guò)知識(shí)圖譜或者語(yǔ)言現(xiàn)象對(duì)它做一個(gè)分析,然后去找到一些證據(jù),這些證據(jù)再來(lái)驗(yàn)證去選哪一個(gè)答案。因?yàn)橐话闱闆r下對(duì)于直接用嚴(yán)格的知識(shí)圖譜來(lái)解析一個(gè)問(wèn)題的時(shí)候有一個(gè)問(wèn)題,很多時(shí)候我們無(wú)法嚴(yán)格地去解析出來(lái)這個(gè)問(wèn)題,只能解析出來(lái)一部分。
-
管理系統(tǒng)
+關(guān)注
關(guān)注
1文章
2503瀏覽量
35931 -
自然語(yǔ)言
+關(guān)注
關(guān)注
1文章
288瀏覽量
13351 -
知識(shí)圖譜
+關(guān)注
關(guān)注
2文章
132瀏覽量
7709
原文標(biāo)題:一文詳解啟發(fā)式對(duì)話中的知識(shí)管理 | 公開(kāi)課筆記
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論