2017年7月6日 星期四

Backpropagation

      在training neural network 時,需要將 cost function 對每個變數作微分。因為network 很龐大的情況下,cost function 非常複雜,直接對每個變數做微分相當複雜且耗費資源。所以引進了 backpropagation  (BP)來完成這件事。BP 的原理其實就是利用微分的chain rule,先對每個local function 微分後,再從尾巴往前乘起來,結果就是cost function 對變數的微分。

        如下示意圖。變數X,Y 經過F function作用後再經過 G 的作用輸出。如果想計算G對X,Y的微分,先將每個local function 作微分 ( dG/dF , dF/dX, dF/dY) 。再從尾巴往前相乘,其結果就是G對X,Y的微分。這方法的好處是不管function 多複雜 ,只要把function 一步步用流程圖做拆解,對每個小部份做微分後(前題是可微分),從後往前乘就可以得到結果。因為與計算cost-function 計算是往前傳後不同,微分是由後往前計算,所以稱為back-propagation。
黑色為一般計算,由左往右。紅色微分由後往前傳