針對文本分類問題,作者在這篇論文裏,詳細講解了如何對神經網絡進行調參。論文主要內容如下。
1.論文背景
CNN已經廣泛應用於文本分類任務中,但是訓練模型需要精通模型結構,以及如何進行調參,包括filer的大小,正則化參數等等。而且模型的性能對參數非常敏感。這篇論文主要研究的是,單層神經網絡調參。因爲對於很多問題,單層CNN已經足夠應對。作者最後給出了關於調參的實際建議。
2. Baseline模型
2.1 非NN模型:
首先比較了常用的非NN模型,包括線性kernel SVM模型,使用uni和bi-gram特徵。然後比較了word2Vec和GloVe詞向量,以及將二者組合,和RBF-kernel 的SVM模型。不同的模型比較結構如下圖所示。
2.1 NN模型:
作者首先給出了一個NN baseline模型,在此的基礎上進行調參。
3. 調參
3.1 詞向量的影響:
比較了兩種常用的詞向量:word2vec和GloVe。詞向量可以訓練爲動態(Non-static),否則爲靜態(static)。Non-static 均超過staic模型,所以在此只比較non-static模型。比較結果如下所示。
結論:Non-static word2vec-CNN表現最好.
3.2 filter大小的影響:
filter的大小起到非常大的作用,這是以前所沒想到的。
從實驗結果看出,filer size=7的時候表現最好,同時作者建議,對於更長的文本,可以嘗試更大的filter。
多個filter相組合可以得到比單層CNN更好的結果。
結論:首先找到單層最佳的filter大小,建議範圍1-10。最佳大小附近的幾個數值相互組合能提高性能。
3.3 feature map數量的影響:
對於不同的數據集,feature map的最優數量差別很大,此處僅給出作者的實驗結果,具體還有根據實際調參。作者實驗的範圍:10, 50, 100, 200, 400, 600, 1000,2000。
結論:根據實驗結果而定,建議範圍100-600。
3.4 激活函數的影響:
可供選擇的激活函數有,ReLU,tanh,Sigmoid,SoftPlus。平常只用ReLU,可以嘗試tanh。
結論:大部分情況下tanh,ReLU表現最好。
3.5 池化(pooling)的影響:
作者嘗試了多種方法,包括:k-max(選取最大的k個值),平均池化等等。
結論:1-max pooling表現最好
3.6 正則化(regularization)的影響:
首先比較了Dropout的影響,實驗範圍: 0.0-0.9。實驗發現Dropout帶來的效果很小,和常見的結論所違背,有可能是因爲只有一層神經網絡。深層網絡可能會帶來明顯的影響。
然後比較了L2範數的影響。此處嚴重超出認知,L2竟然可以設置這麼大。
結論:Dropout和L2能帶來巨大的影響。Dropout建議範圍:0-0.5。可嘗試較大的L2標準化。
4. 結論
4.2 結論彙總:
- 輸入詞向量的選擇具有明顯的影響,word2vec或者Glove均比單純的onehot要好;
- filter的大小影響巨大,應該調參;
- feature maps的數量同樣有小的影響;
- 1-max pooling要比其他池化策略都好;
- 歸一化的影響很小。
4.1 調參步驟:
- 從baseline出發,使用non-static或者GloVe;
- 對filter size進行線性搜索直到找到最好的單個region size,過長文本可以嘗試比較大的filter。一旦確定filter size,嘗試多個filter並聯;
- 從100到600調整feature maps的數量,使用比較小的Dropout rate(0.0–0.5),以及較大的L2 標準化;
- 考慮使用不同的激活函數,大部分情況下ReLU和tanh效果最好,可以嘗試無激活函數;
- 使用1-max pooling;
- 當增加feature maps數量的時候,嘗試增加歸一化係數;