1、前言
在很多語音機器人或文本機器人對話場景下需要對整個對話過程或?qū)υ拞尉涞暮诵年P(guān)鍵字進行“提取或分析”(并不要理解每一句、只需要讀取中心思想),如提取電話號碼、郵政編碼、車牌號碼、地址庫、設(shè)備編號、商品編碼等,傳統(tǒng)方法如基于規(guī)則算法、或標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)模型都無法高效、精確處理復(fù)雜的業(yè)務(wù)場景、特別針對漢語言的方言的理解和處理上。
《VIKI-AI智能客服工單系統(tǒng)》是微服網(wǎng)絡(luò)最新研發(fā)的一套傳統(tǒng)呼叫中心+AI機器人+微信公眾號+智能工單+APP派單的“智能客服中心”整體解決方案系統(tǒng),支持私有化部署和快速業(yè)務(wù)場景適配的能力、下文介紹一個實際應(yīng)用場景。
2、實際應(yīng)用場景
2.1、案例介紹
由于2020年新冠疫情的發(fā)展、目前大量傳統(tǒng)呼叫中心服務(wù)公司或團隊面臨著巨大的人員招聘、管理、成本等綜合問題。某市運營商也是面臨同樣問題,急需要通過AI語音技術(shù)處理寬帶、電視、電話等原來由人工處理的客服受理問題。如:“電話接待、通話錄音、智能自助排障、轉(zhuǎn)接裝維人員、轉(zhuǎn)接人工坐席、工單自動采集與下發(fā)、自動報表數(shù)據(jù)分析、工單APP遠程處理”等、整個業(yè)務(wù)流程圖如下:
2.2、對話效果
如下圖機器人接聽來電、詢問和核對手機號碼、根據(jù)手機號碼匹配轉(zhuǎn)接裝維人員或電話值班客服。
1、算法介紹
3.1、注意力機制(Attention Mechanism)
AM源于對人類視覺的研究。在認知科學(xué)中,由于信息處理的瓶頸,人類會選擇性地關(guān)注所有信息的一部分,同時忽略其他可見的信息。上述機制通常被稱為注意力機制。人類視網(wǎng)膜不同的部位具有不同程度的信息處理能力,即敏銳度(Acuity),只有視網(wǎng)膜中央凹部位具有最強的敏銳度。為了合理利用有限的視覺信息處理資源,人類需要選擇視覺區(qū)域中的特定部分,然后集中關(guān)注它。例如,人們在閱讀時,通常只有少量要被讀取的詞會被關(guān)注和處理。綜上,注意力機制主要有兩個方面:決定需要關(guān)注輸入的哪部分;分配有限的信息處理資源給重要的部分。近年來,深度學(xué)習(xí)的研究越來越深入,在各個領(lǐng)域也都獲得了不少突破性的進展。微服網(wǎng)絡(luò)研發(fā)人員近年來一直致力于基于attention機制的神經(jīng)網(wǎng)絡(luò)的研究與應(yīng)用,在VIKI-AI系列產(chǎn)品獲得了非凡成績和效果,解決了很多實際問題。
3.2、軟性注意力機制的數(shù)學(xué)原理
在神經(jīng)網(wǎng)絡(luò)模型處理大量輸入信息的過程中,利用注意力機制,可以做到只選擇一些關(guān)鍵的的輸入信息進行處理,來提高神經(jīng)網(wǎng)絡(luò)的效率,比如在機器閱讀理解任務(wù)中,給定一篇很長的文章,然后就文章的內(nèi)容進行提問。提出的問題只和段落中一兩個句子有關(guān),其余部分都是無關(guān)的,那么只需要把相關(guān)的片段挑出來讓神經(jīng)網(wǎng)絡(luò)進行處理,而不需要把所有文章內(nèi)容都輸入到神經(jīng)網(wǎng)絡(luò)中。軟性注意力機制一般的處理方法包括“普通模式”和“鍵值對注意力模式”,“普通模式”讀者可以查閱相關(guān)資料、本文重點描述VIKI-AI實際使用的“鍵值對注意力模式”。
3.2、鍵值對注意力模式
通常可以用鍵值對(key-value pair)來表示輸入信息,那么N個輸入信息就可以表示為(K, V)= [(k1,v1),(k2,v2),...,(kN,vN)],其中“鍵”用來計算注意分布σi,“值”用來計算聚合信息。那么就可以將注意力機制看做是一種軟尋址操作:把輸入信息X看做是存儲器中存儲的內(nèi)容,元素由地址Key(鍵)和值Value組成,當(dāng)前有個Key=Query的查詢,目標(biāo)是取出存儲器中對應(yīng)的Value值,即Attention值。而在軟尋址中,并非需要硬性滿足Key=Query的條件來取出存儲信息,而是通過計算Query與存儲器內(nèi)元素的地址Key的相似度來決定,從對應(yīng)的元素Value中取出多少內(nèi)容。每個地址Key對應(yīng)的Value值都會被抽取內(nèi)容出來,然后求和,這就相當(dāng)于由Query與Key的相似性來計算每個Value值的權(quán)重,然后對Value值進行加權(quán)求和。加權(quán)求和得到最終的Value值,也就是Attention值。
如下圖所示,以上的計算可以歸納為三個過程:
第一步:根據(jù)Query和Key計算二者的相似度??梢杂蒙厦嫠谐龅募有阅P?、點積模型或余弦相似度來計算,得到注意力得分si;
第二步:用softmax函數(shù)對注意力得分進行數(shù)值轉(zhuǎn)換。一方面可以進行歸一化,得到所有權(quán)重系數(shù)之和為1的概率分布,另一方面可以用softmax函數(shù)的特性突出重要元素的權(quán)重;
第三步:根據(jù)權(quán)重系數(shù)對Value進行加權(quán)求和:
圖示如下:
可以把以上的過程用簡潔的公式整理出來:
以上就是軟性注意力機制的數(shù)學(xué)原理。
3.3、seq2seq模型介紹
seq2seq屬于encoder-decoder結(jié)構(gòu)的一種,這里看看常見的encoder-decoder結(jié)構(gòu),基本思想就是利用兩個RNN,一個RNN作為encoder,另一個RNN作為decoder。encoder負責(zé)將輸入序列壓縮成指定長度的向量,這個向量就可以看成是這個序列的語義,這個過程稱為編碼,如下圖,獲取語義向量最簡單的方式就是直接將最后一個輸入的隱狀態(tài)作為語義向量C。也可以對最后一個隱含狀態(tài)做一個變換得到語義向量,還可以將輸入序列的所有隱含狀態(tài)做一個變換得到語義變量。
而decoder則負責(zé)根據(jù)語義向量生成指定的序列,這個過程也稱為解碼,如下圖,最簡單的方式是將encoder得到的語義變量作為初始狀態(tài)輸入到decoder的rnn中,得到輸出序列??梢钥吹缴弦粫r刻的輸出會作為當(dāng)前時刻的輸入,而且其中語義向量C只作為初始狀態(tài)參與運算,后面的運算都與語義向量C無關(guān)。
decoder處理方式還有另外一種,就是語義向量C參與了序列所有時刻的運算,如下圖,上一時刻的輸出仍然作為當(dāng)前時刻的輸入,但語義向量C會參與所有時刻的運算。
encoder-decoder模型對輸入和輸出序列的長度沒有要求,應(yīng)用場景也更加廣泛。
3.4、seq2seq模型通用訓(xùn)練
前面有介紹了encoder-decoder模型的簡單模型,但這里以下圖稍微復(fù)雜一點的模型說明訓(xùn)練的思路,不同的encoder-decoder模型結(jié)構(gòu)有差異,但訓(xùn)練的核心思想都大同小異。
我們知道RNN是可以學(xué)習(xí)概率分布然后進行預(yù)測的,比如我們輸入t個時刻的數(shù)據(jù)后預(yù)測t+1時刻的數(shù)據(jù),最經(jīng)典的就是字符預(yù)測的例子,可在前面的《循環(huán)神經(jīng)網(wǎng)絡(luò)》和《TensorFlow構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)》了解到更加詳細的說明。為了得到概率分布一般會在RNN的輸出層使用softmax激活函數(shù),就可以得到每個分類的概率。
對于RNN,對于某個序列,對于時刻t,它的輸出概率為p(xt|x1,...,xt?1)p(xt|x1,...,xt?1),則softmax層每個神經(jīng)元的計算如下:
其中ht是隱含狀態(tài),它與上一時刻的狀態(tài)及當(dāng)前輸入有關(guān),即:
那么整個序列的概率就為
而對于encoder-decoder模型,設(shè)有輸入序列x1,...,xTx1,...,xT,輸出序列y1,...,yT‘y1,...,yT‘,輸入序列和輸出序列的長度可能不同。那么其實就是要根據(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對應(yīng)的隱含狀態(tài)向量,它其實可以等同表示輸入序列:
此時,ht=f(ht?1,yt?1,v)ht=f(ht?1,yt?1,v),decoder的隱含狀態(tài)與上一時刻狀態(tài)、上一時刻輸出和狀態(tài)向量v都有關(guān),這里不同于RNN,RNN是與當(dāng)前時刻輸入相關(guān),而decoder是將上一時刻的輸出輸入到RNN中。于是decoder的某一時刻的概率分布可用下式表示:
所以對于訓(xùn)練樣本,我們要做的就是在整個訓(xùn)練樣本下,所有樣本的p(y1,...,yT‘|x1,...,xT)p(y1,...,yT‘|x1,...,xT)概率之和最大,對應(yīng)的對數(shù)似然條件概率函數(shù)為
,使之最大化,θ則是待確定的模型參數(shù)。對于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、參考文獻
[1]、邱錫鵬:《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》
[2]、深度學(xué)習(xí)中的注意力機制(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).