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