優化算法的參數
論文中使用SGD算法,基本參數設置在前面優化算法的總結中已經提到了。這里要說幾個個人體會。
a. 原文中輸入的batch數目是256,應該Alex經過調節后的結果,我實際用到的機器性能比較低,內存8G,顯存4G,所以不得不就將batch數目往下調到64,以免產生out of memory的錯誤。這樣就需要調節其他的參數來保證數據的收斂。原因是batch比較小,導致本文開篇提到的樣本覆蓋面過低,產生了非常多的局部極小點,在步長和方向的共同作用下,導致數據產生了震盪,導致了不收斂。
b.在這種情況下,把learning rate調節到了0.02,相當於加大了步長,這樣可以在一定程度上避免震盪,可以越過局部極小點往比較大的極值點行走。
c. 對於每一層的bias從1設置為了0.1,在一定程度上限制了激活的大小,這樣就限制了某一過大的誤差的影響,這樣可以避免迭代方向出現過大的變化。
d. 經過b c后,系統終於收斂了,但帶來的不良后果就是整個收斂速度變慢,因此還需要增加最大迭代次數,經過測試迭代次數成了從45w修改成了70w。
e. 在整個運行過程中,出現了幾次平穩點,20w以及40w左右的時候,因此迭代的learning rate應該隨着迭代的接近平穩點的時候有意的減小一些,目前是以每10w次減小為1/10,調參數用了5天,最后運行時間為15天。
f. 關於調參策略,上面只是按照一些簡單的理解設置的,如果沒有一個合理的解釋,調參就變成了一個很low的工作。還好發現了好幾篇關於調參的論文,主要是優化算法理論方面的,學習完再回來測試一下。
可參考:http://m.blog.csdn.net/article/details?id=48316353