神經網路的調參效果不理想時 解決思路

2022-08-24 13:00:17 字數 1605 閱讀 5408

github部落格傳送門

csdn部落格傳送門

是否找到合適的損失函式?(不同問題適合不同的損失函式)(理解不同損失函式的適用場景)

(解決思路)選擇合適的損失函式(choosing proper loss )

神經網路的損失函式是非凸的,有多個區域性最低點,目標是找到乙個可用的最低點。非凸函式是凹凸不平的,但是不同的損失函式凹凸起伏的程度不同,例如下述的平方損失和交叉熵損失,後者起伏更大,且後者更容易找到乙個可用的最低點,從而達到優化的目的。

-. square error(平方損失)

-. cross entropy(交叉熵損失)

batch size是否合適?batch size太大 -> loss很快平穩,batch size太小 -> loss會**(理解mini-batch)

(解決思路)採用合適的mini-batch進行學習,使用mini-batch的方法進行學習,一方面可以減少計算量,一方面有助於跳出區域性最優點。因此要使用mini-batch。更進一步,batch的選擇非常重要,batch取太大會陷入區域性最小值,batch取太小會抖動厲害

是否選擇了合適的啟用函式?(各個啟用函式的**和差異)

(解決思路)使用啟用函式把卷積層輸出結果做非線性對映,但是要選擇合適的啟用函式。

-. sigmoid函式是乙個平滑函式,且具有連續性和可微性,它的最大優點就是非線性。但該函式的兩端很緩,會帶來豬隊友的問題,易發生學不動的情況,產生梯度瀰散。

-. relu函式是如今設計神經網路時使用最廣泛的啟用函式,該函式為非線性對映,且簡單,可緩解梯度瀰散。

學習率,學習率小收斂慢,學習率大loss**(怎麼選取合適的學習率)

(解決思路)學習率過大,會抖動厲害,導致沒有優化提 , 學習率太小,下降太慢,訓練會很慢

是否選擇了合適的優化演算法?(比如adam)(理解不同優化演算法的適用場景)

(解決思路)在梯度的基礎上使用動量,有助於衝出區域性最低點。

early stopping(早停法)

(詳細解釋)早停法將資料分成訓練集和驗證集,訓練集用來計算梯度、更新權重和閾值,驗證集用來估計誤差,若訓練集誤差降低但驗證集誤差公升高,則停止訓練,同時返回具有最小驗證集誤差的連線權和閾值。

regularization(正則化)

(詳細解釋) 權重衰減(weight decay)。到訓練的後期,通過衰減因子使權重的梯度下降地越來越緩。

*. batch normalization

*. dropout

*. l1 , l2

調整網路結構

print_r('點個贊吧');

var_dump('點個贊吧');

nslog(@"點個贊吧!")

system.out.println("點個贊吧!");

console.log("點個贊吧!");

print("點個贊吧!");

printf("點個贊吧!\n");

cout << "點個贊吧!" << endl;

console.writeline("點個贊吧!");

fmt.println("點個贊吧!")

response.write("點個贊吧");

alert(』點個贊吧』)

神經網路調參

神經網路的一些調參方法小結 1 網格搜尋法 網格搜尋就是將多個引數進行笛卡爾乘積後逐個試驗,很費時間。sklearn庫有gridsearchcv函式,結合了交叉驗證,我還沒在神經網路上應用過。2 逐個調參 用列舉的方法逐個引數調優,乙個引數取最佳值後固定住再進行下乙個引數調優,比網格搜尋快一些。不過...

關於神經網路的調參經驗技巧和調參順序

二 調參順序 三 一句總結 一 模型方面基本上都做得非常好了,因此真正需要調的引數其實並不多了,或者說調很多引數實際帶來的提公升都非常小了。二 在訓練乙個深度學習模型的過程中,超引數選擇什麼最優,這是乙個基於實驗和經驗的過程。需要不停的嘗試,直到找到合適的引數值。調參就是trial and erro...

卷積神經網路的調參技巧1

方法 一 更多的優化演算法 二 啟用函式 三 網路的初始化 四 批歸一化 五 資料增強 六 採用更多的調參技巧 1 隨機梯度下降 問題 1.區域性極值 2.鞍點saddle point問題 動量梯度下降可以在一定程度上緩解以上的問題 此外的問題是 1.受到學習率的影響 導致梯度 不收斂 2.每乙個維...