# 神經網路優化技巧 <!-- Put the link to this slide here so people can follow --> https://hackmd.io/@joshhu/SJ2UG4UdS --- * 針對資料 * 針對神經元 * 針對整個神經網路 * 針對損失函數 * 針對啟動函數 * 針對層 * 針對參數 --- ## 使用這些技術的目的 --- 1. 提高模型的準確度 2. 加快達到訓練效果的時間 3. 防止overfitting 5. Inference的速度 6. 對抗雜訊的能力 --- ## 提高模型準確率 --- 1. Confusion Matrix 2. F1 Score其它資訊 --- ## 模型準確率 --- 1. 訓練集上有沒有好的結果 1. 訓練集結果不好,不是過度擬合(overfitting),需做調整(如dropout) 1. 測試集上有沒有好的結果 1. 測試集上沒有好結果,就是過度擬合 1. 測試集上結果也好,表示模型訓練成功 --- ## 優化流程 ![](https://i.imgur.com/nhALciN.png) --- ## 網路優化調整的對象 --- 1. 變更整個網路架構(換一組新的H) 1. 針對訓練資料集的變更 1. 針對訓練參數的調整 1. 網路參數的調整 1. 損失函數 1. 最佳化方法 1. 使用一個或多個GPU,或分散式系統(k8s) --- ## 變更整個網路架構 --- 1. 變換一種大架構 2. 變更神經元的種類(啟動函數, RELU) 3. 變換不同的模型,如把resnet換成densnet 4. Dropout(大多只用在fully connected layers) 5. batch norm 6. 模型的參數量會影響很多地方:訓練時間、記憶體的使用、硬體的使用、佈署、參考的時間 --- ### 變換一種大架構 --- 1. 把線性換成非線性 2. 變更神經元的類型 3. 把非線性換成NN 4. 把NN換成DNN 5. 把DNN換成CNN 6. 把CNN換成更複雜的架構,如inception 7. 增加複雜度,即增加函數的分佈空間 8. 如$y=w_1x^2+w_2x+b$這個非線性,一定包含$w_2x+b(w_1=0)$這個線性解 --- ### 模型參數量的影響 --- 1. 這個model是否train的起來 2. 準確度 3. 訓練時間 4. 記憶體的使用 5. 硬體的使用佈署 6. Inference的時間 --- ### 變更Activation Function ![](https://i.imgur.com/tz8ghYU.png) --- ### Gradient Vanishing ![](https://i.imgur.com/NWhbXdZ.png) --- ### Gradient Vanishing --- 靠近輸入層Gradient值非常小,靠近輸出層的Gradient很大,相同學習率靠近輸入層參數updata會很慢,靠近輸出層的參數updata會很快。當前幾層都還沒有更動參數的時候(隨機),之後幾層的參數就已經收斂了。 --- ## 針對訓練資料集的變更 --- 1. 獲得更多分佈更平均的訓練資料 1. Feature Scaling 1. Data augmentation 1. 資料集train, val, test比例的改變 1. 使用CV調整資料集的圖型特值 1. 變換資料集的顏色空間 1. Data balancing 1. Generative model(autoencoders, GAN) 1. Weighted Random Sampler --- ## 訓練時參數的調整 --- 1. 批次大小(batch size) 1. 輪數(epoch) 1. 提早結束(Early stopping) --- ## 網路參數的調整 --- 1. Batch norm 1. Weights, biases的初始化 1. Activation Function(變更神經元) 1. 防止梯度消失或梯度膨脹 1. Softmax --- ## 損失函數的調整 --- 1. 更換損失函數MSE、BCE、CCE 1. L1, L2 Regularization 1. L1, L2 Lamda值 1. 讓損失函數更平滑(更好微分) 2. Focal Loss --- ## 最佳化方法的調整 --- 1. 更換最佳化方法 1. 學習率的調整 1. Hessian, LBFG 1. Momentum-based 1. Adagrad, RMSProp, ADAM, momentum 1. Adaptive learning rates --- ## 最佳化方法的調整 --- 1. 更換最佳化方法 1. 學習率的調整 1. Hessian, LBFG 1. Momentum-based 1. Adagrad, RMSProp, ADAM, momentum 1. Adaptive learning rates ---
{"metaMigratedAt":"2023-06-15T00:33:27.738Z","metaMigratedFrom":"YAML","title":"神經網路優化技巧","breaks":true,"description":"nn optimization .","contributors":"[{\"id\":\"33d47e04-0bab-4c19-9d2f-fbbbae0b7706\",\"add\":3377,\"del\":1091}]"}
    1162 views