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