1、前言
在很多語(yǔ)音機(jī)器人或文本機(jī)器人對(duì)話場(chǎng)景下需要對(duì)整個(gè)對(duì)話過(guò)程或?qū)υ拞尉涞暮诵年P(guān)鍵字進(jìn)行“提取或分析”(并不要理解每一句、只需要讀取中心思想),如提取電話號(hào)碼、郵政編碼、車牌號(hào)碼、地址庫(kù)、設(shè)備編號(hào)、商品編碼等,傳統(tǒng)方法如基于規(guī)則算法、或標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)模型都無(wú)法高效、精確處理復(fù)雜的業(yè)務(wù)場(chǎng)景、特別針對(duì)漢語(yǔ)言的方言的理解和處理上。
《VIKI-AI智能客服工單系統(tǒng)》是微服網(wǎng)絡(luò)最新研發(fā)的一套傳統(tǒng)呼叫中心+AI機(jī)器人+微信公眾號(hào)+智能工單+APP派單的“智能客服中心”整體解決方案系統(tǒng),支持私有化部署和快速業(yè)務(wù)場(chǎng)景適配的能力、下文介紹一個(gè)實(shí)際應(yīng)用場(chǎng)景。
2、實(shí)際應(yīng)用場(chǎng)景
2.1、案例介紹
由于2020年新冠疫情的發(fā)展、目前大量傳統(tǒng)呼叫中心服務(wù)公司或團(tuán)隊(duì)面臨著巨大的人員招聘、管理、成本等綜合問(wèn)題。某市運(yùn)營(yíng)商也是面臨同樣問(wèn)題,急需要通過(guò)AI語(yǔ)音技術(shù)處理寬帶、電視、電話等原來(lái)由人工處理的客服受理問(wèn)題。如:“電話接待、通話錄音、智能自助排障、轉(zhuǎn)接裝維人員、轉(zhuǎn)接人工坐席、工單自動(dòng)采集與下發(fā)、自動(dòng)報(bào)表數(shù)據(jù)分析、工單APP遠(yuǎn)程處理”等、整個(gè)業(yè)務(wù)流程圖如下:
2.2、對(duì)話效果
如下圖機(jī)器人接聽(tīng)來(lái)電、詢問(wèn)和核對(duì)手機(jī)號(hào)碼、根據(jù)手機(jī)號(hào)碼匹配轉(zhuǎn)接裝維人員或電話值班客服。
1、算法介紹
3.1、注意力機(jī)制(Attention Mechanism)
AM源于對(duì)人類視覺(jué)的研究。在認(rèn)知科學(xué)中,由于信息處理的瓶頸,人類會(huì)選擇性地關(guān)注所有信息的一部分,同時(shí)忽略其他可見(jiàn)的信息。上述機(jī)制通常被稱為注意力機(jī)制。人類視網(wǎng)膜不同的部位具有不同程度的信息處理能力,即敏銳度(Acuity),只有視網(wǎng)膜中央凹部位具有最強(qiáng)的敏銳度。為了合理利用有限的視覺(jué)信息處理資源,人類需要選擇視覺(jué)區(qū)域中的特定部分,然后集中關(guān)注它。例如,人們?cè)陂喿x時(shí),通常只有少量要被讀取的詞會(huì)被關(guān)注和處理。綜上,注意力機(jī)制主要有兩個(gè)方面:決定需要關(guān)注輸入的哪部分;分配有限的信息處理資源給重要的部分。近年來(lái),深度學(xué)習(xí)的研究越來(lái)越深入,在各個(gè)領(lǐng)域也都獲得了不少突破性的進(jìn)展。微服網(wǎng)絡(luò)研發(fā)人員近年來(lái)一直致力于基于attention機(jī)制的神經(jīng)網(wǎng)絡(luò)的研究與應(yīng)用,在VIKI-AI系列產(chǎn)品獲得了非凡成績(jī)和效果,解決了很多實(shí)際問(wèn)題。
3.2、軟性注意力機(jī)制的數(shù)學(xué)原理
在神經(jīng)網(wǎng)絡(luò)模型處理大量輸入信息的過(guò)程中,利用注意力機(jī)制,可以做到只選擇一些關(guān)鍵的的輸入信息進(jìn)行處理,來(lái)提高神經(jīng)網(wǎng)絡(luò)的效率,比如在機(jī)器閱讀理解任務(wù)中,給定一篇很長(zhǎng)的文章,然后就文章的內(nèi)容進(jìn)行提問(wèn)。提出的問(wèn)題只和段落中一兩個(gè)句子有關(guān),其余部分都是無(wú)關(guān)的,那么只需要把相關(guān)的片段挑出來(lái)讓神經(jīng)網(wǎng)絡(luò)進(jìn)行處理,而不需要把所有文章內(nèi)容都輸入到神經(jīng)網(wǎng)絡(luò)中。軟性注意力機(jī)制一般的處理方法包括“普通模式”和“鍵值對(duì)注意力模式”,“普通模式”讀者可以查閱相關(guān)資料、本文重點(diǎn)描述VIKI-AI實(shí)際使用的“鍵值對(duì)注意力模式”。
3.2、鍵值對(duì)注意力模式
通??梢杂面I值對(duì)(key-value pair)來(lái)表示輸入信息,那么N個(gè)輸入信息就可以表示為(K, V)= [(k1,v1),(k2,v2),...,(kN,vN)],其中“鍵”用來(lái)計(jì)算注意分布σi,“值”用來(lái)計(jì)算聚合信息。那么就可以將注意力機(jī)制看做是一種軟尋址操作:把輸入信息X看做是存儲(chǔ)器中存儲(chǔ)的內(nèi)容,元素由地址Key(鍵)和值Value組成,當(dāng)前有個(gè)Key=Query的查詢,目標(biāo)是取出存儲(chǔ)器中對(duì)應(yīng)的Value值,即Attention值。而在軟尋址中,并非需要硬性滿足Key=Query的條件來(lái)取出存儲(chǔ)信息,而是通過(guò)計(jì)算Query與存儲(chǔ)器內(nèi)元素的地址Key的相似度來(lái)決定,從對(duì)應(yīng)的元素Value中取出多少內(nèi)容。每個(gè)地址Key對(duì)應(yīng)的Value值都會(huì)被抽取內(nèi)容出來(lái),然后求和,這就相當(dāng)于由Query與Key的相似性來(lái)計(jì)算每個(gè)Value值的權(quán)重,然后對(duì)Value值進(jìn)行加權(quán)求和。加權(quán)求和得到最終的Value值,也就是Attention值。
如下圖所示,以上的計(jì)算可以歸納為三個(gè)過(guò)程:
第一步:根據(jù)Query和Key計(jì)算二者的相似度??梢杂蒙厦嫠谐龅募有阅P汀Ⅻc(diǎn)積模型或余弦相似度來(lái)計(jì)算,得到注意力得分si;
第二步:用softmax函數(shù)對(duì)注意力得分進(jìn)行數(shù)值轉(zhuǎn)換。一方面可以進(jìn)行歸一化,得到所有權(quán)重系數(shù)之和為1的概率分布,另一方面可以用softmax函數(shù)的特性突出重要元素的權(quán)重;
第三步:根據(jù)權(quán)重系數(shù)對(duì)Value進(jìn)行加權(quán)求和:
圖示如下:
可以把以上的過(guò)程用簡(jiǎn)潔的公式整理出來(lái):
以上就是軟性注意力機(jī)制的數(shù)學(xué)原理。
3.3、seq2seq模型介紹
seq2seq屬于encoder-decoder結(jié)構(gòu)的一種,這里看看常見(jiàn)的encoder-decoder結(jié)構(gòu),基本思想就是利用兩個(gè)RNN,一個(gè)RNN作為encoder,另一個(gè)RNN作為decoder。encoder負(fù)責(zé)將輸入序列壓縮成指定長(zhǎng)度的向量,這個(gè)向量就可以看成是這個(gè)序列的語(yǔ)義,這個(gè)過(guò)程稱為編碼,如下圖,獲取語(yǔ)義向量最簡(jiǎn)單的方式就是直接將最后一個(gè)輸入的隱狀態(tài)作為語(yǔ)義向量C。也可以對(duì)最后一個(gè)隱含狀態(tài)做一個(gè)變換得到語(yǔ)義向量,還可以將輸入序列的所有隱含狀態(tài)做一個(gè)變換得到語(yǔ)義變量。
而decoder則負(fù)責(zé)根據(jù)語(yǔ)義向量生成指定的序列,這個(gè)過(guò)程也稱為解碼,如下圖,最簡(jiǎn)單的方式是將encoder得到的語(yǔ)義變量作為初始狀態(tài)輸入到decoder的rnn中,得到輸出序列。可以看到上一時(shí)刻的輸出會(huì)作為當(dāng)前時(shí)刻的輸入,而且其中語(yǔ)義向量C只作為初始狀態(tài)參與運(yùn)算,后面的運(yùn)算都與語(yǔ)義向量C無(wú)關(guān)。
decoder處理方式還有另外一種,就是語(yǔ)義向量C參與了序列所有時(shí)刻的運(yùn)算,如下圖,上一時(shí)刻的輸出仍然作為當(dāng)前時(shí)刻的輸入,但語(yǔ)義向量C會(huì)參與所有時(shí)刻的運(yùn)算。
encoder-decoder模型對(duì)輸入和輸出序列的長(zhǎng)度沒(méi)有要求,應(yīng)用場(chǎng)景也更加廣泛。
3.4、seq2seq模型通用訓(xùn)練
前面有介紹了encoder-decoder模型的簡(jiǎn)單模型,但這里以下圖稍微復(fù)雜一點(diǎn)的模型說(shuō)明訓(xùn)練的思路,不同的encoder-decoder模型結(jié)構(gòu)有差異,但訓(xùn)練的核心思想都大同小異。
我們知道RNN是可以學(xué)習(xí)概率分布然后進(jìn)行預(yù)測(cè)的,比如我們輸入t個(gè)時(shí)刻的數(shù)據(jù)后預(yù)測(cè)t+1時(shí)刻的數(shù)據(jù),最經(jīng)典的就是字符預(yù)測(cè)的例子,可在前面的《循環(huán)神經(jīng)網(wǎng)絡(luò)》和《TensorFlow構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)》了解到更加詳細(xì)的說(shuō)明。為了得到概率分布一般會(huì)在RNN的輸出層使用softmax激活函數(shù),就可以得到每個(gè)分類的概率。
對(duì)于RNN,對(duì)于某個(gè)序列,對(duì)于時(shí)刻t,它的輸出概率為p(xt|x1,...,xt−1)p(xt|x1,...,xt−1),則softmax層每個(gè)神經(jīng)元的計(jì)算如下:
其中ht是隱含狀態(tài),它與上一時(shí)刻的狀態(tài)及當(dāng)前輸入有關(guān),即:
那么整個(gè)序列的概率就為
而對(duì)于encoder-decoder模型,設(shè)有輸入序列x1,...,xTx1,...,xT,輸出序列y1,...,yT‘y1,...,yT‘,輸入序列和輸出序列的長(zhǎng)度可能不同。那么其實(shí)就是要根據(jù)輸入序列去得到輸出序列的可能,于是有下面的條件概率,x1,...,xTx1,...,xT發(fā)生的情況下y1,...,yT‘y1,...,yT‘發(fā)生的概率等于p(yt|v,y1,...,yt−1)p(yt|v,y1,...,yt−1)連乘。其中v表示x1,...,xTx1,...,xT對(duì)應(yīng)的隱含狀態(tài)向量,它其實(shí)可以等同表示輸入序列:
此時(shí),ht=f(ht−1,yt−1,v)ht=f(ht−1,yt−1,v),decoder的隱含狀態(tài)與上一時(shí)刻狀態(tài)、上一時(shí)刻輸出和狀態(tài)向量v都有關(guān),這里不同于RNN,RNN是與當(dāng)前時(shí)刻輸入相關(guān),而decoder是將上一時(shí)刻的輸出輸入到RNN中。于是decoder的某一時(shí)刻的概率分布可用下式表示:
所以對(duì)于訓(xùn)練樣本,我們要做的就是在整個(gè)訓(xùn)練樣本下,所有樣本的p(y1,...,yT‘|x1,...,xT)p(y1,...,yT‘|x1,...,xT)概率之和最大,對(duì)應(yīng)的對(duì)數(shù)似然條件概率函數(shù)為
,使之最大化,θ則是待確定的模型參數(shù)。對(duì)于rnn、lstm和gru的結(jié)構(gòu)可以看這幾篇文章《循環(huán)神經(jīng)網(wǎng)絡(luò)》 《LSTM神經(jīng)網(wǎng)絡(luò)》 《GRU神經(jīng)網(wǎng)絡(luò)》。
1、參考文獻(xiàn)
[1]、邱錫鵬:《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》
[2]、深度學(xué)習(xí)中的注意力機(jī)制(2017版) https://blog.csdn.net/malefactor/article/details/78767781
[3]、Dzmitry Bahdanau、KyungHyun Cho、Yoshua Bengio.
《Neural Machine Translation by Jointly Learning to Align and Translate 》
[4]、Cho, K., van Merrienboer, B., Gulcehre, C., Bougares, F., Schwenk, H., and Bengio, Y. (2014a).
[5] 《Learning phrase representations using RNN encoder-decoder for statistical machine translation》
[6] Yin, W., Ebert, S. & Schütze, H. Attention-Based Convolutional Neural Network for Machine Comprehension. 7 (2016).
[7] Kadlec, R., Schmid, M., Bajgar, O. & Kleindienst, J. Text Understanding with the Attention Sum Reader Network. arXiv:1603.01547v1 [cs.CL] (2016).
[8] Dhingra, B., Liu, H., Cohen, W. W. & Salakhutdinov, R. Gated-Attention Readers for Text Comprehension. (2016).
[9] Vinyals, O. et al. Grammar as a Foreign Language. arXiv 1–10 (2015).
[10] Wang, L., Cao, Z., De Melo, G. & Liu, Z. Relation Classification via Multi-Level Attention CNNs. Acl 1298–1307 (2016).