ML:基礎技法學習
Package:scikit-learn
課程:機器學習技法
簡介:第十二講 Neural Network
減少 iteration 的次數
sklearn.neural_network.MLPClassifier
sklearn.neural_network.MLPRegressor
Package:scikit-learn
課程:機器學習技法
簡介:第十二講 Neural Network
Neural Network Learning
- 初始化 \(w_{ij}^{(l)}\)
- 需為隨機且比較小的值
- for \(t=0,1,\cdots, T\)
- stochastic:隨機挑選 \(n \in \left \{ 1,2,\cdots ,N \right \}\)
- forward:用 \(\mathbf{x}^{(0)}=\mathbf{x}_n\) 計算所有的 \(x_i^{(l)}\)
- backward:基於 \(\mathbf{x}^{(0)}=\mathbf{x}_n\) 計算所有的 \(\delta _j^{(l)}\)
- gradient descent:\(w_{ij}^{(l)}\leftarrow w_{ij}^{(l)}-\eta x_i^{(l-1)}\delta _j^{(l)}\)
- 回傳 \(g_{NNet}(\mathbf{x})=\left (\cdots \mathrm{tanh}\left ( \sum _j w_{jk}^{(2)}\cdot \mathrm{tanh}(\sum _i w_{ij}^{(1)}x_i) \right ) \right )\)
- 1. 到 3. 可重覆做很多次(可平行處理),再將其結果 \(x_i^{(l-1)}\delta _j^{(l)}\) 平均後,放置 4. 執行,這種做法稱為 mini-batch
Optimization and Regularization
$$
E_{in}(\mathbf{w})=\frac{1}{N}\sum_{n=1}^{N}err\left ( \left (\cdots \mathrm{tanh}\left ( \sum _j w_{jk}^{(2)}\cdot \mathrm{tanh}(\sum _i w_{ij}^{(1)}x_{n,i}) \right ) \right ),y_n \right )
$$
- 當具有多層 hidden layers,通常為 non-convex
- 難以得到 global minimum
- GD/SGD 只能得到 local minimum
- 在實務上還是有不錯的表現
- 不同的 \(w_{ij}^{(l)}\) 初始值,可能會得到不同的 local minimum
- \(w_{ij}^{(l)}\) 太大,會使得 \({\mathrm{tanh}}(s_j^{(l)})\) 遠離中心,導致 \({\mathrm{tanh}}'\left ( s_j^{(l)} \right )\) 太小
每次的移動將非常小,稱作 saturate (飽和) - \(d_{VC}=O(VD)\)
- \(V\):神經元的個數
- \(D\):weights 的個數
- 優點
- 足夠的 \(V\) 可近似任何函數
- 缺點
- 太多 \(V\) 容易 overfit
- Regularization \(e_{in}(\mathbf{w})+\Omega (\mathbf{w})\)
- L2
- \(\Omega (\mathbf{w})=\sum \left (w_{ij}^{(l)} \right )^2\)
- \(e_{in}(\mathbf{w})+\Omega (\mathbf{w})=e_{in}(\mathbf{w})+\sum \left (w_{ij}^{(l)} \right )^2\)
- \(\frac{\partial (e_{in}(\mathbf{w})+\Omega (\mathbf{w}))}{\partial w_{ij}^{(l)}}=\delta _j^{(l)}\cdot \left (x_i^{(l-1)} \right )+2 \cdot \left (w_{ij}^{(l)} \right )\)
- 從上式得知,large weight → large shrink; small weight → small shrink
但這並無法令 \(w_{ij}^{(l)} =0\),當 \(w_{ij}^{(l)} =0\) 才能降低 \(d_{VC}\),也就是 \(d_{VC}=O(VD)\) 的 \(D\) - L1
- \(\Omega (\mathbf{w})=\sum \left |w_{ij}^{(l)} \right |\)
- \(e_{in}(\mathbf{w})+\Omega (\mathbf{w})=e_{in}(\mathbf{w})+\sum \left |w_{ij}^{(l)} \right |\)
- 可得到 \(w_{ij}^{(l)} =0\),因其頂點解的緣故
可參考 [ML] 機器學習基石:第十四講 Regularization - 但無法微分,這會導致 backprop 無法求解
- weight-elimination
- \(\Omega (\mathbf{w})=\sum \frac{\left (w_{ij}^{(l)} \right )^2}{1+\left (w_{ij}^{(l)} \right )^2}\)
- \(e_{in}(\mathbf{w})+\Omega (\mathbf{w})=e_{in}(\mathbf{w})+\sum \frac{\left (w_{ij}^{(l)} \right )^2}{1+\left (w_{ij}^{(l)} \right )^2}\)
- \(\frac{\partial (e_{in}(\mathbf{w})+\Omega (\mathbf{w}))}{\partial w_{ij}^{(l)}}=\delta _j^{(l)}\cdot \left (x_i^{(l-1)} \right )+\frac{2w_{ij}^{(l)}}{\left ( 1+\left (w_{ij}^{(l)} \right )^2 \right )^2}\)
- large weight → median shrink; small weight → median shrink
將可以令 \(w_{ij}^{(l)} =0\),但前提是範圍需正確 \(-4<w_{ij}<-4\)
假設前項 \(\delta _j^{(l)}\cdot \left (x_i^{(l-1)} \right )\approx 0\),可畫出下圖
- early stopping:gradient 有關的演算法皆可應用此方式
- 從某個角度來看,當做越多次,看過的 \(\mathbf{w}\) 就越多,那麼有效的 \(d_{VC}\) 也就越大
- 可用 validation 決定 T,可參考 [ML] 機器學習基石:第十五講 Validation
程式碼
參考
Neural network models (supervised)sklearn.neural_network.MLPClassifier
sklearn.neural_network.MLPRegressor
留言
張貼留言