雷鋒網(wǎng)(搜索“雷鋒網(wǎng)”公眾號關(guān)注)按:本文作者NLP日月星辰,北京航空航天大學(xué)在讀博士生,研究方向為 自然語言處理,深度學(xué)習(xí)。
深度學(xué)習(xí)已經(jīng)在許多工業(yè)產(chǎn)品中取得應(yīng)用。例如Jeff Dean(谷歌大腦負責(zé)人)在去年的WSDM會議上指出,谷歌的搜索相關(guān)性計算模塊,深度學(xué)習(xí)的三個特征是權(quán)重最大的。
并且深度學(xué)習(xí)算法也大量的應(yīng)用到了谷歌和百度的機器翻譯系統(tǒng)之中,使機器翻譯質(zhì)量提升。本文將介紹另一個深度學(xué)習(xí)的應(yīng)用,郵件自動回復(fù)。
手機版郵件系統(tǒng)的困擾
自動回復(fù)是否可以在工業(yè)中進行實際應(yīng)用,一直是人們喋喋不休爭論的一個問題,很多人認(rèn)為對話系統(tǒng),所利用的自動回復(fù)技術(shù)只是一個玩物,無法解決用戶的剛需。而谷歌,在去年十一月將自動回復(fù)技術(shù)應(yīng)用到了Inbox中。
Inbox是谷歌在手機上的郵件客戶端,類似于手機上的Outlook。Inbox利用深度學(xué)習(xí)技術(shù),增添了為一些語義簡單的郵件進行自動回復(fù)的功能,擬解決“由于屏幕較小,手機郵件回復(fù)很不方便”的用戶痛點。其中主要解決如下幾個問題:
如何選擇可回復(fù)郵件:當(dāng)今商務(wù)人士郵件眾多,很多郵件并不長,據(jù)谷歌統(tǒng)計有百分之25%的郵件少于20個詞。那么對這些簡短且語義好理解的郵件是否可以通過分類進行篩選,交給郵件生成系統(tǒng)是一個有趣的分類問題。
回復(fù)的郵件是否可分類:很多郵件的回復(fù)類型可枚舉,例如問“下午三點是否可以參加XXX會議”,答案無非是“可以參加”,“有事情不能參加”,“我在想想”這三個情況,所以如何通過算法將三種類型的回復(fù)進行聚類是一個有現(xiàn)實意義的聚類問題。
如何針對每個類選出最合適的郵件:針對每個類,如何通過自動回復(fù)算法生成特定的回復(fù),是一個自然語言處理上的回復(fù)生成問題。
系統(tǒng)架構(gòu)
谷歌于今年KDD會議上,發(fā)布了SmartReply的論文。我們首先看SmartReply的架構(gòu)
從圖中可以看到,系統(tǒng)分為四個部分,分別是可回復(fù)郵件篩選,回復(fù)郵件聚類,回復(fù)郵件選擇,和多樣性回復(fù)生成,之后將一一介紹。
可回復(fù)郵件篩選機制(Trigger Response)
模塊功能
在谷歌的郵件回復(fù)系統(tǒng)中,并不是每一封郵件都會給出自動回復(fù)的建議。因為有些郵件意思簡單明了,機器可以快速的理解,并給出一些回復(fù)候選。
例如:今天晚上七點我們開個會討論一下項目修改方案吧。
這個郵件機器可以快速理解,并通過之后的步驟給出對應(yīng)的候選方案。然而,還存在著一些郵件結(jié)構(gòu)復(fù)雜,機器并不能很好的理解其中含義。
例如:我已經(jīng)看完你的論文,在你的論文中,公式2的推導(dǎo)出現(xiàn)了錯誤,我覺得倒數(shù)應(yīng)該用鏈?zhǔn)椒▌t求解。
總之,在回復(fù)之前,需要一個模塊判定機器是否可以理解郵件語義,避免在不理解的時候仍然給出郵件回復(fù)候選,使用戶感到被騷擾。
模塊實現(xiàn)方法
可回復(fù)郵件的篩選機制歸根結(jié)底是一個分類問題,即給定訓(xùn)練集合 D ={X,Y},X代表文檔的特征集合,Y代表文檔的標(biāo)簽,學(xué)習(xí)函數(shù)f(x),使得y與f(x)的誤差最小。在此任務(wù)中谷歌選擇了多層感知機作為分類器,多層感知機如下圖所示
在此分類任務(wù)中,這篇論文使用了一元詞匯(Unigram)和二元詞匯(Bigram)來對抽取特征,并將同一類的特征進行相加,得到MLP的輸入。
這個MLP模型有三個隱層層,每層的激活函數(shù)使用了ReLU,且利用DropOut防止過擬合。最終經(jīng)過試驗證明,這個分類模型的AUC為0.854。針對此模塊,筆者觀點如下:
MLP模型算是文本分類的最簡單模型之一,然而簡單模型在這個任務(wù)上仍能取得不錯的效果,這和一些其他的論文得到的結(jié)論一致(例如Facebook的FastText,利用簡單的結(jié)構(gòu)就可以在分類任務(wù)和復(fù)雜結(jié)構(gòu)的網(wǎng)絡(luò)得到近似的效果)。大部分現(xiàn)實分類任務(wù)簡單,很多簡單的模型便可以達到還不錯的效果,刻意追求模型的復(fù)雜性在簡單任務(wù)上往往得不償失。
AI(人工智能)+HI(人類智能)仍然是現(xiàn)在的AI產(chǎn)品不可或缺的一環(huán),即使分類器表現(xiàn)良好達到85%,但在工業(yè)級的系統(tǒng)中,仍然會有15%出錯,所以SmartReply系統(tǒng)是讓用戶選擇他生成的回復(fù),而不是直接幫助用戶進行郵件回復(fù)或者郵件書寫。
回復(fù)生成、聚類、以及多樣性選擇算法
模塊功能
此模塊為該應(yīng)用核心,功能如圖所示,當(dāng)用戶收到一封郵件,Inbox會自動生成3個供挑選回復(fù)(三個回復(fù)在屏幕下側(cè))。例如,第一封郵件的三個回復(fù)分別為:
1. Count us in!
2. We will be there
3. Sorry we won't be able to make it
這樣可以加速用戶在手機端輸入不便,回復(fù)郵件較慢的體驗。
模塊實現(xiàn)方法
此篇文章中,最核心的東西便是回復(fù)的生成以及聚類了。和面向開放領(lǐng)域的聊天機器人不同,郵件回復(fù)需要對回復(fù)進行聚類,之后從每個類別中選一個代表句。
回復(fù)聚類的算法如下:
構(gòu)建圖G={V,E},V是圖中的點,E是圖的邊。V由來信,回信,以及回信的特征構(gòu)成。
首先抽樣N個郵件作為頂點,構(gòu)建頂點集合VR。為每個類別人工選擇種子郵件(例如 Thank you , Thanks是感謝類的郵件),并將這些郵件VL也放到圖G中。此時由于人工的干預(yù),我們知道在特定的類別Ci有{r1,r2...rn}個回復(fù)屬于此類。
通過詞匯特征的抽取,構(gòu)建G中代表特征的頂點集合VF,如果郵件有該特征則郵件和該頂點進行連接。
之后使用了半監(jiān)督的聚類方法將郵件進行聚類,并且每隔特定輪次,進行新類別發(fā)現(xiàn),最終得到376類。類別例如(will do, Thanks, I got it 等)
回復(fù)選擇部分并沒有什么創(chuàng)新點,是一個基于LSTM模型的排序問題,候選集合是由most frequent的回復(fù)郵件構(gòu)成,值得注意的是此篇所用的LSTM并不是利用一個Dual-LSTM講發(fā)來的郵件和回復(fù)郵件分別進行encoding之后計算相似度。而是類似LSTM的生成模型,計算給定所發(fā)來郵件O的時候,回復(fù)中每個詞被生成的概率P(wi|O)
在具體的實際應(yīng)用中,可以根據(jù)場景的不同選擇基于深度學(xué)習(xí)的回復(fù)算法。我們可以看到針對回復(fù)選擇這部分,由于候選回復(fù)均為高頻回復(fù)郵件,所以回復(fù)會十分的沒有營養(yǎng),大多基于簡單的英文表達(Sure,No,Thanks)等,想必如何讓郵件回復(fù)和郵件內(nèi)容正確的呼應(yīng)起來也是非常值得研究的一個課題,這樣可以避免千篇一律的回復(fù),讓被回復(fù)者有不受尊重的感覺。
在多樣性選擇方面,按照文章的敘述做了兩個后處理。
第一個后處理是重復(fù)回復(fù)刪除,操作具體方法十分簡單,首先根據(jù)上面所說的郵件排序系統(tǒng)對所有候選郵件進行降序排列,之后從top1開始加入系統(tǒng)要輸出的集合OUTPUT中。
之后每個候選回復(fù)郵件r在加入OUTPUT時,檢測r是否與OUTPUT中的任意郵件屬于上面聚類算法所給出的同一個類別,如果不是才可以加入OUTPUT之中。OUTPUT達到3個回復(fù)即停止迭代。
第二個后處理是強行生成拒絕傾向的回復(fù)。如果OUTPUT集合中的回復(fù)中沒有拒絕傾向的回復(fù),且top2中有同意傾向的回復(fù),則自動將第三個回復(fù)替換為拒絕傾向。以此給出更加多樣的回復(fù),讓使用者的選擇面更大。
結(jié)語
SmartReply是谷歌將回復(fù)選擇技術(shù)利用到移動版郵件系統(tǒng)的一個嘗試,希望解決手機打字不便的問題。論文敘述了一個系統(tǒng),并為我們實現(xiàn)一個郵件回復(fù)系統(tǒng)指明了方向。