利用CNN往往用來處理影象資訊,但近幾年,研究人員借鑑CNN處理影象的過程,提出了一種將文字進行一定的處理,也能用CNN的結構提取資訊。其中TextCNN是利用CNN結構處理文字資訊經典之作。
TextCNN原理介紹
普通的CNN網路包括輸入層(input)、卷積層(conv)、啟用函式(常用relu)、池化層(pooling)、全連線層(fc)。
在TextCNN中,將文字中的每一個字或詞透過embedding的方式表示成維度相同的向量,因此一篇文字或者一句話就轉換了一個矩陣表示。TextCNN的處理文字分類的過程如下所示:模型的輸入是由每個句子中的詞的詞向量組成的矩陣,d代表詞向量的維度,可自行定義,這樣我們就得到了7×5的矩陣。在輸入的基礎上,使用3種filter視窗進行卷積計算得到特徵圖。視窗的大小分別是2×5,3×5,4×5,並且對於每個型別的視窗,都有128個不同值的filter,這樣就得到了384個特徵圖。由於不同型別視窗卷積得到的特徵圖大小不一,因此採用Max Pooling的方式,即將每個特徵向量中最大的一個值抽取出來,然後將所有的值拼接起來組成一個一維向量。然後將結果輸入到全連線層,經過啟用函式輸出,再加上Dropout層防止過擬合。並在全連線層上新增L2正則化引數。最後再經過一個softmax層作為輸出,進行分類。如果是多分類任務可以用softmax層,如果只是一個二分類任務,則可以直接用一個含有sigmod啟用函式的神經元作為輸出層。
最後,值得一提的是,在引數選擇時,filter視窗尺寸對最終結果影響較大,應具體情況具體分析,一般句子越長,尺寸越大。並且每種視窗的數量對於結果的影響也比較大,在增加數量的同時也會增大模型的計算量。
利用CNN往往用來處理影象資訊,但近幾年,研究人員借鑑CNN處理影象的過程,提出了一種將文字進行一定的處理,也能用CNN的結構提取資訊。其中TextCNN是利用CNN結構處理文字資訊經典之作。
TextCNN原理介紹
普通的CNN網路包括輸入層(input)、卷積層(conv)、啟用函式(常用relu)、池化層(pooling)、全連線層(fc)。
在TextCNN中,將文字中的每一個字或詞透過embedding的方式表示成維度相同的向量,因此一篇文字或者一句話就轉換了一個矩陣表示。TextCNN的處理文字分類的過程如下所示:模型的輸入是由每個句子中的詞的詞向量組成的矩陣,d代表詞向量的維度,可自行定義,這樣我們就得到了7×5的矩陣。在輸入的基礎上,使用3種filter視窗進行卷積計算得到特徵圖。視窗的大小分別是2×5,3×5,4×5,並且對於每個型別的視窗,都有128個不同值的filter,這樣就得到了384個特徵圖。由於不同型別視窗卷積得到的特徵圖大小不一,因此採用Max Pooling的方式,即將每個特徵向量中最大的一個值抽取出來,然後將所有的值拼接起來組成一個一維向量。然後將結果輸入到全連線層,經過啟用函式輸出,再加上Dropout層防止過擬合。並在全連線層上新增L2正則化引數。最後再經過一個softmax層作為輸出,進行分類。如果是多分類任務可以用softmax層,如果只是一個二分類任務,則可以直接用一個含有sigmod啟用函式的神經元作為輸出層。
最後,值得一提的是,在引數選擇時,filter視窗尺寸對最終結果影響較大,應具體情況具體分析,一般句子越長,尺寸越大。並且每種視窗的數量對於結果的影響也比較大,在增加數量的同時也會增大模型的計算量。