第 5 章 基於神經網路文本分類
深度學習目前是機器學習領域研究的熱點,而目前最常使用類神經網路模型來實
現深度學習的概念,希望獨特的層次結構,能從淺層中提取高層的特徵,解決資
料高維度且稀疏的問題,其中卷積神經網路和循環神經網路為目前神經網路中兩
大熱門的架構,在本章節我們將詳細介紹卷積神經網路和循環神經網路在文本分
類領域的實際應用。
5.1 卷積神經網路(Convolutional Neural Network, CNN)
卷積神經網路 [29] 是一種專門用於處理圖片類型的二維資料,在 1960 年,
Hubel 和 Wiesel 等人研究貓皮層中用於局部敏感和方向選擇的神經元時,發現能
夠藉由卷積神經網路中的卷積層 (Convolution Layer) 和池化層 (Pooling Layer)
的獨特概念來接近更貼近真實生物的神經網路,並有效的降低傳統神經網路的複
雜程度。
卷積神經網路在計算機視覺有了成功的發展,目前卷積神經網路更是廣泛的
應用於文本分類領域中,因為卷積神經網路和 N 元語言模型類似,所以卷積神經
網路的過濾器其實可以看作是 N 元語言模型類似的方法,但是卷積神經網路因為
52
有卷積層和池化層的幫助,使得卷積神經網路能夠減少參數量,並且抽取到文本
更深層的訊息。
在圖 5.1,我們說明了卷積神經網路在文本上的應用,在最左邊的輸出層有
兩個通道 (Channel),每個通道是一個二維矩陣,矩陣的列為文本的長度,即一
篇文章中的單詞數量,矩陣的行為每個單詞的詞向量型式,我們可以使用上節介
紹的 Word2vec 方法來獲取詞向量,兩個通道分別為靜態和動態,靜態通道在給
定詞向量後,值不會改變,動態通道則是會在訓練過程中改變,會使用兩個通道
的原因在於考量 Word2vec 中的訓練語料和實驗語料的目的不一致,使得詞向量
會有偏差,但若是單純使用動態的通道,其初始化會對結果和收斂快慢有影響,
所以使用混和的通道可以解決這個問題。
圖 5.1 卷積神經網路文本應用示意圖
53
在經過輸入層,接著為卷積層,以圖 5.1 為例,最上方的過濾器矩陣大小為
3*6,對於句子 ”wait for the video and do n’t rent it” ,每隔三個詞會做一次卷積操
作,對於長度為 9 的句子,會產生一個 7*1 大小的矩陣輸出,後面一層為池化層,
在這邊是使用 Max-pooling 方法,經過池化層會選擇 7*1 矩陣中最大的值,並輸
出成一個 1*1 大小的矩陣,故有 n 個過濾器就會產生 n 個數值,這些數值會在繼
續接於後面的全連接層 (Fully Connected Layer) 使用,最後為一個輸出層,輸出
層的個數對應的是文本類別的數量,
54