iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
AI & Data

30天搞懂機器學習是否搞錯了什麼系列 第 15

【Day 15】反向傳播(Backpropagation)

  • 分享至 

  • xImage
  •  
  • 比Gradient Descent更有效率的演算法

連鎖律(Chain Rule)

反向傳播(Backpropagation)

  • 計算Loss對某一項參數 https://chart.googleapis.com/chart?cht=tx&chl=w 的偏微分。

根據Chain Rule可以把 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%20%7B%5Cpartial%20C%7D%7B%5Cpartial%20w%7D 寫成 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20z%7D%7B%5Cpartial%20w%7D%20%5C%20%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z%7D,而計算 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20z%7D%7B%5Cpartial%20w%7D 的過程我們稱為正向傳遞(Forward pass),計算 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z%7D 的過程我們稱為反向傳遞(Backward pass)

正向傳遞(Forward pass)

  • 計算 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20z%7D%7B%5Cpartial%20w%7D

從計算結果可以發現,https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20z%7D%7B%5Cpartial%20w%7D 只要看 https://chart.googleapis.com/chart?cht=tx&chl=w 前面接的是什麼,https://chart.googleapis.com/chart?cht=tx&chl=w 的微分就是什麼。

要計算Neural Network裡面的每一個weight對它的Activation function的輸入 https://chart.googleapis.com/chart?cht=tx&chl=z 的偏微分,就只要把輸入丟進去,然後去計算每一個Neuron的輸出就可以了,這個步驟我們就稱之為正向傳遞(Forward pass)

反向傳遞(Backward pass)

  • 計算 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z%7D

假設Activation function是Sigmoid function,https://chart.googleapis.com/chart?cht=tx&chl=z 通過Sigmoid function得到 https://chart.googleapis.com/chart?cht=tx&chl=a,接著 https://chart.googleapis.com/chart?cht=tx&chl=a 會乘上一個weight再加上一些value得到 https://chart.googleapis.com/chart?cht=tx&chl=z'https://chart.googleapis.com/chart?cht=tx&chl=a 還會在乘上另一個weight再加上一些value得到 https://chart.googleapis.com/chart?cht=tx&chl=z''
https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z%7D 經過Chain Rule寫成 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20a%7D%7B%5Cpartial%20z%7D%20%5C%20%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20a%7D,其中 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20a%7D%7B%5Cpartial%20z%7D 就是這個Sigmoid function的微分。

https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20a%7D 經過Chain Rule寫成 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20z'%7D%7B%5Cpartial%20a%7D%20%5C%20%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z'%7D%20%2B%20%5Cfrac%7B%5Cpartial%20z''%7D%7B%5Cpartial%20a%7D%20%5C%20%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z''%7D,而我們可以很容易看出 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20z'%7D%7B%5Cpartial%20a%7D%20%3D%20W_3%2C%20%5Cfrac%7B%5Cpartial%20z''%7D%7B%5Cpartial%20a%7D%20%3D%20W_4,但我們不知道 https://chart.googleapis.com/chart?cht=tx&chl=z'%2Cz''https://chart.googleapis.com/chart?cht=tx&chl=C 的關係,所以先假設我們知道 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z'%7D%2C%20%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z''%7D 的值。

而有了 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z'%7D%2C%20%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z''%7D 我們就可以算出 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z%7D 得出下圖的式子。

我們可以將那個式子畫成像是Neuron一樣,而根據前向傳遞我們知道了 https://chart.googleapis.com/chart?cht=tx&chl=z,所以 https://chart.googleapis.com/chart?cht=tx&chl=%5Csigma'(z) 是一個常數。

第一個Case:假設橘色的這兩個Neuron是Output layer,那今天你要算 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z'%7D%2C%20%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z''%7D 就相對簡單。

第二個Case:假設橘色的這兩個Neuron不是Output layer,那根據前面學的我們想要算出前面的偏微分,就必須要先知道後面的偏微分,就等於是我們就要一直往後看下一個layer直到Output layer。

但是其實我們只需要換一個方向,從Output layer開始算回去的做法就叫做反向傳遞(Backward pass),我們可以建另外一個反向的Neural Network,它的Activation function需要先算完Forward pass之後才算的出來,其他都跟一般的Neural Network計算一樣,就可以算出 https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B%5Cpartial%20C%7D%7B%5Cpartial%20z%7D

總結


參考資料

李宏毅老師 - ML Lecture 7


上一篇
【Day 14】深度學習(Deep Learning)
下一篇
【Day 16】深度學習(Deep Learning)--- Tip(一)
系列文
30天搞懂機器學習是否搞錯了什麼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言