1. 程式人生 > 其它 >【cs231n】lecture 4 課程筆記

【cs231n】lecture 4 課程筆記

課程四 反向傳播和神經網路

key: 反向傳播 梯度 神經網路


Backpropagation 反向傳播

1.概述:使用高等數學中求偏導的鏈式法則,對由損失函式正向計算得到的結果(用計算圖表示),從後向前計算,求得損失函式中任一變數的梯度值;實為鏈式法則的遞迴呼叫;

2.為什麼是梯度(導數):梯度由導數計算而來,導數代表了某一點函式值的變化方向,想要使損失函式的最總結果變小,就需要清楚每一個引數(任一變數)的影響程度和變化程度;

3.計算圖:將表示式以節點和線段表示,如圖(可以給中間節點or結果以臨時名字,方便表示和計算)

4.舉例:較為複雜的函式(這裡都儘量把每個節點都分為兩個輸入,三個或多個也可以,只要符合表示式即可),注意在從前往後計算時,要把正向計算的複雜式子看作整體(求偏導時),只用其損失函式的結果值

5.一個技巧:在面對複雜公式時,若數學上可以進行簡化計算,可以應用

6.角色與功能:

  • 加法(add gate):梯度分發者,只傳遞,不改變梯度值
  • 取最大(max gate):梯度路由器,取到回傳的梯度值後只分給其中一個輸入支路
  • 乘法(mul gate):梯度轉換器(放縮器),會根據兩個(舉例)輸入分支的損失函式值相互影響(按比例放縮,此處比例是回傳的梯度值)

7.高維情況:高維時用向量和矩陣表示,求偏導的表示式被稱為Jacobian matrix(雅各比矩陣);此處的例子可以細看視訊講解;例子中的 L2 即求點積的模的平方

  • 第一步 畫計算圖
  • 第二步 正向計算
  • 第三步 反向傳播

8.實際應用:都有現成的模組化的API


神經網路

1.概述:如上 f = W * x ,f是輸出層,w是一層網路,x是輸入層,是線性的;兩層網路時,用一個取最大將兩層連起來,形成神經網路;三層如是

2.啟用函式:對應神經元的放電率

3.層數:通常是中間層(隱藏層) + 輸出層,如兩層神經網路or一隱藏層神經網路