【編者按】Google將為其Gmail應用推出一項稱為智能回復(Smart Reply)的新功能,這篇博文解析了Smart Reply的技術原理:建立在一對循環神經網絡(RNN)之上,其中一個RNN用于對收到的電子郵件進行編碼,另一個用于預測可能的回復。
機器智能
我喜歡在Google工作,因為可以使用前沿的機器智能來造福人類。最近的兩篇研究型博文談到了我們是如何使用 深度神經網絡的機器學習來提高語音搜索能力和 YouTube視頻縮略圖。如今,我們可以分享更瘋狂的功能——智能回復(Smart Reply),一個使用深度神經網絡訓練的撰寫email的功能。
我經常會收到大量的email,一般我都是在手機上閱讀這些郵件。然而在手機上回復郵件真的是件痛苦的事,即使只是簡短的幾句話。如果有一個系統,可以自動地判斷是否需要簡單地回復這封郵件,并且撰寫幾個可以編輯的回復或者是輕輕一點就發送出去,那該多好啊。
幾個月前,來自Gmail團隊的Bálint Miklós問我這種功能是否可以實現。我當時說,這聽起來就跟通過 圖靈測試一樣,所以不要對我們寄望太高……但在使用機器學習改進垃圾郵件檢測和email分類的同時,我覺得我們可以嘗試一下。
對于理解和生成自然語言的應用程序,如機器翻譯,已經有著很悠久的研究歷史。去年,Google研究人員Oriol Vinyals、Ilya Sutskever 和 Quoc Le提出融合這兩項工作,并稱之為序列到序列的學習。這種端到端的方法已經有許多的應用,但在實驗中一個最難預料的就是會話合成。早期的研究成果表明,我們可以使用序列到序列的學習來控制聊天機器人,讓它玩的非常開心,盡管在程序中并沒有明確的語言知識。
顯然,研究機靈的聊天機器人與開發智能撰寫email的系統是大不相同的。這項工作仍是一個開放性的難題,即使我們能夠建立一些對用戶真正有用的東西。然而,我們團隊的一名工程師Anjuli Kannan表示愿意接受這個挑戰。在與機器智能研究者和Gmail工程師的緊密合作中,她闡述并試驗了序列到序列的研究思路。其結果是這項神經網絡技術將會成功地運行在本周推出的智能回復功能的核心模塊中。
工作原理
嘗試去建立一個響應式生成系統可能要依賴于手工制定的規則,如一些常見的回復等。但在實踐中,任何一個工程師制定的“規則”都會快速地被人類交流的多樣性給超越。對比之下,一套好的機器學習系統能夠隱式地捕捉不同的情況、寫作風格以及語氣和色調。這些系統比基于規則的系統概括的更好,并且能夠完全地、更優雅地處理新的輸入。
來自設計者Chris Olah
類似于其他序列到序列的模型,智能回復系統(Smart Reply System)建立在一對 循環神經網絡(recurrent neural networks, RNN) 之上,其中一個RNN用于對收到的電子郵件進行編碼,而另一個用于預測可能的回復。編碼網絡會依次處理收到的電子郵件的各個詞語,并產生一個向量(一個數字列表)。這個向量, Geoff Hinton稱之為“思維向量”,抓住了說話者措辭的核心要點——例如,向量“Are you free tomorrow?" 應該是類似于向量"Does tomorrow work for you?",第二個網絡從這種思維向量開始,并依次合成符合標準語法的回復,就好像是在逐字鍵入一樣。令人驚訝的是,每個網絡的詳細操作都是完全學習的,只不過是通過訓練模型來預測可能的回復。
處理電子郵件的一個挑戰是,該模型的輸入和輸出可以有幾百個詞語。這也是循環神經網絡(RNN)在選擇上面臨的真正問題。為此,我們使用一個改良的“長短期記憶”網絡(LSTM),該網絡擅長保存長期依賴信息,在預測回復中可以保存郵件內部最有用的信息,不會被前后不相關的句子所干擾。
當然,在處理email的時候還有另一個非常重要的因素,那就是隱私。我們在開發Smart Reply時,附加了一些嚴格的用戶隱私標準——換句話說,也就是沒有其他人會閱讀你的email郵件。這也意味著研究人員必須讓機器學習方法在他們不能讀取的數據集上工作,有點像是蒙著眼睛來解決一個難題——但是正因為有這種挑戰性,才使得它更加有趣!
正確反應
系統的第一個原型有一些意想不到的漏洞。比如我們想生成幾個備選回復,當我們向神經網絡請求三個最有可能的回復時,它會給出三個回復,像“How about tomorrow?”, “Wanna get together tomorrow?”, “I suggest we meet tomorrow.”,這些回復對于用戶而言,能做的選擇真的不多。為此,Sujith Ravi給出了一個解決方案,他所在的團隊開發了一個出色的機器學習系統,可以將自然語言回復映射到語義意圖上。這在項目的多個階段都起到了很好的作用,并且對于解決“回復多樣性問題”也至關重要:通過了解兩個回復在語義上的相似點,我們可以給出措辭不同且含義各異的回復。
早期的原型還存在另一個奇怪的特點,它傾向于對任何郵件都做出“I love you”的回復。這聽起來很是討人喜歡,但真的不是我們所期望的。一些分析顯示,系統做的事情正是我們訓練它去做的事,然后產生可能的回復——結果表明像“Thanks”,“Sounds good”,和“I love you”這類回復是非常常見的——所以,當系統不確定做何種回復時,這些詞語就會成為安全詞語。通過回復的先驗概率強迫模型來預測回復的方式,標準化一個候選回答的可能性,這種模型預測的回復不僅可能性很高,而且對原始消息還有很高的親和力。雖然這并可能不怎么有愛,但對于電子郵件助手來說卻更管用。
嘗試一下
這項功能目前表現得特別出色,這讓我們真的很驚訝。本周稍晚一些,我們會在 Android和iOS郵件收件箱中推出這一功能,希望到時候你能去嘗試一下!只需點擊Smart Reply給出的建議,然后編輯它。如果內容符合你的要求,直接點擊發送即可。雙擊一下電子郵件就發出去了——跟Bálint設想的完全一樣。