深度學習干貨|基于Tensorflow深度神經(jīng)網(wǎng)絡(DNN)詳解
深度神經(jīng)網(wǎng)絡(Deep Neural Networks,簡稱DNN)是深度學習的基礎,想要學好深度學習,首先我們要理解DNN模型。
本文引用地址:http://www.ex-cimer.com/article/202207/435861.htmDNN的基本結(jié)構(gòu)
神經(jīng)網(wǎng)絡是基于感知機的擴展,而DNN可以理解為有很多隱藏層的神經(jīng)網(wǎng)絡。多層神經(jīng)網(wǎng)絡和深度神經(jīng)網(wǎng)絡DNN其實也基本一樣,DNN也叫做多層感知機(MLP)。
DNN按不同層的位置劃分,神經(jīng)網(wǎng)絡層可以分為三類,輸入層,隱藏層和輸出層,如下圖示例,一般來說第一層是輸入層,最后一層是輸出層,而中間的層數(shù)都是隱藏層。
層與層之間是全連接的,也就是說,第i層的任意一個神經(jīng)元一定與第i+1層的任意一個神經(jīng)元相連。雖然DNN看起來很復雜,但是從小的局部模型來說,它還是和感知機一樣,即一個線性關系加上一個激活函數(shù)。
訓練過程中包含前向傳播算法和后向傳播算法
DNN前向傳播算法
就是利用若干個權重系數(shù)矩陣W,偏倚向量b來和輸入值向量X進行一系列線性運算和激活運算,從輸入層開始,一層層地向后計算,一直到運算到輸出層,得到輸出結(jié)果為值。
DNN反向傳播算法
如果我們采用DNN的模型,即我們使輸入層n_in個神經(jīng)元,而輸出層有n_out個神經(jīng)元。再加上一些含有若干神經(jīng)元的隱藏層,此時需要找到合適的所有隱藏層和輸出層對應的線性系數(shù)矩陣W,偏倚向量b,讓所有的訓練樣本輸入計算出的輸出盡可能的等于或很接近樣本輸出,怎么找到合適的參數(shù)呢?
在進行DNN反向傳播算法前,我們需要選擇一個損失函數(shù),來度量訓練樣本計算出的輸出和真實的訓練樣本輸出之間的損失。接著對這個損失函數(shù)進行優(yōu)化求最小化的極值過程中,反向不斷對一系列線性系數(shù)矩陣W,偏倚向量b進行更新,直到達到我們的預期效果。
在DNN中,損失函數(shù)優(yōu)化極值求解的過程最常見的一般是通過梯度下降法來一步步迭代完成的,也可以是其他的迭代方法比如牛頓法與擬牛頓法。
深度學習過擬合問題
解決方法如下:
獲取更多數(shù)據(jù):從數(shù)據(jù)源獲得更多數(shù)據(jù),或數(shù)據(jù)增強;數(shù)據(jù)預處理:清洗數(shù)據(jù)、減少特征維度、類別平衡;增加噪聲:輸入時+權重上(高斯初始化);正則化:限制權重過大、網(wǎng)絡層數(shù)過多,避免模型過于復雜;多種模型結(jié)合:集成學習的思想;Dropout:隨機從網(wǎng)絡中去掉一部分隱神經(jīng)元;限制訓練時間、次數(shù),及早停止。核心代碼
評論