1. 程式人生 > >sp2.3 Hyperparameter tuning, Batch Normalization and Programming Frameworks

sp2.3 Hyperparameter tuning, Batch Normalization and Programming Frameworks

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那一行