1、簡介
文本分類問題一直是自然語言處理(NLP)中一個廣受人們關注的問題。可能好多剛接觸深度學習做NLP的項目就是使用循環神經網絡(RNN)對IMDB影評進行分類。但使用循環神經網絡時一般會遇到一個問題,那就是當所要處理的序列較長時,就會導致網絡容易忘記之前的東西,這在機器翻譯、對話系統中會經常出現,爲解決這一問題,大佬們就根據心理學原理提出了“注意力”機制,使得網絡工作過程中可以像人一樣將注意力放在不同部位。那麼對於文本分類能否使用“注意力”機制呢?答案是肯定的,這篇論文就針對文本分類問題提出了層級注意力模型結合雙向RNN實現對文本的分類,其效果明顯好於其他方法。
2、層級“注意力”網絡
2.1 網絡結構
層級“注意力”網絡的網絡結構如圖1所示,網絡可以被看作爲兩部分,第一部分爲詞“注意”部分,另一部分爲句“注意”部分。整個網絡通過將一個句子分割爲幾部分(例如可以用“,”講一句話分爲幾個小句子),對於每部分,都使用雙向RNN結合“注意力”機制將小句子映射爲一個向量,然後對於映射得到的一組序列向量,我們再通過一層雙向RNN結合“注意力”機制實現對文本的分類。
圖1
2.2 層級“注意力”
詞層面的“注意力”機制
本文針對的是任務是文檔分類任務,即認爲每個要分類的文檔都可以分爲多個句子。因此層級“注意力”模型的第一部分是來處理每一個分句。對於第一個雙向RNN輸入是每句話的每個單詞,其計算公式如下所示:
但是對於一句話中的單詞,並不是每一個單詞對分類任務都是有用的,比如在做文本的情緒分類時,可能我們就會比較關注“很好”、“傷感”這些詞。爲了能使循環神經網絡也能自動將“注意力”放在這些詞彙上,作者設計了基於單詞的注意力模型,其計算公式如下:
首先,通過一個線性層對雙向RNN的輸出進行變換,然後通過softmax公式計算出每個單詞的重要性,最後通過對雙向RNN的輸出進行加權平均得到每個句子的表示。
句層面的“注意力”機制
句層面的“注意力”模型和詞層面的“注意力”模型有異曲同工之妙。其計算公式如下所示:
2.3、文檔分類
最後就是使用最常用的softmax分類器對整個文本進行分類了
損失函數爲:
3、實驗及結果分析
3.1 數據集分析
作者分別對Yelp reviews、IMDB reviews、Yahoo answers、Amazon reviews進行實驗。
表1
作者對這些數據集進行了分析,其中每個文檔所包含的單詞、句子的分佈情況如表1所述。
3.2 對比實驗結果
作者分別將該方法與其他方法進行了對比,其實驗結果如表2所示,從表中可以看出,本文提出的HN-ATT方法相對於其他方法有着不錯的提升。
表2
3.3 網絡到底把“注意力”放在哪了?
作者爲了探索網絡到底學到了什麼,分別分析了模型對於單詞“good”及“bad”的分配情況。圖2是對於單詞“good”的權重分佈情況,其中(a)是總體的分佈情況,(b)-(f)分別是在由差評逐漸到好評的過度的過程中“good”的權重的變化情況。從圖中可以看出,隨着好評程度的不斷上升,“good”所獲得的權重越大,這說明,網絡能夠自動的將“注意力”放在和好評更相關的詞彙上。
圖2
作者同樣對單詞“bad”做了測試,測試結果如圖3所示。圖3顯示出了和圖2一樣的實驗結果,即網絡會在差評的時候更加將“注意力”放在“bad”詞彙上。
圖3
3.4 注意力的可視化
爲了進一步說明層級“注意力”模型的有效性,作者對網絡所分配的注意力結果進行了可視化,如圖4所示,其中藍色的程度越深,說明該單詞所獲得的權重越大,粉色程度越深,說明該句子所獲得的權重越大。從圖中分析可以看出,像“delicious”、“terrible”、“amazing”這樣的形容詞會獲得較大的權重,而其對應的句子也會獲得較大的權重。因此該模型確實能夠捕獲到有助於對文本進行分類的詞彙。
圖4
4、 總結
剛看到這篇文章時簡直要驚呆了,以前聽說“注意力”機制一般都是應用在像機器翻譯、對話系統、圖片捕獲這樣的序對序模型中,一直認爲它肯定也能用在文本分類中,看了這篇論文才知道原來早有大神想到了。其實細想一下可以發現,本文對文檔進行分類的思路和人的思路很相似,我們人對文檔進行分類時也是會先提煉出每句話中的重要此話,然後再提取每段中的那幾句重要的話,然後是文章中的段··· 所以深度學習的發展還是要藉助於人腦的研究滴☺☺☺