機械學習3
上一章講到了使用梯度下降去降低loss function的值,這種方法叫做逆向傳播。
在學的時候總是想著,這方法好像也跟逆向沒有關連性,使用pytorch時也只有一行loss.backward(),所以我嘗試找出逆向傳播的原理。
我們輸入資料然後經過隱藏曾得出輸出再經過loss function得出誤差,這個動作叫做正向傳播可以求出誤差值。
接下來就是用梯度下降去撿小loss function就是逆向傳播。
如果用loss function對a(4)1的每個weight和bias求偏微分就可以得到一個向量代表倒數第二層每一個神經元對a(4)1的影像,或者是說上升最快的方向。每一個神經元對下一層的影響是不一樣的而梯度下降可以告訴你那些的影響比較大應該重點調大那些的值。
假設梯度下降中有一項w1是7.6一項w2是0.1那就代表w1有w2 76倍的影響力如果我想增加輸出或輸入的值改變w2一定比較有效率。
做梯度下降的目的是將輸出變小或是讓輸出變為想要的值,但輸出的值不只跟w、b有關和輸入也有關,最後一層的輸入是倒數第二層的輸出,而要調整倒數第二層的輸出就要調整倒數第三層,以此類推可以推到輸入層。
這就是逆向傳播要做的式透過梯度下降層層修改參數,但是要層層遞進的求低度也是件費力的事,所以通常會通過鍊式法將這些神經元全部串起來再求梯度,這樣就只要求一個梯度了。
可以求梯度後就可以修改參數,但是每次要下降的話一定是多個資料進行過後就如同loss function是平均一樣,所以下降的值會是每個資料要下降的值的平均。