傾向於「一定範圍內」。
1、在神經元數量相同的情況下,更深的網路結構具有較大的容量,劃分組合增加了指數級的表達空間,能夠組合更多不同型別的子結構。也就意味著更容易學習和表達各種特徵。
2、隱藏層的增加則意味著由啟用函式帶來的非線性變換的巢狀層數更多,可以構造更複雜的對映關係。
超引數:超引數就是在學習過程之前設定的一組值,而不是通過訓練得到的引數。
超引數通常存在於:
定義關於模型的更高層次的概念,如複雜性或學習能力。
不能直接從標準模型學習過程中的資料中學習,需要預先定義。
可以通過設定不同的值,訓練不同的模型和選擇更好的測試值來決定
這些引數需要人為設定,設定的值對結果產生影響。常見設定超引數的方法。在使用機器學習演算法時,總有一些難調的超引數。例如權重衰減大小,高斯核寬度等等。有:
猜測:根據直覺或經驗
網格搜尋:讓計算機嘗試在一定範圍內均勻分布的乙個值
隨機搜尋:隨機選擇乙個值,
貝葉斯優化:使用貝葉斯優化超引數,但貝葉斯優化演算法本身也會遇到超引數設定的困難。
將資料集劃分成訓練集,驗證集及測試集。
在訓練集上根據模型的效能指標對模型引數進行優化
在驗證集上根據模型的效能指標對模型的超引數進行搜尋。
步驟2和步驟3交替交替,最終確定模型的引數和超引數,在測試集中驗證評價模型的優劣。
為了後面資料處理的方便,歸一化的確可以避免一些不必要的數值問題
為了程式執行時收斂加快,尤其時機器學習模型使用梯度下降法求解最優值時
同一量綱。樣本資料的評價標準不一樣,需要對其量綱化,統一評價標準。這算是應用層面的需求。
避免神經元飽和。啥意思?就是當神經元的啟用在接近 0 或者 1 時會飽和,在這些區域,梯度幾乎為
0,這樣,在反向傳播過程中,區域性梯度就會接近 0,這會有效地「殺死」梯度
保證輸出資料中數值小的不被吞食
深度學習存在以下問題:
網路越深,需要的訓練樣本數越多。若用監督則需要大量的標註樣本,否則小規模樣本容易過擬合。
多層神經網路引數優化是乙個高階非凸優化問題,經常只能得到收斂較差的區域性解。
梯度消失問題。
無監督預訓練可以緩解或者說解決這些問題,無監督預訓練的思想結合兩種不同的想法:
1、深度神經網路初始化引數的選擇可以對模型有顯著正則化的效果。
2、學習輸入的分布有助於學習輸入到輸出的對映。
、貪婪逐層無監督預訓練:即訓練網路的第乙個隱藏層,再訓練第二個…最後用這些訓練好的網路引數值作為整體網路引數的初始值。
一些結果證明,經過預訓練最終可以得到比較好的區域性最優解。
用別人的引數、修改後的網路和自己的資料進行訓練,使得引數適應自己的資料,這樣乙個過程,通常稱之為微調(fine tuning)。
模型微調和直接訓練的區別在於,模型微調相當於在之前網路的基礎上繼續訓練,初始化引數是已有的引數檔案來初始化。
直接訓練是按照定義指定的方式初始化。
狀態一:只**,不訓練。 特點:相對快、簡單,針對那些已經訓練好,現在要實際對未知資料進行標註的專案,非常高效;
狀態二:訓練,但只訓練最後分類層。 特點:fine-tuning的模型最終的分類以及符合要求,現在只是在他們的基礎上進行類別降維。
狀態三:完全訓練,分類層+之前卷積層都訓練 特點:跟狀態二的差異很小,當然狀態三比較耗時和需要訓練gpu資源,不過非常適合fine-tuning到自己想要的模型裡面,**精度相比狀態二也提高不少。
深度學習中常見問題
1.cai之前遇到乙個事情就是 無論輸入的是什麼,結果都是一樣的,並且同乙個生成的多個框的類別也都是一樣的 錯誤原因 test的網路沒有進行caffemodel的初始化 之前在實驗室跑deeplab 也出現過類似問題,因為test的prototxt中有一層的名字和caffemodel中的不一樣,導致...
百面機器學習 深度學習常見問題
一 前向神經網路 1 寫出常用啟用函式 2 神經網路是否可將引數全部初始化為0?3 多層感知機表示異或邏輯需要多少個隱層?4 什麼是梯度消失和梯度 如何避免?5 寫出多層感知機的平方誤差和交叉熵的損失函式 6 解釋卷積操作中的稀疏互動和引數共享及其作用 7 乙個隱層需要多少隱節點才能夠實現包含n元輸...
深度學習中的常見問題彙總(一)
在深度學習基礎網路不斷進化的過程中,可以發現新的模型不僅效能有極大地提公升,網路的複雜度通常也會更低。深度學習網路模型的複雜度直接關係到其實際應用中的速度與可行性,因此這裡總結一下 cnn 複雜度的含義與計算方式。通常,我們假設計算機執行一行基礎 需要一次運算,那麼模型的時間複雜度即為模型的運算次數...