有多種模型壓縮的方法。
第乙個是網路剪枝,因為神經網路往往是過度引數化,所以刪掉一部分網路引數。先訓練好乙個大的神經網路,然後評估每個引數是否重要,評估方法其實就是看是否接近0。然後把不重要的東西移除。用新的網路重新訓練一下,update一下引數,可以把損傷移除。注意一次不刪掉很多,怕恢復不回來,所以迭代地刪除引數。
那麼為什麼不直接訓練乙個小的神經網路呢?因為小的神經網路比較難訓練。大的nn比較好優化。有個大樂透假設,每個小的網路是複式彩票中的乙個,所以容易訓練出來。
是刪除權重好,還是刪除神經元。如果直接刪權重的可能導致網路不規則,不適合實現和gpu加速。所以具體實現上是設定為0。一般刪除神經元的話比較容易實現和加速。
知識精餾的方法:在大網路以外重新訓練乙個小的網路,訓練資料用大網路的輸出。這樣可以使得兩個網路越接近越好。也就是student去跟teacher學。神奇的是,這樣的方法可以處理他從來沒有見過的型別。 還有乙個好處是可以用多個模型ensemble的輸出作為teacher來訓練。非常強大。
引數量化,這個我會,哈哈。他的極致是只使用正負一來表示乙個神經網路的引數,可以同時維護乙個實數值的和乙個二元值的網路。有點像近似演算法裡面的rounding。
架構設計:可以考慮在兩層之間加入乙個比較窄的乙個隱層,這樣可以有效減少參數量,但是降低了網路轉換的秩。面對卷積神經網路的時候可以這樣做,挺巧妙的。
動態計算:當看到手機電量不夠的時候就選擇乙個計算量小的方案。可以儲存多個不同深度的網路,或者只訓練中間結果,把中間層的結果直接輸出分類結果。
李巨集毅《機器學習》課程筆記(作業四 RNN)
rnn和半監督學習需要後面補上。word embedding是想做乙個什麼事情呢,是希望把詞彙用乙個比較短的向量表達出來,因為通常的詞彙的表達是通過乙個非常長的 詞典那麼長的 1 of n向量來表達,這樣的表達沒有資訊,我們希望能用乙個短向量 例如10或100維 來表達詞彙,就需要每個維度表達一些資...
李巨集毅《機器學習》課程筆記(作業二 分類)
為什麼不能直接用回歸的方式來做分類的問題,因為在回歸裡面,可能同一類裡面的樣本點他們的feature差異很大,但是lable都是1,這就要求求出來的model兼顧所有的樣本點,那麼可能導致model效能較差。下圖表現的非常清晰。在做分類的時候,用到貝葉斯公式,可是公式中的p x c1 應該怎麼算呢?...
李巨集毅機器學習課程筆記 1
機器學習 自動找函式 f input output 1.regression 輸出是乙個數值 2.classification 分類 二分類 多分類 rnn 迴圈神經網路 cnn 卷積神經網路translation 繪二次元圖4.supervised learning 監督學習labeled dat...