目錄算法
1、超參數調整網絡
從高到低:學習率$\alpha$——>$\beta$(0.9)、hidden units、minibatch size——>layers、學習率衰減——>$\beta_{1}$(0.9)、$\beta_{2}$(0.99)、$\epsilon$($10^{-8}$)app
不要用grid來設置選擇,由於不一樣參數的重要性不一樣框架
Hyperparameter2 | ||||
Hyperparameter1 | x | x | x | x |
x | x | x | x | |
x | x | x | x | |
x | x | x | x |
參數的選擇範圍能夠先肯定一個大的,再縮小ide
2、爲超參數選擇合適的範圍函數
如每層的節點數或網絡層數。但並非適用於全部超參數學習
若是在[0.0001,1]之間均勻選擇,那麼其實90%的數據是來自於[0.1,1],10%是來自[0.0001,0.1]。爲何這個不合理?(沒有找到合理的解釋,是否是經驗呢?)測試
更合理的方法應該是把[0.0001,1]轉換成[-4,0] (10-4 = 0.0001),而後在[-4,0]間取樣,這樣在[0.0001,0.001]和[0.1,1]間取到的數的機率更平均spa
更通常地,取對數,把區間寫成[a,b]3d
爲何直接取[0.9,0.999]是均勻分佈很差:當$\beta$越接近1時,它很小的變化會對$\frac{1}{1-\beta}$結果形成更大的影響
$\beta$ | 0.9 | 0.999 | 0.9000 | 0.9005 | 0.999 | 0.9995 |
10 | 1000 | |||||
$1-\beta$ | 0.1 | 0.001 | ||||
$\frac{1}{1-\beta}$ | 10 | 10.05 | 1000 | 2000 |
調整方法:把對$\beta$的選擇,變成對$1-\beta$的考慮,而後再進行approximate scale,轉換成對次方的取值[-3, -1]
3、超參數的實踐:pandas VS canviar
一次就關注一個model,而後頻繁地進行修改;系統比較複雜時選這個
一次能夠並行調試多個model;有比較多的計算資源時選這個
4、正則化激活函數
實現方式:batch歸一化算法(這裏默認對z值而不是對a)。計算出znorm後,再求一個式子(有兩個參數$\eta$、$\beta$),最後是用$\tilde{z}$來計算,而$\tilde{z}$的均值和方差能夠經過兩個參數來控制
給定一層的中間結果$z^{(1)}, z^{(2)}..., z^{(m)}$ |
|
$\mu = \frac{1}{m}\sum_{i}z^{(i)}$ $\sigma = \frac{1}{m}\sum_{i}(z_{i}-\mu)^2$ $z^{(i)}_{norm}=\frac{z^{(i)}-\mu}{\sqrt{\sigma^2+\epsilon}}$ $\tilde{z}^{(i)}=\eta z^{(i)}_{norm}+\beta$ |
if $\eta = \sqrt{\sigma^2+\epsilon}$ and $\beta = \mu$ then $\tilde{z}^{(i)}=z^{(i)}$ |
由於後面會對$z$值求平均再減去均值,這樣$b^{[l]}$不管是什麼值,最後都不會對結果有影響,所以這裏能夠再也不考慮$b^{[l]}$這個參數,也就是$z^{[l]}=w^{[l]}a^{[l-1}]$。在反向求導中也不須要考慮$db^{[l]}$
例:對黑貓進行訓練獲得一個映射關係。若是把這個函數運用到對有色貓的識別,也就是輸入值的分佈發生了改變。那其實應該從新進行訓練(covariance shift問題)
對於一個深層網絡,若是考慮第$l$層,當前面的參數發生變化時,$l$層的輸入也就相應變化。經過batch normalize可讓$l$層看到/處理的數據分佈變得更穩定,減小了前面參數對後面層的影響。
訓練時,bn是須要在整個mini-batch上執行,但測試時可能不能一次同時執行整個mini-batch(樣本數量比較大),所以須要另外的方法進行估算
方法:指數權重平均值
5、softmax迴歸
相對於邏輯迴歸,softmax把輸入分紅$k$類,通常$k>2$
以下,把輸入圖片分紅4類
$a=softmax(z)=\begin{bmatrix}\frac{e^{z_1}}{\sum_{j=1}^ke^{z_j}}\\\vdots \\ \frac{e^{z_k}}{\sum_{j=1}^ke^{z_j}}\end{bmatrix}$
例:
$z=\begin{bmatrix}5\\ 2\\ -1\\3 \end{bmatrix}$ $t=e^{z_i}=\begin{bmatrix}e^5\\ e^2\\ e^{-1}\\e^3 \end{bmatrix}=\begin{bmatrix}148.4\\ 7.4\\ 0.4\\20.1 \end{bmatrix}$ $\sum_{j=1}^4t_j=176.3$ $a=\frac{t}{176.3}=\begin{bmatrix}0.842\\ 0.042\\ 0.002\\0.114 \end{bmatrix}$
相對於hard max,它是把最可能的結果標記爲1,其它爲0。而softmax是經過幾率大小來體現
相關參數
$w=\begin{bmatrix}w_{11} & ... & w_{1m}\\ \vdots & &\vdots \\ w_{k1}& ... &w_{km} \end{bmatrix}$ $x=\begin{bmatrix}x_1\\\vdots \\ x_m\end{bmatrix}$ $b=\begin{bmatrix}b_1\\\vdots \\ b_k\end{bmatrix}$
前向傳播
$z=wx+b=\begin{bmatrix}\sum_{i=1}^m w_{1i}x_i + b_1\\\vdots \\ \sum_{i=1}^m w_{ki}x_i + b_k\end{bmatrix}=\begin{bmatrix}z_1\\\vdots \\ z_k\end{bmatrix}$
$a=softmax(z)=\begin{bmatrix}\frac{e^{z_1}}{\sum_{j=1}^ke^{z_j}}\\\vdots \\ \frac{e^{z_k}}{\sum_{j=1}^ke^{z_j}}\end{bmatrix}=\begin{bmatrix}a_1\\\vdots \\ a_k\end{bmatrix}$
定義loss函數
$L(y, \widehat{y})=-\sum_{j=1}^ky_ilog\widehat{y_i}$,其中$\widehat{y}=a$
反向傳播求導
$da_j=\frac{dL}{a_j}=-\frac{y_j}{a_j}$
接下來要計算:$dz_i=\frac{dL}{z_i}$
開始時老是用$dz_i=\frac{dL}{z_i}=\frac{dL}{a_i}\cdot \frac{a_i}{z_i}$
這個實際上是不對的,由於不只$a_i$計算中用到$z_i$,在$a_j$($j\neq i$)計算中也用到了,因此求導時要把全部$a$考慮進來,能夠分紅兩種狀況
$i = i$, $\frac{da_i}{dz_i}=\frac{e^{z_i}\sum_{j=1}^ke^{z_j}-(e^{z_i})^2}{(\sum_{j=1}^ke^{z_j})^2}=a_i-a_i^2$
$i \neq j$, $\frac{da_j}{dz_i}=-\frac{e^{z_i}e^{z_j}}{(\sum_{j=1}^ke^{z_j})^2}=-a_ia_j$
由上面兩種狀況合併可得:
$dz_i=\frac{dL}{da_i}\cdot\frac{da_i}{dz_i}+\sum_{j\neq i}\frac{dL}{da_j}\cdot \frac{da_j}{dz_i}\\=\frac{-y_i}{a_i}(a_i-a_i^2)+\sum_{j\neq i}\frac{y_j}{a_j} a_ia_j\\=-y_i+a_iy_i+a_i\sum_{j\neq i}y_j\\=-y_i+ai\sum_{j=1}^ky_j\\=a_i-y_i$
最後一步計算中,$y_j$求和爲1,是由於一個輸入只屬於一種分類,也就是隻有一個$y_i$取值爲1,其它則爲0