深度學習提高trick小技巧

2021-10-21 10:18:43 字數 2085 閱讀 1215

在深度學習中,同乙個模型使用不同方式的初始化,比如:資料預處理,batch_size, 學習率, 不同的優化器都能得到不同效能的引數。

學習率的設定應該隨著迭代次數的增加而減小,每迭代完指定次epoch也就是對整個資料過一遍,然後對學習率進行變化,這樣能夠保證每個樣本得到公平的對待。

使用動態的學習率有助於加速收斂,在更少的epoch裡得到更好的模型精度。

pytorch版本:

2、引數設定:

1、其中stepsize最好設定為乙個epoch迭代次數的2~10倍;

2、base_lr是最低學習率,max_lr是最高學習率,max_lr最好設定為base_lr的3到4倍;

3、一共有三種週期變化模式:trianglar、triangular2、exp_range,在**中,後兩者表現更好;

3、余弦退火

在採用批次隨機梯度下降演算法時,神經網路應該越來越接近loss值的全域性最小值。當它逐漸接近這個最小值時,學習率應該變得更小來使得模型不會超調且盡可能接近這一點。余弦退火(cosine annealing)利用余弦函式來降低學習率,進而解決這個問題。

4、 sgdr

sgdr能夠通過梯度下降過程中突然提高學習率來跳出區域性最優值來找全域性最優值。這種方式叫做帶重啟的隨機梯度下降

**keras版本:[
cnn中將乙個大尺寸的卷積核分解成多層的小尺寸的卷積核或者分解成多層的一維卷積,這樣能夠減少引數並增加非線性。

cnn中的網路設計應該逐漸減少影象尺寸,同時增加通道數,讓空間資訊轉化為高階抽象的特徵資訊。

資料擴充,又名資料增強。其目的是在缺少海量資料時,為了保證模型的有效訓練,從原始資料中生成更多的資料出來。

資料擴充方法包括:

1、翻轉包括水平翻轉、垂直翻轉、水平垂直翻轉。

2、旋轉是常取的角度為-30、-15、15、30度等。

3、尺度變換是指將影象解析度變為原圖的0.8、1.1、1.2倍等,生成新圖。

4、摳取包括隨機摳取和監督式摳取。隨機摳取在原圖的隨機位置摳取影象塊作為新影象;監督式摳取只摳取含有明顯語義資訊的影象塊。

5、色彩抖動是對原有的畫素值分布進行輕微擾動,即加入輕微的雜訊作為新影象。

6、fancy pca對所有訓練資料的畫素值進行主成分分析,根據得到的特徵值和特徵向量計算一組隨機值,作為擾動加入到原來畫素值中。

預訓練模型(pre-trained model)是前人為了解決某個問題所創造出來的問題。在解決新的問題時,不需要從零開始訓練乙個新模型,可以從類似問題中訓練過的模型入手,在原有模型的基礎上進行微調繼續訓練。該方法不僅在時間上或者準確率上都有較好的效果。

深度學習中權重初始化對模型收斂速度和模型質量有著重要的影響。引數在剛開始不能全都初始化為0,因為如果所有的引數都是0,那麼所有神經元的輸出都將是相同的,在反向傳播時同一層內所有的神經元的行為也都一致。

啟用函式

啟用函式的主要作用是提供網路的非線性建模能力。如果沒有啟用函式,那麼不管網路有多少層都僅能夠表達線性對映。啟用函式應具有如下性質:

1、可微性:當優化方法是基於梯度的時候,這個性質是必須的;

2、單調性:當啟用函式是單調函式的時候,單層網路能夠保證是凸函式;

3、輸出值的範圍:當啟用函式輸出值是有限的時候,基於梯度的優化方法會更加穩定。

常見的啟用函式有sigmoid, tanh, relu, leaky-relu

避免過擬合的方法之一是增加訓練資料數量,或者減小網路的規模。但是往往大型的網路比小型網路有更大的潛力。在使用固定的網路和固定的訓練資料進行網路訓練時,為了避免過擬合,提高模型的泛化能力,可以採用正則化的方法。

l2 regularization(權重衰減)

l1 regularization

深度學習小trick收集

首先,梯度消失與梯度 的根本原因是基於bp的反向傳播演算法 且上述的反向傳播錯誤小於1 4 總的來說就是,更新w和b的時候,更新的步長與learningrate成正比,當所處的層數越淺,每層的w的值和反向傳播錯誤的值乘的愈多,導致w和b更新的步長收到很大影響,最終導致梯度 或者梯度消失。這時候深度網...

深度學習之訓練trick

1 google研究員ilya sutskever 成功訓練ldnn的13點建議 本文由ilya sutskever google研究員 深度學習泰斗geoffrey hinton的學生 dnnresearch聯合創始人 所寫,講述了有關深度學習的見解及實用建議,包括深度學習為什麼強大,如何強大,以...

深度學習模型訓練小技巧

這篇文章主要介紹一些在深度學習模型訓練時的一些小技巧。warmup可以理解為預熱 熱身的意思,它的思想是一開始以較小的學習率去更新引數,然後逐步提高學習率。這樣的好處是 有助於減緩模型在初始階段對mini batch的提前過擬合現象,保持分布的平穩 有助於保持模型深層的穩定性。線性warmup nu...