1
雷鋒網(wǎng) AI 科技評論按:當(dāng)前,整個人工智能領(lǐng)域?qū)ψ匀徽Z言處理技術(shù)的熱情可謂空前高漲。一方面,這是由于借著深度學(xué)習(xí)的東風(fēng),計算機在各種自然語言處理任務(wù)中的表現(xiàn)有了突飛猛進的提高;另一方面,人們生活中大量的信息檢索、語音識別、文本分析等應(yīng)用對粒度更細、精度更高的專用自然語言模型提出了越來越高的要求。可以預(yù)見,隨著信息時代數(shù)據(jù)量的不斷增長以及人類社會中語料資源的不斷豐富,自然語言處理研究將不斷面臨新的挑戰(zhàn)。
已于近日結(jié)束的 ICLR 2018 中的一篇關(guān)于智能問答系統(tǒng)的論文《QANet: Combining Local Convolution with Global Self-Attention for Reading Comprehension》以優(yōu)秀的表現(xiàn)吸引了我們的注意。在具體介紹論文之前,我們也先對智能問答系統(tǒng)這個研究課題稍作回顧。
問答系統(tǒng)本質(zhì)上是一個信息檢索(IR)系統(tǒng),只是它從文具中獲取更多信息,返回更加精準的答案。傳統(tǒng)的問答系統(tǒng)將按照以下的流程工作:(1)問題解析(2)信息檢索(3)答案抽取。問題解析的工作包括分詞、詞性標注、句法分析、命名實體識別、問題分類、問題擴展等;信息檢索則是以問題解析模塊的結(jié)果作為輸入,從底層知識庫重返回一系列相關(guān)的排序后的文檔;答案抽取,顧名思義,就是從文檔中抽取出最終的答案。
圖 1. 傳統(tǒng)問答系統(tǒng)基本框架。最下層為實體層,為上層模型提供計算單元(語義社區(qū)搜索、語義消歧、詞共現(xiàn)等);第二層為語義層,包含了具有一定語義信息的文本,提取出了一部分語義特征;第三層則是最終的核心應(yīng)用部分。
不難看出,傳統(tǒng)的問答系統(tǒng)模型工序復(fù)雜,對人工的要求也較高,實行起來較為困難。每一道工序的質(zhì)量都可能成為制約最終模型性能的因素,并且由于其級聯(lián)誤差的積累,往往會導(dǎo)致模型的失敗。而當(dāng)今大熱的深度學(xué)習(xí)對于序列性的問題有著天然的優(yōu)勢(利用大量的訓(xùn)練數(shù)據(jù)學(xué)習(xí)到泛化的知識表示,對篇章和問題從語義層面上進行高度的抽象),因此,人們自然而然地想到了用深度學(xué)習(xí)來代替問答系統(tǒng)中的大量組件,例如:IBM 的研究人員通過人工搭配遷移學(xué)習(xí)抽取一系列的特征,再將特征輸入一個回歸模型中,實現(xiàn)了用于 Watson 問答機器人的 DeepQa 算法。(詳情見雷鋒網(wǎng)文章:http://m.ozgbdpf.cn/news/201607/FOeUS5Wo5gIFMvwJ.html)
進而,為了降低模型使用門檻,同時也為了使模型內(nèi)部負責(zé)各種功能的組件能夠更好地協(xié)調(diào)配合,從而提升模型整體性能,越來越多的研究者將所有的問答系統(tǒng)功能封裝在一個端到端的自動化問答系統(tǒng)中。當(dāng)然,我們并不是說傳統(tǒng)的問答系統(tǒng)研究就失去了其研究價值,事實上,傳統(tǒng)的可解釋性更強的問答系統(tǒng)的研究可以反哺端到端的深度學(xué)習(xí)問答系統(tǒng),從而為設(shè)計深度學(xué)習(xí)系統(tǒng)提供更多啟發(fā)和理論依據(jù)。
其實,一部問答系統(tǒng)發(fā)展史就是一部人工智能史。伴隨著人工智能的興衰,問答系統(tǒng)也經(jīng)歷了半個多世紀的浮沉。此外,隨著符號主義(代表算法為:關(guān)聯(lián)規(guī)則、決策樹等)、貝葉斯主義(代表算法為:概率圖模型)、進化主義(代表算法為:遺傳算法)、Analogizer(代表算法為:支持向量機)、聯(lián)結(jié)主義(代表算法為:深度神經(jīng)網(wǎng)絡(luò))輪流登上歷史舞臺的最高峰,用于支撐問答系統(tǒng)的核心算法也經(jīng)歷了數(shù)次更迭,從而使得人們構(gòu)建問答系統(tǒng)的思路不一。為了構(gòu)建一個良好的問答系統(tǒng)產(chǎn)學(xué)研生態(tài)圈,業(yè)界和學(xué)術(shù)界一直致力于提出質(zhì)量更好的數(shù)據(jù)集、舉辦更有影響力的比賽來促進該領(lǐng)域的蓬勃發(fā)展。其中,斯坦福大學(xué)在 2016 年推出的數(shù)據(jù)集 SQuAD 成為了今年來最受到學(xué)術(shù)界和工業(yè)界矚目的重量級閱讀理解數(shù)據(jù)集,可以說 SQuAD 之于問答系統(tǒng)就好比 ImageNet 之于計算機視覺的意義。這個閱讀理解數(shù)據(jù)集會給研究者提供一篇篇文章,準備相應(yīng)的問題,而研究者需要自己設(shè)計問答系統(tǒng)模型用于給出問題的答案。SQuAD 之所以備受推崇,得益于其巨大的規(guī)模,它包含 536 篇文章以及相關(guān)的 107,785 個問題。(詳情請見雷鋒網(wǎng)文章:http://m.ozgbdpf.cn/news/201608/ftBdq445PzC1kxbF.html )此外,數(shù)據(jù)集采用 F1 值和 EM(exact match,完全匹配)兩種分類標準來評價模型性能,保證了模型評價的相對客觀。
圖 2: SQuAD排行榜
如上圖所示,SQuAD 賽事吸引了微軟、谷歌、阿里巴巴、科大訊飛等業(yè)界巨頭和 CMU,哈工大等高校參與其中,排行榜上的名次經(jīng)常處于變化之中。尤記得去年 7 月科大訊飛首次登頂該榜榜首,取得了 77.845 的 EM 以及 85.297 的 F1 值,一時間風(fēng)頭無兩,但是不久后這個成績就被其他機構(gòu)超越。今年年初,微軟的 r-net 在 EM 指標上獲得了 82.625 的高分,聲稱首次在該指標上超越了人類(根據(jù)斯坦福收集的數(shù)據(jù),人類的 EM 值為 82.304)。
直到最近,谷歌大腦團隊和 CMU 聯(lián)合推出的 QANet 再一次拔得頭籌,大幅度地將 EM 值提高至 83.877(第二名為科大訊飛和哈工大的 AOA reader 模型獲得的 82.482), F1 值也獲得了有史以來的最高分——89.737。另一方面,相比別的團隊提交的模型在 DAWNBench 中動輒 7 到 10 個小時的訓(xùn)練時間,QANet 只需要短短 45 分鐘。
那么接下來我們一起來看看 QANet 究竟是一個什么樣的模型?作者們是如何同時大幅提升了精度和訓(xùn)練時間的?
(1)形式化定義
給定一個包含 n 個單詞的上下文片段 C={c1,c2,...,cn},我們考慮包含 m 個單詞的查詢語句 Q={q1,q2,...,qm},模型輸出為一個包含 j 個單詞的片段 C 中的答案區(qū)間 S={ci,ci+1,...,ci+j}。
(2)模型概覽
大體上來說,和現(xiàn)有的閱讀理解模型相類似,QANet 包含五個主要的組成部分:嵌入層 (embedding layer),嵌入編碼層(embedding encoder layer),語境-查詢注意力層(context-query attention layer),模型編碼層(model encoder)以及輸出層(output layer)。
區(qū)別于目前大多數(shù)包含注意力機制(attention model)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的閱讀理解模型,QANet 的嵌入編碼器和模型編碼器摒棄了 RNN 的復(fù)雜遞歸結(jié)構(gòu),僅僅使用卷積(convolution)和自注意力機制(self-attention)構(gòu)建了一個神經(jīng)網(wǎng)絡(luò),使得模型的訓(xùn)練速率和推斷速率大大加快,并且可以并行處理輸入的單詞。
卷積操作可以對局部相互作用建模(捕獲文本的局部結(jié)構(gòu)),而使用自注意力機制則可以對全局交互進行建模(學(xué)習(xí)每對單詞之間的相互作用)。據(jù)作者們介紹,這也是領(lǐng)域內(nèi)首次將卷積和自注意力機制相結(jié)合。由于卷積層和自注意力機制都沒有消耗時間的遞歸操作,所以作者們不僅大膽地把模型深度增加到了問答任務(wù)中史無前例的超過 130 層,同時還在訓(xùn)練、推理中都有數(shù)倍的速度提升。(相較于基于 RNN 的模型,訓(xùn)練速度提升了3-13倍,推理速度提升了 4-9 倍)
圖 3: 左圖為包含多個編碼器模塊的 QANet 整體架構(gòu)。右圖為基本編碼器模塊單元,QANet 所使用的所有編碼器都是按照這個模式構(gòu)建的,僅僅修改模塊中卷積層的數(shù)量。QANet 在每一層之間會使用層正則化和殘差連接技術(shù),并且將編碼器結(jié)構(gòu)內(nèi)位置編碼(卷積、自注意力、前饋網(wǎng)絡(luò)等)之后的每個子層封裝在殘差模塊內(nèi)。QANet 還共享了語境、問題、輸出編碼器之間的部分權(quán)重,以達到知識共享。
以往基于 RNN 的模型受制于訓(xùn)練速度,研究員們其實很少考慮圖像識別任務(wù)中類似的「用更大的數(shù)據(jù)集帶來更好表現(xiàn)」的思路。那么對于這次的 QANet,由于模型有令人滿意的訓(xùn)練速度,作者們得以手腳,使用數(shù)據(jù)增強技術(shù)對原始數(shù)據(jù)集進行了擴充,大大方方用更多數(shù)據(jù)訓(xùn)練了模型。
具體來說,他們把英文原文用現(xiàn)有的神經(jīng)機器翻譯器翻譯成另一種語言(QANet 使用的是法語)之后再翻譯回英語。這個過程相當(dāng)于對樣本進行了改寫,這樣使得訓(xùn)練樣本的數(shù)量大大增加,句式更加豐富。
圖 4: 數(shù)據(jù)增強示例。k 為 beam width,即 NMT 系統(tǒng)產(chǎn)生的譯文規(guī)模。
讀罷上文,你可能驚嘆于「卷積+自注意力機制」的神奇效果,即便考慮到更多訓(xùn)練數(shù)據(jù)的幫助,也仍然可以直接挑戰(zhàn)使用已久的 RNN 模型。「卷積」是大多數(shù)深度學(xué)習(xí)的研究者十分熟悉的概念,它用于提取局部的特征。那么,自注意力(self-atteition)機制又是何方神圣呢?它在 QANet 中起到了什么關(guān)鍵性的作用?
要想弄清 self-attetion 機制,就不得不從 attention 機制的原理談起,因為 self-attention 顧名思義,可以看作attention 機制的一種內(nèi)部形式的特例。
圖 5: attention 機制原理示意圖
我們可以將原句中的每一個單詞看作一個 <Key,Value> 數(shù)據(jù)對,即原句可表示為一系列 <Key,Value> 數(shù)據(jù)對的組合。這時我們要通過計算 Query 和 每一個 Key 的相似性,得到每個 Key 對應(yīng)的 Value 的權(quán)重,再對 Value 進行加權(quán)求和,得到 Attention 值。這個過程在于模擬人在看圖片或者閱讀文章時,由于先驗信息和任務(wù)目標不同,我們對于文本的不同部分關(guān)注程度存在差異。例如:在語句「Father hits me!」中,如果我們關(guān)心的是「誰打了我?」那么,F(xiàn)ather 的權(quán)重應(yīng)該就要較高。這種機制有利于我們從大量的信息中篩選出有用的部分,而過濾掉對我們的任務(wù)不重要的部分,從而提高了模型的效率和準確率。
而區(qū)別于一般的編碼器-解碼器結(jié)構(gòu)中使用的 Attention model(輸入和輸出的內(nèi)容不同),self attention 機制并不是輸入和輸出之間的 attention 機制,而是輸入內(nèi)部的單詞或者輸出內(nèi)部單詞之間的 attention 機制。Self-attention即K=V=Q,在 QANet 中,作者使得原文中每一對單詞的相互作用都能夠被刻畫出來,捕獲整篇文章的內(nèi)部結(jié)構(gòu)。
使用 self-attention 有以下好處:
(1)在并行方面,self-attention 和 CNN一樣不依賴于前一時刻的計算,可以很好的并行,優(yōu)于RNN。
(2)在長距離依賴上,由于 self-attention 是每個詞和所有詞都要計算 attention,所以不管他們中間有多長距離,最大的路徑長度也都只是 1??梢愿咝Р东@長距離依賴關(guān)系。
圖6: self-attention 機制示意圖
因此,在使用了 self-attention 機制之后,模型可以對單詞進行并行化處理,大大提高了運行效率;使得模型能夠使用更多數(shù)據(jù)進行訓(xùn)練,可以捕獲長距離的依賴關(guān)系,也從另一個方面提升了模型的準確率。
問答系統(tǒng)發(fā)展的浪潮方興未艾,當(dāng)您閱讀到本文時,不知 SQuAD 榜單上的名次是否又發(fā)生了變化。筆者在本文中和大家一起溫習(xí)了問答系統(tǒng)的概念,回顧了其發(fā)展歷史,說明了 SQuAD 數(shù)據(jù)集對于問答系統(tǒng)學(xué)科發(fā)展的重大意義,并且向大家介紹了目前得分最高的 QANet 系統(tǒng)的設(shè)計框架,分析了其使用 self-attention 機制的重要作用。事實上,能在 SQuAD 榜單上占有一席之地的模型都有其值得我們大家學(xué)習(xí)借鑒的地方,筆者這里之所以著重分析 QANet,是因為它是第一個利用「卷積+self-attention」機制代替其他模型廣泛使用的 RNN 網(wǎng)絡(luò)的問答系統(tǒng)模型。它并不依賴于 RNN 的遞歸訓(xùn)練來提升模型性能,反而另辟蹊徑,通過較為簡單的網(wǎng)絡(luò)組建節(jié)省了計算開銷,使得我們使用更多的數(shù)據(jù)進行訓(xùn)練成為了可能,從而使模型的性能得到了質(zhì)的飛躍。此外,他們設(shè)計的數(shù)據(jù)增強方法也十分巧妙,并取得了很好的效果??梢?,人工智能研究之路本是「八仙過海,各顯神通」,廣大研究者們還需開闊思路,不囿于前人的思維定式,方可曲線突圍!
論文地址:https://openreview.net/forum?id=B14TlG-RW
雷鋒網(wǎng) AI 科技評論報道
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。