當咱們人類在看東西時,通常會將注意力集中注視着某個地方,而不會關注所有全部信息。例如當咱們一看到下面這張貓的圖片時,主要會將目光停留在貓的臉部,以及留意貓的軀幹,然後面的草地則會被當成背景忽略掉,也就是說咱們在每一處空間位置上的注意力分佈是不同的。
經過這種方式,人類在須要重點關注的目標區域,會投入更多的注意力資源,以獲取更多的細節信息,而抑制其它區域信息,這樣令人類可以利用有限的注意力資源從大量信息中快速獲取到高價值的信息,極大地提高了大腦處理信息的效率。算法
那麼人類的這種「注意力機制」是否可用在AI中呢?
咱們來看一下,圖片描述(Image Caption)中引入了「注意力機制」後的效果。「圖片描述」是深度學習的一個典型應用,即輸入一張圖片,AI系統根據圖片上的內容輸出一句描述文字出來。下面看一下「圖片描述」的效果,左邊是輸入原圖,下邊的句子是AI系統自動生成的描述文字,右邊是當AI系統生成劃橫線單詞的時候,對應圖片中聚焦的位置區域,以下圖:
能夠看到,當輸出frisbee(飛碟)、dog(狗)等單詞時,AI系統會將注意力更多地分配給圖片中飛碟、狗的對應位置,以得到更加準確地輸出,是否是很神奇呢,這又是如何實現的呢?微信
一、什麼是「注意力機制」
深度學習中的注意力機制(Attention Mechanism)和人類視覺的注意力機制相似,就是在衆多信息中把注意力集中放在重要的點上,選出關鍵信息,而忽略其餘不重要的信息。網絡
二、Encoder-Decoder框架(編碼-解碼框架)
目前大多數的注意力模型附着在Encoder-Decoder框架下,因此咱們先來了解下這個框架。Encoder-Decoder框架能夠看做是一種文本處理領域的研究模式,該框架的抽象表示以下圖:
給定輸入X,經過Encoder-Decoder框架生成目標Y。其中,Encoder(編碼器)就是對輸入X進行編碼,經過非線性變換轉化爲中間語義表示C;Decoder(解碼器),根據輸入X的語義表示C和以前已生成的歷史信息生成目標信息。
Encoder-Decoder框架是個通用框架,有不少的場景,在文本處理、圖像處理、語音識別等各領域常用,Encoder、Decoder可以使用各類模型組合,例如CNN/RNN/BiRNN/LSTM等。例如對於自動問答,X是一個問句,Y是答案;對於機器翻譯,X是一種語言,Y是另一種語言;對於自動摘要,X是一篇文章,Y是摘要;對於圖片描述,X是一張圖片,Y是圖片的文字描述內容……框架
三、注意力模型
本文開頭講到的人類視覺注意力機制,它在處理信息時注意力的分佈是不同的。而Encoder-Decoder框架將輸入X都編碼轉化爲語義表示C,這樣就會致使全部輸入的處理權重都同樣,沒有體現出注意力集中,所以,也可當作是「分心模型」。
爲了能體現注意力機制,將語義表示C進行擴展,用不一樣的C來表示不一樣注意力的集中程度,每一個C的權重不同。那麼擴展後的Encoder-Decoder框架變爲:
dom
下面經過一個英文翻譯中文的例子來講明「注意力模型」。
例如輸入的英文句子是:Tom chase Jerry,目標的翻譯結果是「湯姆追逐傑瑞」。那麼在語言翻譯中,Tom, chase, Jerry這三個詞對翻譯結果的影響程度是不一樣的,其中,Tom, Jerry是主語、賓語,是兩我的名,chase是謂語,是動做,那麼這三個詞的影響程度大小順序分別是Jerry>Tom>chase,例如(Tom,0.3)(Chase,0.2) (Jerry,0.5),不一樣的影響程度表明AI模型在翻譯時分配給不一樣單詞的注意力大小,即分配的機率大小。分佈式
使用上圖擴展了Ci的Encoder-Decoder框架,則翻譯Tom chase Jerry的過程以下。
生成目標句子單詞的過程以下面的形式:
其中,f1是Decoder(解碼)的非線性變換函數
每一個Ci對應着不一樣的源單詞的注意力分配機率分佈,計算以下面的形式:
其中,f2函數表示Encoder(編碼)節點中對輸入英文單詞的轉換函數,g函數表明Encoder(編碼)表示合成整個句子中間語義表示的變換函數,通常採用加權求和的方式,以下式:
其中aij表示權重,hj表示Encoder的轉換函數,即h1=f2(「Tom」),h2=f2(「Chase」),h3=f2(「Jerry」),Tx表示輸入句子的長度
當i是「湯姆」時,則注意力模型權重aij分別是0.6, 0.2, 0.2。那麼這個權重是如何獲得的呢?
aij能夠看作是一個機率,反映了hj對ci的重要性,可以使用softmax來表示:
其中,
這裏的f表示一個匹配度的打分函數,能夠是一個簡單的類似度計算,也能夠是一個複雜的神經網絡計算結果。在這裏,因爲在計算ci時尚未h’i,所以使用最接近的h’i-1代替。當匹配度越高,則aij的機率越大。
所以,得出aij的過程以下圖:
其中,hi表示Encoder轉換函數,F(hj,Hi)表示預測與目標的匹配打分函數函數
將以上過程串起來,則注意力模型的結構以下圖所示:
其中,hi表示Encoder階段的轉換函數,ci表示語義編碼,h’i表示Decoder階段的轉換函數。oop
以上介紹的就是經典的Soft-Attention模型,而注意力模型按不一樣維度還有其它不少分類。學習
四、注意力模型的分類
按注意力的可微性,可分爲:大數據
按注意力的關注域,可分爲:
歡迎關注本人的微信公衆號「大數據與人工智能Lab」(BigdataAILab),獲取更多信息
推薦相關閱讀
一、AI 實戰系列
二、大話深度學習系列
三、圖解 AI 系列
四、AI 雜談
五、大數據超詳細系列