你說的兩種情況,第一種相當於隨機初始化了詞向量矩陣並以任務為導向生成適合當前任務的詞向量空間;第二種是預訓練生成詞向量矩陣並設定成靜態(不隨訓練改變)。其實個人認為這兩種方法都不是非常適合,較常使用的方法是先預訓練獲得詞向量矩陣接入網路,並以任務為導向伴隨著訓練的進行對詞向量進行微調,從而使詞向量在空間中的分佈具有一定語義區分性並在此基礎上,調整生成更適合當前任務的詞向量空間分佈。
另外值得注意的是樓主的預訓練資料和實驗資料一樣,一般而言預訓練使用的語料資料要求都比較大,才能夠讓預訓練模型更好的捕捉到詞的某些語義特徵,並反映到訓練所得的詞向量空間中,以如歐式距離的方式衡量詞語之間的語義是否相近等。
在闡述自己看法之前,我先在這裡提供一些文章給出的論述和結果。
首先看這篇文章:Convolutional Neural Networks for Sentence Classification
該文章有一部分實驗在CNN模型上嘗試了多種詞向量空間的獲取和使用方式,下表為文章中的實驗資料,可以很確定的說樓主問題中的第一種方式(CNN-rand)效果是最差的。而第二種靜態方式(CNN-static)相比預訓練並動態調整的方法(CNN-no-static)大部分情況下要略遜一籌。CNN-mutichannel方法這裡不提,是一種作者期望的透過兩組不同詞向量構成多通道結構試圖防止小資料量情況下的過擬合程度從而提高模型的精度,有興趣自己去看文章。
另外一篇文章:On the effective use of pretraining for natural language inference
這個文章證明了只要正確的進行模型的配置,使用預訓練詞向量效果一定會比隨機初始化來的強。
現在在來說說個人的看法。上面這篇文章值得注意的是其說的是正確的進行配置所使用的模型,所以樓主這個問題看似簡單其實涉及的內容非常多。包括預訓練所使用的模型,訓練所使用的模型的配置方式,都是很值得探討深究的。如果樓主只是初步學習的話那麼還是建議採用預訓練並動態調整的方法。(其實本人也是入門級別哈哈哈哈哈)
而關於預訓練模型方面,似乎網上都在講Word embedding其實這只是入門。。預訓練這個東西還是很有東西可以挖的。推薦一篇知乎上的文章樓主可以看看:從Word Embedding到Bert模型—自然語言處理中的預訓練技術發展史
你說的兩種情況,第一種相當於隨機初始化了詞向量矩陣並以任務為導向生成適合當前任務的詞向量空間;第二種是預訓練生成詞向量矩陣並設定成靜態(不隨訓練改變)。其實個人認為這兩種方法都不是非常適合,較常使用的方法是先預訓練獲得詞向量矩陣接入網路,並以任務為導向伴隨著訓練的進行對詞向量進行微調,從而使詞向量在空間中的分佈具有一定語義區分性並在此基礎上,調整生成更適合當前任務的詞向量空間分佈。
另外值得注意的是樓主的預訓練資料和實驗資料一樣,一般而言預訓練使用的語料資料要求都比較大,才能夠讓預訓練模型更好的捕捉到詞的某些語義特徵,並反映到訓練所得的詞向量空間中,以如歐式距離的方式衡量詞語之間的語義是否相近等。
在闡述自己看法之前,我先在這裡提供一些文章給出的論述和結果。
首先看這篇文章:Convolutional Neural Networks for Sentence Classification
該文章有一部分實驗在CNN模型上嘗試了多種詞向量空間的獲取和使用方式,下表為文章中的實驗資料,可以很確定的說樓主問題中的第一種方式(CNN-rand)效果是最差的。而第二種靜態方式(CNN-static)相比預訓練並動態調整的方法(CNN-no-static)大部分情況下要略遜一籌。CNN-mutichannel方法這裡不提,是一種作者期望的透過兩組不同詞向量構成多通道結構試圖防止小資料量情況下的過擬合程度從而提高模型的精度,有興趣自己去看文章。
另外一篇文章:On the effective use of pretraining for natural language inference
這個文章證明了只要正確的進行模型的配置,使用預訓練詞向量效果一定會比隨機初始化來的強。
現在在來說說個人的看法。上面這篇文章值得注意的是其說的是正確的進行配置所使用的模型,所以樓主這個問題看似簡單其實涉及的內容非常多。包括預訓練所使用的模型,訓練所使用的模型的配置方式,都是很值得探討深究的。如果樓主只是初步學習的話那麼還是建議採用預訓練並動態調整的方法。(其實本人也是入門級別哈哈哈哈哈)
而關於預訓練模型方面,似乎網上都在講Word embedding其實這只是入門。。預訓練這個東西還是很有東西可以挖的。推薦一篇知乎上的文章樓主可以看看:從Word Embedding到Bert模型—自然語言處理中的預訓練技術發展史