用卷積神經網路做情感分析時(句子級),為什麼輸入向量可以隨機初始化,在訓練的時候調整?

用卷積神經網路做情感分析時(句子級),為什麼輸入向量可以隨機初始化,在訓練的時候調整?輸入不應該是固定的嗎?那學習演算法是怎樣的?(A Convolutional Neural Network for Modelling Sentences,Convolutional Neural Networks for Sentence Classification這兩篇文章都提到了輸入詞向量在訓練時調整)


最近在看這方面的研究,談談我的看法。

對於模型而言,輸入句子中的詞向量可以是以下一種情況或者幾種情況的混合:

(1) pre-train好的word2vec,固定值,不作為參數;

(2) pre-train好的word2vec,不是固定值,作為模型參數,在模型訓練過程中進行調整;

(3) 完全隨機初始化,作為模型參數,在模型訓練過程中進行調整;

Kim Y的《Convolutional neural networks for sentence classification》這篇文章裡面,就做了以上幾種不同輸入情況的模型實驗(分別對應CNN-static, CNN-non-static, CNN-rand, 還有混合版本CNN-multichannel)。實驗結果是,直接使用固定的pre-train好的word2vec已經能夠達到很好的效果了,但是由於pre-train時所用到的語料與實驗任務的具體語料的差異,允許pre-train好的word2vec在模型訓練過程中進行調整(其實就是Fine tuning),能夠讓word vector和模型參數更加貼切於具體的實驗任務,所以效果是有一定提升的。

輸入完全初始化也是可以的,但是在Kim Y的這篇paper里實驗結果顯示效果較其餘兩種差一些,個人認為這種做法依賴於你的實驗數據規模,如果實驗數據規模較大,是可以將word vector隨機初始化的,相當於最終訓練得來的vector更加貼合具體的實驗數據本身;但是如果實驗數據規模較小,一般的做法還是用較大規模的語料先pre-train一下word vector,然後直接作為輸入效果會比較好。

我寫了一篇卷積神經網路(CNN)在句子建模上的應用的文章,裡面有一些更加詳細的理解,以供參考。希望同行的研究者能夠多多交流哇~


樓主可以先看一下word2vec訓練詞向量,實在不行回溯到bengio的Neural Language Model那篇論文,其中的詞向量和神經網路的參數都是要訓練的參數(有點拗口)。


首先要明確幾種不同的情況:

1) 訓練詞向量:根據大量文本訓練詞向量,比如Google的Mikolov做的word2vec ( 論文參見Distributed Representations of Words and Phrases
and their Compositionally)

, 還有一個大家說的比較少,但是效果很不錯的模型 Glove ( 論文參見 GloVe: Global Vectors for Word Representation)。注意,這兩個模型使用的不是卷積深層網路,而是淺層的無監督模型。比如word2vec使用的 CBOW 和 skip-gram兩個演算法都是淺層的。輸入向量隨機初始化,然後在訓練中調整。

2) 使用詞向量:我們可以使用已經訓練好的詞向量,作為另一個模型的輸入,比如深層卷積網。這種情形下,詞向量是固定的。改變的只是卷積網的連接係數,做有監督學習,比如題主提到的情感分析。參見大家提到的Kim Yoon的論文 Convolutional Neural Networks for Sentence Classification.

3) 訓練和使用同時進行:這種情況下,輸入向量隨機初始化,然後作為模型參數進行訓練。因為是有監督訓練,得到的向量是針對具體任務的。

4) Hybrid方法:2和3的結合。使用訓練好的詞向量(pre-training),然後根據具體任務在新的網路里微調(fine tuning)。這種方法往往能取得更好的結果,因為訓練的數據是通用的,而具體任務數據往往有特定的性質。參見Kim Yoon論文。

希望有幫助~~


對於為什麼可以隨機初始化問題,我感覺不需要把輸入向量看的太特殊,它就是參數而已,只要能學習,就可以像我們學習W一樣把X給學習出來。

對於如何學習問題,還是那句話,它就是個參數,你怎樣求W的梯度的,一樣可以求X的梯度,求出梯度,用SGD之類的演算法就完事了。


我理解的是將詞向量也作為parameter,拿訓練好的詞向量初始化只是給parameter初始化成一個較好的值,可能能加快訓練或收斂到更優的一個minimum。


所謂的輸入,不是輸入,而是一組參數,其實是個01大向量與這個參數矩陣乘完的結果。既然是參數,那就是隨機初始化,然後bp更新。


也可以用訓練好的 Yoon Kim EMNLP2014 介紹了使用谷歌訓練好的詞向量


CEOs recognize the importance of marketing to building...,intangible make up a large percentage of ...句中逗號前後句子的關係?make up前為什麼加that?


根據我的理解,輸入向量隨機化是這樣的,一種是全部的詞向量都是隨機化的,在卷積神經網路中進行調整,因為詞向量也是需要訓練的;一種是全部的詞向量用Google News訓練好的詞向量,但是對於具體的文本,有些詞是沒有對應的詞向量的,對於這些特殊詞需要進行隨機初始化。樓主可以看下詞向量訓練也是用神經網路訓練出來的。


推薦閱讀:

希望推薦一本自然語言處理專業需要精讀的著作?
自然語言處理中的語義到底是個什麼概念?語義分析是要分析出什麼結果?
自然語言處理(NLP)和計算語言學之間的區別和聯繫是什麼?
做文本挖掘是否需要了解自然語言處理?
word embedding 詞向量能否用於判別中文辭彙難易度?

TAG:機器學習 | 自然語言處理 | 神經網路 |