哦哦哦哦
第一周的中文筆記
哦哦哦哦哦哦

Setting up your machine learning application

Train / Dev / Test sets

Review: 各種Hyperparameter

  • learning rate ()
  • number of iterations
  • number of hidden layers (L)
  • number of hidden units ()
  • choice of activation function

其他 Hyperparameters

  • momentem
  • mini batch size
  • regularization parameters

關於Cross validations

What is Cross Validation - 壹讀

  • K-fold Cross Validation

將資料集分成K分, 其中一份為測試集, 其餘K-1份為訓練集, 重複K次, 每份資料都會成為一次測試集。

  • Holdout Cross Validation

資料集隨機分成兩份, 一份為訓練集, 一份為測試集, 故又稱為2-fold Cross Validation, 但嚴格來說這不能算Cross Validation

training set / development set / testing set
以往來說 60/20/20 最佳
又或者沒有development set(驗證資料)的話, 70/30也可
現在來說 資料量越來越大, 假設有100萬筆資料, 也許你只需要1萬筆的development set和1萬筆的testing set, 即98%train, 1%dev, 1%test,又或者dev和test甚至可以更少。

重要的是, 確定train,dev,test是from同樣的distribution

沒有testing set也許是可以的, 這時候人們會稱dev set為test set, 因為這個做法就像Holdout Cross Validation一樣, 這樣使用這個方法不太好, 因為會導致 overfitting to the test set(在評估準確度時只會以testing set為考量)。

Bias / Variance

可參考 中文 Bias vs Variance, Underfitting vs Overfitting

這部分在簡體中文筆記本週中文筆記中寫得頗清楚
註:

  • 文中的 過擬合 即Overfitting, 欠擬合 即Underfitting

可以將error和 base error 做比較, 以決定你的Classifier成效好不好。
如何評估base error? 若目前以人類的能力沒辦法有很好的Accuracy又或者沒有其他系統能夠做得很好,那麼這個problem的 base error 就會比較高。

Basic Recipe for Machine Learning

看圖

What to do if High bias

  • 使用規模更大的network(更多hidden layers 或者 更多hidden units)
    • 可以減少bias又不太增加variance
  • train 更久
    • 訓練更久並不總是有用, 但也不太會有損失
  • 試試更多 optimization algorithms
  • 找個新的, 更適合的 neural network architecture

What to do if Low bias but High variance

  • 取得更多data
    • 可以減少variance又不太增加bias
  • regularization
  • 找個新的, 更適合的 neural network architecture 同樣有可能降低variance

bias variance tradeoff

一般的machine learning 想要減少bias就容易增加variance, 反之亦然, 因此需要在bias和variance之間做權衡。 然而deep learning的特性, 可以使得減少bias或variance其中之一的同時, 又不太影響到另外一項。

Regularizing your neural network

Regularization

終於啊好久沒看到中文字幕了

邏輯回歸為例:

Review

原本的 Lost Function

L2 Regularization (最常見的正則化)

Lost Function

也就是新增了此項

L2 norm of w

L1 Regularization (較不常用)

Lost Function

新增項改為

L1 norm of w

L1 Regularization會使得w矩陣很稀疏(sparse, 即矩陣內部有大量值為0), 有些人認為有助於壓縮模型, 但講者認為L1 Regularization 效益不大。

Summary

  • 稱為 regularization parameter, 要調整這個參數通常會使用development set或者cross validation來做驗證。
  • 是我們要調整的一個 hyperparameter

以 Neural Network 為例

Regularization 之後

Lost Function

Review: w維度

Frobenius norm

  • , 即矩陣中所有元素的平方和

Review: Back Propagation

正則化之後的 Back Propagation

這個正則化後的 Back Propagation 其實是讓w矩陣再減去 乘上w本身。 故L2 Regularization又被稱為weight decay(權重衰減)

dw怎麼出來的 為啥啊

Why regularization reduces overfitting?

  • 很大的時候, 會使 Back Propagation 後許多w變得很小至將近0, 因此這個NN會變得很簡單, 就能防止Overfitting, 但也會趨向 Hight bias, 因此要將 調控得剛好。

  • Regularization是讓w變小的方法, 在很小的時候, 也會變很小(因 ), 假設 activation function() 現在是或者是 sigmoid function, 則在z很小的時候, g(z)的表現會趨近於linear function, 也就是會有許多hidden unit的表現會是單純的linear regression, 故這個NN沒辦法計算出過於複雜的model, 也就可以防止Overfitting。
  • 缺點:需要嘗試各種 值, 計算代價龐大

Dropout regularization


將各hidden units的輸出以一定的機率歸零
可以參考這筆記

implementing dropout (inverted dropout)

假設我們希望有0.2的機率將hidden units歸零

keep_prob = 0.8 # 1 - 0.2 = 0.8
d= np.random.rand(a.shape[0], a.shape[1]) < keep_prob # dropout矩陣, 內容數值會有0.8的機率為1, 0.2的機率為0
a = np.multiply(a, d) # 將各個hidden units output乘上dropout矩陣數值
a = a / keep_prob # dropout之後, a的期望值會變為原本的0.8倍, 為了傳遞到下一層時保持原本的期望值, 故將輸出除以keep_prob

dropout code: 這個 github 直接把整個 deep neural network 實作出來了o_o

只需要在training時使用dropout, testing時不用dropout(為啥 ???)
最後一段影片也沒看懂

Understanding dropout

  • 較不擔心overfitting的layer, keep_prob 可以設得比較高, 較擔心overfitting的layer(通常會是w矩陣較大的layer), keep_prob設得較低。

  • the downside is ?????

  • 常用於電腦視覺, 因為input feature非常多, 但資料量又不夠多

  • 每次的迭代, 都會將那層的hidden units隨機抹消, 因此Cost Function(J)再也不是可以明確定義、計算出的值。所以難以確認真正的Cost Function是不是在每次迭代後單調遞減。

Other regularization methods

參考

  • Data Augmentation

ex: 將圖片翻轉、鏡像、稍微放大後,label仍然一樣(是貓的圖片仍然是貓,不是貓的圖片仍然不是貓),但資料量擴增數倍。

  • Early Stopping
    • 缺點:無法分開解決"最小化Cost Function" 和 "避免Overfitting"

Setting up your optimization problem

Normalizing inputs

讓平均值變為0

標準差變為1

以 Gradient Descent 來說, Normalize 後的 data 可以設定比較高的 learning rate

Vanishing / Exploding gradients

假設

  • activation function
  • bias

那麼 這時候若 w > I , 梯度會爆炸; 若 w < I 梯度會消失

Weight Initialization for Deep Networks

把w初始化成 平均值為 0, 變異數為 1/n (經實驗發現2/n較佳), 則可以"改善"(非解決)梯度爆炸或梯度消失。

  • Xavier initialization

results matching ""

    No results matching ""