深度学习(神经网络)
文章目錄
- 神經(jīng)網(wǎng)絡(luò)歷史
- 形式神經(jīng)元模型(M-P模型)
- 感知器
- 多層感知器
- 誤差反向傳播算法
- 誤差函數(shù)和激活函數(shù)
- 誤差函數(shù)
- 二次代價(jià)函數(shù)
- 交叉熵代價(jià)函數(shù)
- 激活函數(shù)
- sigmoid函數(shù)
- RELU函數(shù)
- 似然函數(shù)
- softmax函數(shù)
- 隨機(jī)梯度下降法
- 批量學(xué)習(xí)方法
- 在線學(xué)習(xí)
- 小批量梯度下降法
- 學(xué)習(xí)率
- 自適應(yīng)調(diào)整學(xué)習(xí)率---AdaGrad方法
神經(jīng)網(wǎng)絡(luò)歷史
- 提出形式神經(jīng)元模型(M-P模型)(1943)
- 提出感知器(1958)
- 感知器無法解決線性不可分問題(1969)
- 提出神經(jīng)認(rèn)知機(jī)(1980)
- 提出霍普菲爾德模型(1982)
- 提出誤差反向傳播算法(1986)
- 提出卷積神經(jīng)網(wǎng)絡(luò)(1989)
- 提出將 預(yù)訓(xùn)練和自編碼器 與 深度神經(jīng)網(wǎng)絡(luò) 相結(jié)合(2006)
- 提出在卷積神經(jīng)網(wǎng)絡(luò)中引入ReLU作為激活函數(shù)(2012)
形式神經(jīng)元模型(M-P模型)
- 多個(gè)輸入結(jié)點(diǎn) x i x_i xi? 對應(yīng)一個(gè)輸出結(jié)點(diǎn)
- 每個(gè)輸入結(jié)點(diǎn)乘以連接權(quán)重 w i w_i wi?,相加得到 y y y
- y大于閾值h,輸出1,否則輸出0。
感知器
感知器能夠通過訓(xùn)練自動(dòng)確定參數(shù)
引入誤差修正學(xué)習(xí):根據(jù)實(shí)際輸出與期望輸出的差值調(diào)整權(quán)重 w i w_i wi? 和閾值 h h h。
多層感知器
由 多層結(jié)構(gòu)的感知器 遞階組成 輸入值向前傳播的網(wǎng)絡(luò)。(前饋網(wǎng)絡(luò)、正向傳播網(wǎng)絡(luò))
通常采用三層結(jié)構(gòu):輸入層,中間層,輸出層。
誤差反向傳播算法
通過比較實(shí)際輸出和期望輸出得到的誤差信號(hào),把誤差信號(hào)從輸出層逐層向前傳播得到各層的誤差信號(hào),再通過調(diào)整各層的連接權(quán)重以減小誤差。
通過實(shí)際輸出和期望輸出之間的誤差 E E E 和梯度進(jìn)行調(diào)整。
例:
y 1 = w 1 x + 1 , w 1 = 2 y 2 = w 2 y 1 2 , w 2 = 1 ; y_1 = w_1x + 1,w_1 = 2\\ y_2 = w_2y_1^2,w_2 = 1; y1?=w1?x+1,w1?=2y2?=w2?y12?,w2?=1;
現(xiàn)輸入 x = 1 x = 1 x=1 ,期望輸出 y 2 = 3 y_2 = 3 y2?=3
代入求得: y 1 = 2 ? 1 + 1 = 3 y_1 = 2 * 1 + 1 = 3 y1?=2?1+1=3, y 2 = 1 ? 3 2 = 10 y_2 = 1 * 3^2 = 10 y2?=1?32=10
誤差 E E E:與期望值相差 3 ? 10 = ? 7 3-10 = -7 3?10=?7
誤差反向傳播的梯度:
? y 2 ? w 2 = y 1 2 = 9 ? y 2 ? w 1 = ? ( w 1 x + 1 ) 2 ? w 1 = 2 x 2 w 1 + 2 x = 6 或 = ? y 2 ? y 1 ? y 1 ? w 1 = 2 w 2 y 1 ? x = 6 \frac{\partial y_2}{\partial w_2} = y_1^2 = 9 \\ \quad\\ \frac{\partial y_2}{\partial w_1} = \frac{\partial (w_1x+1)^2}{\partial w_1} = 2x^2w_1 + 2x = 6\\ 或\\ =\frac{\partial y_2}{\partial y_1}\frac{\partial y_1}{\partial w_1} = 2w_2y_1 * x= 6 ?w2??y2??=y12?=9?w1??y2??=?w1??(w1?x+1)2?=2x2w1?+2x=6或=?y1??y2???w1??y1??=2w2?y1??x=6
梯度的意義:
? y ? w :當(dāng) w = w + △ w ,則 y = y + ? y ? w △ w \frac{\partial y}{\partial w}:當(dāng)w = w + \bigtriangleup w,則y = y + \frac{\partial y}{\partial w}\bigtriangleup w ?w?y?:當(dāng)w=w+△w,則y=y+?w?y?△w
已知:
誤差為 ? 7 ,梯度 ? y 2 ? w 2 = 9 , ? y 2 ? w 1 = 6 誤差為-7,梯度 \frac{\partial y_2}{\partial w_2} = 9,\frac{\partial y_2}{\partial w_1} =6 誤差為?7,梯度?w2??y2??=9,?w1??y2??=6
故可修改( η 表示學(xué)習(xí)率,設(shè) η = 1 \eta 表示學(xué)習(xí)率,設(shè)\eta =1 η表示學(xué)習(xí)率,設(shè)η=1 )
w 1 = w 1 + η E ? y 2 ? w 1 = 2 + 1 ? ( ? 7 ) / 6 = 2 ? 7 / 6 = 5 / 6 w 2 = w 2 + η E ? y 2 ? w 2 = 1 + 1 ? ( ? 7 ) / 9 = 1 ? 7 / 9 = 2 / 9 w_1 = w_1 + \frac{\eta E}{\frac{\partial y_2}{\partial w_1} } = 2 + 1*(-7)/6 = 2 - 7/6= 5/6\\ \quad\\ w_2 = w_2 + \frac{\eta E}{\frac{\partial y_2}{\partial w_2} } = 1 + 1 * (-7)/9 = 1-7/9 = 2/9 w1?=w1?+?w1??y2??ηE?=2+1?(?7)/6=2?7/6=5/6w2?=w2?+?w2??y2??ηE?=1+1?(?7)/9=1?7/9=2/9
w 1 , w 2 已被調(diào)整為新值, w 1 = 5 6 , w 2 = 2 9 w_1,w_2已被調(diào)整為新值,w_1 = \frac{5}{6},w_2=\frac{2}{9} w1?,w2?已被調(diào)整為新值,w1?=65?,w2?=92?
將此值帶入原式計(jì)算,
y 1 = 11 6 , y 2 = 121 162 y_1 = \frac{11}{6} , y_2 = \frac{121}{162} y1?=611?,y2?=162121?
可看到, y 2 y_2 y2?從原先的 10 10 10 被調(diào)整到了 121 / 162 121/162 121/162,可以看到,通過誤差反向傳播確實(shí)可以修正權(quán)值 w 1 , w 2 w_1,w_2 w1?,w2?。
但是過大的學(xué)習(xí)率會(huì)導(dǎo)致結(jié)果過擬合,如上,我們需要最后值為3,但修改后的值甚至小于了1。因此調(diào)整合適的學(xué)習(xí)率 η \eta η是必須的。
誤差函數(shù)和激活函數(shù)
【機(jī)器學(xué)習(xí)基礎(chǔ)】2、代價(jià)函數(shù)\損失函數(shù)匯總
誤差函數(shù)
用于計(jì)算誤差值 E E E
引自:https://www.cnblogs.com/go-ahead-wsg/p/12346744.html
二次代價(jià)函數(shù)
C = 1 2 n ∑ x 1 , … x n ∥ y ( x ) ? a L ( x ) ∥ 2 C=\frac{1}{2 n} \sum_{x_{1}, \ldots x_{n}}\left\|y(x)-a^{L}(x)\right\|^{2} C=2n1?x1?,…xn?∑? ?y(x)?aL(x) ?2
- C表示代價(jià)函數(shù)
- x表示樣本
- y表示實(shí)際值
- a表示輸出值
- n表示樣本的總數(shù);
其中 a = σ ( z ) , z = ∑ w j ? x j + b a=\sigma(z), z=\sum w_j*x_j +b a=σ(z),z=∑wj??xj?+b
- a代表激活函數(shù)的輸出值
- σ代表sigmoid函數(shù)
? C ? w = ( a ? y ) σ ′ ( z ) x ? C ? b = ( a ? y ) σ ′ ( z ) \frac {\partial C} {\partial w} = (a-y)\sigma' (z)x \\\quad\\ \frac {\partial C} {\partial b} = (a-y)\sigma' (z) ?w?C?=(a?y)σ′(z)x?b?C?=(a?y)σ′(z)
注:由于反向誤差梯度與sigmoid函數(shù)的導(dǎo)數(shù)有關(guān),而sigmoid函數(shù)的導(dǎo)數(shù)會(huì)在值較大時(shí)有較小的倒數(shù),故會(huì)導(dǎo)致權(quán)值調(diào)整較小。
如下圖所示:
因此引入交叉熵代價(jià)函數(shù)
交叉熵代價(jià)函數(shù)
交叉熵代價(jià)函數(shù)(Cross-entropy cost function)是用來衡量人工神經(jīng)網(wǎng)絡(luò)(ANN)的預(yù)測值與實(shí)際值的一種方式。與二次代價(jià)函數(shù)相比,它能更有效地促進(jìn)ANN的訓(xùn)練。
C = ? 1 n ∑ x 1 , x n [ y ln ? a + ( 1 ? y ) ln ? ( 1 ? a ) ] C=-\frac{1}{n} \sum_{x_{1}, x_{n}}[y \ln a+(1-y) \ln (1-a)] C=?n1?x1?,xn?∑?[ylna+(1?y)ln(1?a)]
- C表示代價(jià)函數(shù)
- x表示樣本
- y表示實(shí)際值
- a表示輸出值
- n表示樣本的總數(shù);
a = σ ( z ) , z = ∑ w j ? x j + b σ ′ ( z ) = σ ( z ) ( 1 ? σ ( x ) ) a=\sigma(z), z=\sum w_j*x_j +b\\ \quad\\ \sigma'(z) = \sigma(z)(1-\sigma (x)) a=σ(z),z=∑wj??xj?+bσ′(z)=σ(z)(1?σ(x))
梯度求解
? C ? w j = ? 1 n ∑ x ( y σ ( z ) ? ( 1 ? y ) 1 ? σ ( z ) ) ? σ ? w j = ? 1 n ∑ x ( y σ ( z ) ? ( 1 ? y ) 1 ? σ ( z ) ) σ ′ ( z ) x j = 1 n ∑ x σ ′ ( z ) x j σ ( z ) ( 1 ? σ ( z ) ) ( σ ( z ) ? y ) = 1 n ∑ x x j ( σ ( z ) ? y ) ? C ? b = 1 n ∑ x ( σ ( z ) ? y ) \begin{aligned} \frac{\partial C}{\partial w_{j}} & =-\frac{1}{n} \sum_{x}\left(\frac{y}{\sigma(z)}-\frac{(1-y)}{1-\sigma(z)}\right) \frac{\partial \sigma}{\partial w_{j}} \\ & =-\frac{1}{n} \sum_{x}\left(\frac{y}{\sigma(z)}-\frac{(1-y)}{1-\sigma(z)}\right) \sigma^{\prime}(z) x_{j} \\ & =\frac{1}{n} \sum_{x} \frac{\sigma^{\prime}(z) x_{j}}{\sigma(z)(1-\sigma(z))}(\sigma(z)-y) \\ & =\frac{1}{n} \sum_{x} x_{j}(\sigma(z)-y) \\ \frac{\partial C}{\partial b} & =\frac{1}{n} \sum_{x}(\sigma(z)-y) \end{aligned} ?wj??C??b?C??=?n1?x∑?(σ(z)y??1?σ(z)(1?y)?)?wj??σ?=?n1?x∑?(σ(z)y??1?σ(z)(1?y)?)σ′(z)xj?=n1?x∑?σ(z)(1?σ(z))σ′(z)xj??(σ(z)?y)=n1?x∑?xj?(σ(z)?y)=n1?x∑?(σ(z)?y)?
可以看出:權(quán)值 w w w 和偏執(zhí)值 b b b 的調(diào)整與 σ ′ ( z ) σ′(z) σ′(z) 無關(guān),另外,梯度公式中的 σ ( z ) ? y σ(z)?y σ(z)?y
表示輸出值與實(shí)際值放入誤差。所以當(dāng)誤差越大時(shí),梯度就越大,參數(shù)w和b的調(diào)整就越快,訓(xùn)練的速度也就越快。
總結(jié):當(dāng)輸出神經(jīng)元是線性的,那么二次代價(jià)函數(shù)就是一種合適的選擇。如果輸出神經(jīng)元是S型函數(shù),那么比較適合交叉墑代價(jià)函數(shù)。
激活函數(shù)
激活函數(shù)類似于人類神經(jīng)元,對輸入信號(hào)進(jìn)行線性或非線性變換。
- M-P模型中使用step函數(shù)作為激活函數(shù)
- 多層感知器中使用sigmoid函數(shù),或tanh函數(shù)(雙曲正切函數(shù))
- 最近幾年在深度學(xué)習(xí)中,修正線性單元(Rectified Linear Unit,ReLU)
sigmoid函數(shù)
f ( u ) = 1 1 + e ? u u = ∑ i = 1 n w i x i f(u) = \frac{1}{1+e^{-u}} \\\quad\\ u = \sum_{i=1}^nw_ix_i f(u)=1+e?u1?u=i=1∑n?wi?xi?
偏導(dǎo)數(shù):
? f ( u ) ? u = f ( u ) ( 1 ? f ( u ) ) \frac{\partial f(u)}{\partial u} = f(u)(1-f(u)) ?u?f(u)?=f(u)(1?f(u))
RELU函數(shù)
f ( u ) = m a x ( 0 , u ) ? f ( u ) ? u = 1 f(u) = max(0,u)\\ \quad\\ \frac{\partial f(u)}{\partial u} = 1 f(u)=max(0,u)?u?f(u)?=1
似然函數(shù)
似然函數(shù)用于計(jì)算多層感知器的輸出結(jié)果,通常以softmax函數(shù)作為似然函數(shù)。
softmax函數(shù)
p ( y k ) = e x p ( u 2 k ) ∑ q = 1 Q e x p ( u 2 q ) p(y^k) = \frac{exp(u_{2k})}{\sum_{q=1}^Q exp(u_{2q})} p(yk)=∑q=1Q?exp(u2q?)exp(u2k?)?
softmax函數(shù)的分母是對輸出層所有單元(q = 1,······,Q)的激活函數(shù)值的求和,起到歸一化的作用。
隨機(jī)梯度下降法
使用部分訓(xùn)練樣本進(jìn)行迭代計(jì)算,這種方法叫做隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD),與之相對的是批量學(xué)習(xí)方法。
批量學(xué)習(xí)方法
計(jì)算時(shí)遍歷全部訓(xùn)練樣本,設(shè)第 t t t 次迭代各訓(xùn)練樣本誤差為 E n t E_n^t Ent? ,通過所有誤差項(xiàng)計(jì)算全部訓(xùn)練樣本誤差:
E = ∑ n = 1 n E n E = \sum_{n=1}^n E_n E=n=1∑n?En?
基于全部訓(xùn)練樣本得到權(quán)重權(quán)重調(diào)整值并修正網(wǎng)絡(luò)連接權(quán)重
w = w ? η ? E ? w w = w - \eta \frac{\partial E}{\partial w} w=w?η?w?E?
然后使用調(diào)整后的連接權(quán)重測試全部訓(xùn)練樣本,如此反復(fù)迭代計(jì)算權(quán)重調(diào)整并修正網(wǎng)絡(luò)。
- 優(yōu)點(diǎn):能有效抑制訓(xùn)練集內(nèi)帶噪聲的樣本所導(dǎo)致的輸入模式劇烈變動(dòng)
- 缺點(diǎn):每次調(diào)整連接權(quán)值,所有樣本都要參與訓(xùn)練,所有訓(xùn)練時(shí)間長
在線學(xué)習(xí)
逐個(gè)輸入訓(xùn)練樣本
由于在線學(xué)習(xí)每次迭代計(jì)算一個(gè)訓(xùn)練樣本,所以訓(xùn)練樣本的差異會(huì)導(dǎo)致結(jié)果出現(xiàn)大幅變動(dòng)。
迭代結(jié)果的變動(dòng)可能導(dǎo)致訓(xùn)練無法收斂。
小批量梯度下降法
介于在線學(xué)習(xí)和批量學(xué)習(xí)之間,將訓(xùn)練集分成幾個(gè)子集D,每次迭代使用一個(gè)子集。
小批量下降法能夠縮短單次訓(xùn)練時(shí)間,又能降低迭代結(jié)果的變動(dòng)。
由于隨機(jī)梯度下降法只使用部分訓(xùn)練樣本,每次迭代后樣本集的趨勢都會(huì)發(fā)生變化,所以減少了迭代結(jié)果陷入局部最優(yōu)解的情況。
學(xué)習(xí)率
用來確定權(quán)重連接調(diào)整的系數(shù)。
如果學(xué)習(xí)率過大,則有可能修正過頭
如果學(xué)習(xí)率較小,收斂速度會(huì)很慢。
自適應(yīng)調(diào)整學(xué)習(xí)率—AdaGrad方法
用學(xué)習(xí)率除以截至當(dāng)前時(shí)刻 t t t 的梯度 ▽ E \bigtriangledown E ▽E 的累計(jì)值,得到神經(jīng)網(wǎng)絡(luò)的連接權(quán)重 w w w.
w = w ? η ▽ E ( t ) ∑ i = 1 t ( ▽ E ( i ) ) 2 + ε w = w - \eta\frac{\bigtriangledown E^{(t)}}{\sqrt{ \sum_{i=1}^t(\bigtriangledown E^{(i)})^2 +}\varepsilon } w=w?η∑i=1t?(▽E(i))2+?ε▽E(t)?
總結(jié)
以上是生活随笔為你收集整理的深度学习(神经网络)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux如何在文件中写命令,Linux
- 下一篇: [深度学习论文笔记][Visualizi