sp2.3 Hyperparameter tuning, Batch Normalization and Programming Frameworks
阿新 • • 發佈:2018-11-15
1除錯引數 重要性 紅黃紫
指導原則:alpha學習速率 β是動量裡那個 adam裡β1、2 Σ一般不用除錯
以前引數少時候 比如倆引數 就網格一樣 每個依次試一試
現在深度學習 引數太多 也不知道哪個重要 就隨機試 比如左邊的兩個軸分別是α和Σ
在左圖中可能按順序試驗最左側列5個值 結果可能都一樣 因為Σ用處不大 但是右圖都是隨機的α 更容易出結果
可能是很多維的
可能發現一個點 或者這一小區域的點效果比較好 就放大這一區域 更精細的取值
但有時候往往不是在一個小區域裡
選取適當的範圍
比如選取隱藏單元數和層數:單元數50-100 層數2-4
速率比如0.0001到1 隨機均勻取值 0.1-1取值範圍都沾到90%不夠準 可以對數來取值更容易取到合適的值
用不同的縮放
比如0.0001-1 可能百分之90的落在0.1-1 不應該用均勻線性的一段數
用log對數尺度log scale的分段
分別取對數 得到a b這兩個整數邊界 然後在10的這些冪內取值
對於β:0.9-0.9005變化影響不大 但是在 接近1時候0.999-0.9995影響大
關於調參的兩大學派 :
pandas 式:一天天慢慢除錯 看他的表現 比如改下速率 β 什麼的
第二種caviar魚子式: 同時試驗很多種模型
如果有很多電腦資源啥的還是魚子醬式的比較好 容易找到
批量歸一化 讓引數搜尋更快
輸入值特徵歸一化,但是對於多層的 每層做完WX+B後
再做個歸一化或者啟用後再做個歸一化
也有爭論 是歸一化a還是z 一般是z
計算每層的平均值 計算方差 然後規範化 減去平均值 除以方差 Σ來穩定數值 防止方差為0等
z帽這裡又加入兩個新引數γ和β 也會不斷更新 意味著可以隨意讓你設定z的平均值 不
讓他停留在啟用函式接近0 靠近線性方程那一段 更好利用非線性那段
這裡β和動量裡那個不一樣
這β也是要更新 可以用之前梯度下降的方法或者之前介紹的優化方法來更新
通常和minibatch方法一起使用更佳 和w、b一樣 每次更新一次那兩個引數
但是現在後面的b沒用了 因為每次要算Z平均值 所以每次都會被減去 讓新的這個引數當 右下角
為什麼有效:他使得權重比你的網路更滯後或者更深層,改變了訓練集資料的分佈
比如原本分佈如圖左邊的黑貓 訓練出來 可能對右邊別的顏色的貓就不太適用
其實還是訓練集 測試集資料分佈不同 協變數問題
假設已經學好了w3 b3
減少了隱藏值分佈的變化 正則化z11 z12這一列(保證方差1 均值0不變 )
限制了前層引數的更新 減少了前一層輸入的改變 使得改變的更加穩定
在minibatch上均值和方差都會產生噪聲,因為比較小 歸一化可以減少噪音 有正則化的作用
可以換dropout結合一起使用
用更大的minibatch可以減少噪聲 比如512
bitch norm每次只能處理一個minibatch資料
這裡m指的是minbatch訓練樣本數
在測試集用指數加權 單獨來算平均來算方差和均值
但在測試 時候需要每個樣本逐個來
邏輯迴歸的一般形式 對於多個物體分類
softmax啟用 多分類 輸出值是4*1向量 每個值代表是這個物體的概率
這個啟用函式特別之處在於要最後4*1向量最後再輸出4*1的 之前啟用函式都是單個數值
當兩類時候 softmax就變成了邏輯迴歸 原本是輸出1或0 現在就是概率
硬概率就是 一個1 其餘0 hardmax
softmax是 邏輯迴歸從二分類到多分類的推廣
損失函式:對於單個樣本而已 代價函式對於整體而言
這裡算損失就剩下一項了 就是使得對應那一項概率越大 這也是最大似然估計
向量化計算是個稀疏矩陣 one-hot標籤值是個(4,m)的 預測也是個(4,m)
框架:
placeholder就是站位 每次訓練他都要變
核心就是計算代價函式 cost那一行