【李巨集毅ML筆記】 11 BP反向傳播
梯度提升在神經網路訓練中的過程
:
實際,BackPropagation是一種比較有效率計算的Gradient Descent方法
記住BackPropagation中的鏈式法則Chain Rule如下:
以上,即多元複合函式的求導公式,如下:
如下,在Neuron Network的training中,
yn 與 yn^的距離,即(偏差)距離值定義為Cn。
累加所有的Neuron的(偏差)距離值,得到整個Network的total loass損失值L(θ)。
用該累加公式對w求導。該公式意義在與,求L(θ)對w的偏微分,可以轉換為求每個Neuron對w的求導的累加和。
如下,以第一個Neuron為例,則x1,x2位原始輸入向量,進行計算。
由計算損失函式對w的偏導,基於鏈式法則,改為求函式模型對w的偏導*損失函式對啟用函式模型的偏導
如下,第一步,計算φ(z)/φ(w),規律就是wi前接的input是xi,則其偏微分為xi。
舉例如下,計算z,然後使用activation function(這裡用的sigmoid function),計算得到輸出0.98。
第一步,計算φ(C)/φ(z),C是在計算得到z,再經過activation function得到yn^,最後還要經過loss function,得到了C的值。因此,φ(C)/φ(z)很複雜。
假設a = σ(z), σ為sigmoid函式,然後a再與w3/w4得到z'/z'',以及後續的a',a''
ruxia因為a結合w3,w4分別影響後續的z'和z'',基於鏈式法則,假設後一層只有兩個neuron,也可以有1000個,下面式子更長。
然後,求φ(z')/φ(a)也很簡單了,跟前面的φ(z)/φ(w)類似,偏微分就是前面的wi,其餘部分φ(C)/φ(z')假設已經算出(後面考慮)。
即可得到下式:
反過來,從右往左看,假設有一個新的neuron,且不在原先的Network中,所做的工作跟上面中等式中括號中一樣,再直接乘以在forward pass中得到的已知的φ(z')。樣子如下,其input是φ(C)/φ(z'),φ(C)/φ(z''),得到的結果就是φ(C)/φ(z),z是固定的值,則φ(z)是常數。形成了backward pass
如下:假設能算φ(z'),φ(z''),則問題就都能解決了,假設已經處於最後一層neuron,輸出為y1,y2...可加入y1,y2,並利用鏈式法則,基於假設的C誤差函式,求出φ(C)/φ(z'),φ(C)/φ(z''),進而求出φ(C)/φ(z)。如果只有兩層,那按下面方法,就可以求出w1,w2了。
然而,如下,假設第一層後沒有輸出層,接的是下一個隱層,一樣原理。
換一個方向,從y1,y2輸出層開始,反向算,運算量跟forword pass是一樣的,只是用了很多鏈式法則。
如下,想要計算z1對C的偏微分,則算z3、z4根C的偏微分,想知道z3的偏微分,需要知道z5,z6對C的偏微分。
反之,就都算出來了。如果先算z5,z6對C的偏微分,再算z3、z4的偏微分,往前算。
那麼,怎麼先算z5,z6呢?利用假設一個反向的Neuron network,層層計算,做backward pass如下:
總結:
先做一個forward pass,知道activation function的output,就是φ(z)/φ(w)=a,在backward pass中,求φ(C)/φ(z),相乘,得到φ(C)/φ(w)