1. 程式人生 > 其它 >深度學習聽課 | 梯度下降和反向傳播 | 03

深度學習聽課 | 梯度下降和反向傳播 | 03

目錄

梯度是什麼

梯度: 是一個向量, 導數+變化最快的方向(學習的前進方向)
回顧機器學習
收集資料\(x\),構建機器學習\(f\),得到\(f(x,w)=Y_{predict}\)

在有\(x\)\(y\)的情況下(測試資料集),我們是沒有辦法找到\(w\)的,那麼我們就要有一個損失函式,把尋找\(w\)的過程轉換為尋找損失函式最小值的過程.

判斷模型好壞的方法

目標: 通過調整(學習)引數\(w\),儘可能的降低\(loss\),那麼我們該如何調整\(w\)

呢?


如上圖,一開始我們會隨機選擇一個\(w_0\)作為起始點,然後目標\(w\)如圖所示,讓\(loss=f(w)\)取到最小值

可以取一個很小的值來製造一個小區間,來進行導數的求解,這裡取\(0.00001\).
下面是更新\(w\)的方法:

其中:
(1) 如果\(▽w<0\),意味著\(w\)將增大
(1) 如果\(▽w>0\),意味著\(w\)將減小

總結: 梯度就是多元函式引數的變化趨勢(引數的學習方向).

偏導的計算

常見的導數計算

如何求解\(f(x)=(1+e^{-x})^{-1}\)
使用鏈式求導法則
\(f(a)=a^{-1}\) ==> \(-a^{-2}\)


\(a(b)=1+b\) ==> \(1\)
\(b(c)=e^c\) ==> \(e^c\)
\(c(x)=-x\) ==> \(-1\)
最後\(f(a)*a(b)*b(c)*c(x)=a^{-2}e^{-x}=(1+e^{-x})^{-2}e^{-x})\)

多元函式求偏導

一元函式,即有一個自變數.類似\(f(x)\)
多元函式,即有多個自變數,類似\(f(x,y,z)\),有三個自變數.
多元函式求偏導過程中: 對某一個自變數求導,把其他自變數當做常量.

練習: 已知\(J(a,b,c)=3(a+bc)\),令\(u=a+v\),\(v=bc\),求\(a,b,c\)

各自的偏導數

反向傳播演算法

計算圖和反向傳播

計算圖: 通過圖的方式來描述函式的圖形
在上面的練習中,J(a,b,c)=3(a+bc),令u=a+v,v=bc,把它繪製成計算圖可以表示為

繪製成計算圖之後,可以清楚的看到向前計算的過程.

之後,對每個節點求偏導,有

那麼反向傳播的過程就是一個上圖的從右往左的過程,自變數\(a,b,c\)各自的偏導就是連線上的梯度的乘積.

神經網路中的反向傳播

神經網路的示意圖

\(w_1,w_2,....w_n\)表示網路第n層權重
\(w_n[i,j]\)表示第n層第i個神經元,連線到第n+1層第j個神經元的權重。

神經網路的計算圖

反向傳播就是從後往前計算每一層的梯度,直到計算到第一層.

小結

1. 如何理解梯度? 
梯度是一個向量: 導數+變化率最快的方向

2. 損失函式的作用是什麼? 
作用: 幫助尋找合適的權重w
對於 y=f(wx+b), y和x是已知的,但是w是不知道的.
所以現在需要一個損失函式,把尋找合適的w轉化為尋找損失函式最小值的過程.

3. 什麼是計算圖?計算圖如何求偏導? 
計算圖: 以圖的形式表示函式的圖形
畫出J(a,b,c)=3(a+bc),令u=a+bc,v=bc 的計算圖
從右往左依次把連線上的偏導進行相乘.

4. 什麼是反向傳播? 
反向傳播就是計算圖從右往左的計算過程. 
從右往左其實就是一個求自變數偏導的一個過程,求偏導就是為了得到自變數的梯度,然後不斷去更新梯度,去逼近結果. 

5. BP演算法大理解!
首先清楚什麼是計算圖
正向傳播,就是從第一層輸入,然後一次推到最後一層
權重一開始的輸入可以是隨機值,沒有關係的。 有一個叫做損失函式的東西,可以給出最終結果的梯度。
那麼就開始反向傳播了,也就是輸入的值是最終結果的梯度,然後如何得到之前每一層的梯度呢? 就是鏈式求導法則,這樣可以一層一層的向前求出每一層每一個節點的梯度。

最後一個問題,求梯度幹什麼?
就是為了更新w的值,w=w-lr*grad , b=b-lr*grad