深度學習(二)BP求解過程和梯度下降


一、原理

重點:明白偏導數含義,是該函數在該點的切線,就是變化率,一定要理解變化率。

1)什么是梯度

梯度本意是一個向量(矢量),當某一函數在某點處沿着該方向的方向導數取得該點處的最大值,即函數在該點處沿方向變化最快,變化率最大(為該梯度的)。

 

2)代價函數有哪些

0-1損失函數(0-1 loss function):

 L(Y,f(X))={1,0,Y≠f(X)Y=f(X)

平方損失函數(quadratic loss function)

L(Y,f(X))=(Y−f(X))2

絕對損失函數(absolute loss function)

L(Y,f(X))=|Y−f(X)|

對數損失函數(logarithmic loss function) 或對數似然損失函數(log-likelihood loss function)

L(Y,P(Y|X))=−logP(Y|X)

 

3)為什么需要代價函數(損失函數)

a: 學自動化的時候,我們要求系統是收斂的,穩定的。對於模型,輸入x,產生的輸出y,希望能最接近期望的Y,如果y不能等於Y時,我們希望知道模型離期望的Y有多遠,所以我們需要定義一個cost function以衡量模型的好壞。既然是付出代價,我們希望付出的代價最小,因為輸入的x是逐步添加的,我們不可能一步到位,那么選擇下降最快的方向,盡快達到最低,使得系統穩定。這就是我們需要梯度的原因。(更新權值即為更新這個函數的斜率(切線的斜率,該函數的變化快慢),在這個代價函數中,這個是以權值為參數的函數,我們要做的就是找到最小誤差時,權值為多少)

梯度下降原理:將函數比作一座山,我們站在某個山坡上,往四周看,從哪個方向向下走一小步,能夠下降的最快;

 

 

b: 假如你現在有一個凸目標函數J(x)如下圖,你想要求它的最小值。 

這里寫圖片描述

假如你是在左邊那個點上面(畫出了切線和函數相交的那個點),你要往最小值的那個地方跑,你肯定不能夠往上面跑對吧。要是你高中學過物理的話,你就會知道,你必須完全把速度用到切線的方向上面你才能夠最快的到最小值。為什么呢?因為要是你的速度在其他的方向,最后算是你往下的速度只是你一開始速度的一個分量。那么肯定就沒有那么大的速度往最小值走了對吧。 

我們又知道,在一個點的切線方向就是導數的方向。你從上面的圖來看的話,在最小值點處的導數是0,然后最小值左邊的導數都小於0,最小值右邊的導數都大於0.(這里別問我為什么)。 

對於左邊那個點的橫坐標,是應該加上該點導數的值還是應該減去該點導數的值才能夠往最小值的橫坐標移動呢?如果x值要往右邊移動,需要加上一個正的數,又因為這里的導數是小於0的,那么就需要減去導數值。最終對於左邊這個點來說是要減去導數的值才能夠向最小值移動。 

對於右邊那個點,想去最小值那么x需要往左邊移動,因為該點的導數是大於0的,那么往左邊移動需要減去導數的值。那么還是需要減去導數的值

 

個人總結:

在我們確定了輸入了以后,這個代價函數就是以權值為參數的一個函數,我們要做的就是去尋找最小的誤差點,求最小就是要去找權值點,因為這是一個以權值為參數的函數,求導,導數的含義就是變化率,當我們求出導數的值為正數時,則說明這是這是一個上升的點,上升說明了這個函數的誤差率在變大,我們要往其反方向走(我們以增大的方向為正方向),怎么走,這個時候就要去找方向了,找哪個方向更快的下降,答案是切線的方向(如有不懂的地方,可以百度).當導數為負數時,則相反!

 

 

所以存在這樣的式子:

這個方向是個矢量,表示朝哪個方向走,而n(導數前面那個符號)表示步長,表示我朝這個方向走多長(步長由我們用戶自定義)。

 

求解過程

發現是不是都是關於E對w的求導。符號第一點的要求。

定義變量&4和&8

 

觀察上圖,我們發現權重wji僅能通過影響節點j的輸入值影響網絡的其它部分(前面只能影響后面),設netj是節點j的加權輸入。

 
鏈式求導
 
1)輸出層權值訓練
有:

 

 
 分別求解:
 
 則:
有:
得到輸出層的方程
 
 

2)隱藏層權值訓練

 
隱含層: 
3)結論:

 

當輸出層時:
 當隱含層時:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM