Deep Learning (Ian Goodfellow, Yoshua Bengio and Aaron Courville) 閱讀筆記

NO IMAGE

Ian Goodfellow, Yoshua Bengio and Aaron Courville 合著的《Deep Learning》 終於寫完了,並且放在網上可以線上免費閱讀。網址:http://www.deeplearningbook.org
一些筆記整理於此。

Chapter 11 實踐指導

1 什麼問題適合用deep learning
如果一個問題是AI-complete的,就可以用。
2 明確目標任務
error metric,和 target value for this error metric。
3 儘快建一個baseline
網路結構:
if 當前任務和已經研究過的任務很像:
  那麼直接借用之前的模型很有可能取得較好的效果。
else:
  自己設計模型,選擇合適的超參。
  層數,隱層節點數:“Usually the best performance comes from a large model that is regularized well, for example by using dropout。”可以先設定一個較大的模型。
  regularization:除非有數千萬的資料,開始的模型一定要加一些regularization(例如dropout)。
  其他trick:對卷積神經網路的訓練,和使用sigmoid類非線性啟用函式的網路,Batch Normalization 非常有效!Batch Normalization 有時也會減少泛化錯誤率,甚至允許去掉dropout。
訓練方法:
推薦用Adam或加momentum和decay的SGD訓練。
預訓練:
有監督的預訓練:
比如計算機視覺的任務,經常借用CNN在ImageNet中學到的feature。
關於是否要先用無監督學習預訓練:
與領域相關。NLP任務,從詞向量中可以獲得很大的幫助。計算機視覺,目前的無監督方法並不能帶來提升,除了在半監督任務中。
如果在一個領域,已經知道無監督方法很有用,那麼可以使用。否則,不要用,除非任務本身就是無監督的。
如果發現baseline overfit,那麼之後可以嘗試加無監督學習。
4 訓練模型:
超引數的選擇:
手工調整:需要理解超引數的作用和機器學習模型是怎樣達到好的泛化效果的。
自動調整:更耗費計算資源,不需理解那些背後原因。
如果只有時間調整一個超參,那麼選擇調整學習率!(自適應的方法學習率就不用調了,並且建議使用原論文中給出的初始引數)
是否要獲取更多的資料:
if 訓練集準確率很低:
  不需要獲取更多資料。加模型複雜度(層數,隱層節點數),調整訓練演算法(學習率)。如果怎麼調整都不行,那可能是資料質量的問題,重新獲取更乾淨的資料和設計更好的特徵。
else:
  if 測試集準確率很高:
     done
   else:
    如果測試集準確率比訓練集低很多,獲取更多資料是最有效的方法!
    if 獲取資料成本不高:
       加資料。
    if 獲取更多資料的成本太高:
       可以嘗試降低模型複雜度或者提高正則項。這樣調整到極致還不行,建議加資料。
     if 無法獲取更多資料:
       對領域做更深入的研究。
要加多少資料合適:
通常,加已有資料的一個分數倍資料,無法看到什麼提升。推薦指數級增長,比如每次訓練集大小擴大一倍。

Chapter others

對於深度學習模型,只對W,不對b加reg。原因,相對於W而言,b 的影響沒那麼大,同時,對b加正則會明顯的增加欠擬合。

Maximum likelihood learning with asoftmax classifier and hard targets may actually never converge—the softmax cannever predict a probability of exactly 0 or exactly 1, so it will continue to learnlarger and larger weights, making more extreme predictions forever.
有時預測結果概率分佈太極端,一類為1,其他全是0,就是上述原因導致的。一種解決方法如下:
Label smoothing,regularizes a model basedon a softmax withkoutput values by replacing the hard 0 and 1 classificationtargets with targets of e and 1−e, respectively. Label smoothing has the advantage of preventing the pursuit of hard probabilities without discouraging correct classification.

多工學習,通過共享權重和多目標的loss,也可以提高泛化性。

batch size
至少要充分利用機器多核的計算能力,不要過小,沒有意義。
當用gpu時,2的冪是常見的選擇,32到256最常見。
小的size可以提供正則的效果,可能是因為訓練時帶來的噪音。為1時泛化錯誤率最低,但也意味著需要更長的訓練時間。