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