CNN卷機網絡在天然語言處理問題上的應用

首先申明本人的英語很搓,看英文很是吃力,只能用這種笨辦法來方便下次閱讀。有理解錯誤的地方,請別噴我。
什麼是卷積和什麼是卷積神經網絡就不講了,自行google。從在天然語言處理的應用開始(SO, HOW DOES ANY OF THIS APPLY TO NLP?)。
和圖像像素不一樣的是,在天然語言處理中用矩陣來表明一句話或者一段話做爲輸入,矩陣的每一行表明一個token,能夠是詞,也能夠是字符。這樣每一行是一個向量,這個向量能夠是詞向量像word2vec或者GloVe。也能夠是one-hot向量。若是一句話有10個詞,每一個詞是100維的詞向量,那麼獲得10*100的矩陣,這就至關於圖像識別中的圖像(input)。
在圖像中,過濾器是在圖像的部分滑動,而在NLP中過濾器在整行上滑動。意思是過濾器的寬度和輸入矩陣的寬度是一致地。(就是說過濾器的寬度等於詞向量的維度。)在高度上經常是開2-5個詞的滑動窗口。總結起來,一個在NLP上的CNN長這樣:
這裏寫圖片描述
這裏寫圖片描述
這裏有3種過濾器,滑動窗口爲二、三、4,每種有2個。後面闡述了CNN在NLP上的不足(沒看明白)。表示RNN更符合語言的理解習慣。後面又說模型跟實現的理解有誤差,可是CNN在NLP上的表現是不錯的。同時也吐槽了詞袋模型也同樣。(緣由鬼知道)
CNN的另外一個優點是快,這裏用N-Gram模型作對比。咱們都知道在VSM模型中採用3-gram的維度就很恐怖了,文中說google也處理不了超過5-gram的模型。這是CNN模型的優點,同時在CNN的輸入層採用n-size的滑動窗口和n-gram處理是類似的。(不能贊成再多,我的認爲部分功勞在word embeddings上。固然不全是,由於即便採用one-hot,維度也不會隨着窗口的size變化。而在n-gram中是隨着n的變化爆發性增長的。)
(乾貨,對理解模型和代碼都很是必要。)
對於窄卷積來講,是從第一個點開始作卷積,每次窗口滑動固定步幅。好比下圖左部分爲窄卷積。那麼注意到越在邊緣的位置被卷積的次數越少。因而有了寬卷積的方法,能夠看做在卷積以前在邊緣用0補充,常見有兩種狀況,一個是全補充,入下圖右部分,這樣輸出大於輸入的維度。另外一種經常使用的方法是補充一部0值,使得輸出和輸入的維度一致。這裏文中給了一個公式 。這裏npadding在全補充裏是filter-1,在輸入輸出相等時,就要主要奇偶性了,注意到卷積核常爲奇數,這裏應該有緣由之一。(思考下爲何)
這裏寫圖片描述
這裏寫圖片描述
這個參數很簡單,就是卷積核移動的步長。下面兩幅圖左邊的步長爲1,右邊的步長爲2。(看出卷積核是啥了嗎)
這裏寫圖片描述
這裏寫圖片描述
這裏說步幅常設置爲1,在一些更接近於RNN的模型中會設置更大的stride。
通常在卷積層後會有匯聚層。最經常使用的是max-pooling(就是取最大的那個)。stride的大小通常和max-pooling的窗口大小一致。(在NLP中表明性的操做是在整個輸出上做匯聚,每一個過濾器只輸出一個值。) 爲啥要作匯聚?講了兩個緣由:一是能夠提供肯定的輸出,對於後面作全鏈接有用。二是能夠在保存大部分信息的前提降低維(但願是這樣)。這裏說這樣的作法至關於某個詞是否在句子中出現,而不關心這個詞在句子的哪一個位置出現。這和詞袋模型的思想相同。不一樣的是在局部信息中,「not amazing」和」amazing not「在模型中會有很大的不一樣。(這裏得好好想一想,mark下)
這沒啥好說的,就是輸入有幾層。在圖像中通常有一、3層(分別灰度圖和RGB圖)。在NLP中也能夠有多個通道,好比說使用不一樣詞向量化方式,甚至不一樣的語言等
這裏說CNN在NLP中常應用到文本分類中,好比情感分析、垃圾信息識別、主題分類中。因爲卷積的匯聚操做會遺失一些詞的位置信息,因此較難應用到詞性標註和實體抽取中。可是也不是不能夠作,你須要把位置信息加入到特徵裏。下面是做者看的CNN在NLP方面的論文。
這裏舉了論文[1]中的例子,模型很簡單。輸入層是由word2vec詞向量表示的句子,後面跟着是卷基礎,而後是max-pooling層,最後是全鏈接的softmax分類器。同時論文中還實驗了使用兩個通道,一個靜態一個動態,一個會在訓練中變化(詞向量變化?參數誰不會變化,mark)。在論文[2][6]還有多加入一層來實現「情感聚類」。
這裏寫圖片描述
這裏寫圖片描述
[4]中就沒有像word2vec這樣還要先訓練,直接簡單粗暴的使用one-hot向量。[5]的做者表示他的模型在長文本中表現很是好。總結了下,詞向量這種在短文本中比長文本表現更好。
構建CNN模型要作些啥:一、輸入的向量化表示。二、卷積核的大小和數量的設置。三、匯聚層類型的選擇。四、激活函數的選擇。一個好的模型的創建須要屢次的實驗,這裏做者表示若是沒能力創建更好的模型,效仿他就足夠了。另外有幾點經驗:一、max-pooling好於average-pooling。二、過濾器的大小很重要。三、正則並無卵用。四、警告最好文本的長度都差很少。
剩下的論文就不說了。
[1] Kim, Y. (2014). Convolutional Neural Networks for Sentence Classification. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP 2014), 1746–1751. [2] Kalchbrenner, N., Grefenstette, E., & Blunsom, P. (2014). A Convolutional Neural Network for Modelling Sentences. Acl, 655–665. [3] Santos, C. N. dos, & Gatti, M. (2014). Deep Convolutional Neural Networks for Sentiment Analysis of Short Texts. In COLING-2014 (pp. 69–78). [4] Johnson, R., & Zhang, T. (2015). Effective Use of Word Order for Text Categorization with Convolutional Neural Networks. To Appear: NAACL-2015, (2011). [5] Johnson, R., & Zhang, T. (2015). Semi-supervised Convolutional Neural Networks for Text Categorization via Region Embedding. [6] Wang, P., Xu, J., Xu, B., Liu, C., Zhang, H., Wang, F., & Hao, H. (2015). Semantic Clustering and Convolutional Neural Network for Short Text Categorization. Proceedings ACL 2015, 352–357. [7] Zhang, Y., & Wallace, B. (2015). A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification, [8] Nguyen, T. H., & Grishman, R. (2015). Relation Extraction: Perspective from Convolutional Neural Networks. Workshop on Vector Modeling for NLP, 39–48. [9] Sun, Y., Lin, L., Tang, D., Yang, N., Ji, Z., & Wang, X. (2015). Modeling Mention , Context and Entity with Neural Networks for Entity Disambiguation, (Ijcai), 1333–1339. [10] Zeng, D., Liu, K., Lai, S., Zhou, G., & Zhao, J. (2014). Relation Classification via Convolutional Deep Neural Network. Coling, (2011), 2335–2344. [11] Gao, J., Pantel, P., Gamon, M., He, X., & Deng, L. (2014). Modeling Interestingness with Deep Neural Networks. [12] Shen, Y., He, X., Gao, J., Deng, L., & Mesnil, G. (2014). A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval. Proceedings of the 23rd ACM International Conference on Conference on Information and Knowledge Management – CIKM ’14, 101–110. [13] Weston, J., & Adams, K. (2014). # T AG S PACE : Semantic Embeddings from Hashtags, 1822–1827. [14] Santos, C., & Zadrozny, B. (2014). Learning Character-level Representations for Part-of-Speech Tagging. Proceedings of the 31st International Conference on Machine Learning, ICML-14(2011), 1818–1826. [15] Zhang, X., Zhao, J., & LeCun, Y. (2015). Character-level Convolutional Networks for Text Classification, 1–9. [16] Zhang, X., & LeCun, Y. (2015). Text Understanding from Scratch. arXiv E-Prints, 3, 011102. [17] Kim, Y., Jernite, Y., Sontag, D., & Rush, A. M. (2015). Character-Aware Neural Language Models.
相關文章
相關標籤/搜索