最近在刷吳恩達的coursea的機器學習視頻,學完基於梯度下降的邏輯回歸和基於梯度下降的神經網絡后,就在反思這兩者之間的區別,為什么必須使用神經網絡?
邏輯回歸不能替代神經網絡么?他們的區別是什么呢?
答案:邏輯回歸不能替代神經網絡。
機器學習的本質其實是訓練出一組參數,盡可能讓基於這組參數的模型能正確識別出所有的樣本。
然而,邏輯回歸所有參數的更新是基於相同的式子,也就是所有參數的更新是基於相同的規則。 相比之下,神經網絡每兩個神經元之間參數的更新都基於不同式子,也就是每個參數的更新都是用不同的規則。
顯而易見,神經網絡模型能模擬和挖掘出更多復雜的關系,也具有更好的預測效果。下面詳細分析邏輯回歸的更新和神經網絡的反向傳播。
分析:邏輯回歸的參數更新。 假設有m 個樣本,他們的cost function(成本函數)為:
其中 h 函數為激活函數, xi為第 i 個樣本, theta 為要訓練的參數, 用向量的形式來寫就是:
,其中X為代表所有樣本的向量,是二維矩陣,每一行表示一個樣本, Y為每一個樣本本身應該屬於的類。
對上面的cost function的每一個參數theta求偏導, 得到邏輯回歸的所有參數的更新都根據的規則是:。
通過此式, 可以看出影響參數的更新的因素有 學習率a, 樣本個數 m,樣本輸入X,樣本所屬於的類。
神經網絡的參數更新過程:
本文以上圖神經網絡為例,輸入層有兩個神經元,這兩個神經元表示一個樣本。 一個隱藏層, 兩個輸出。
正向傳播: i1 ---h1 之間的傳播,h1的輸入為: 。
h1 的輸出為: 假設用激活函數sigmoid, 。
h1---o1 之間的傳播,o1的輸入為:。
o1 的輸出為:
反向傳播:
(1)總誤差(square error):
因為有2個輸出, 所以error由兩部分組成
(2)輸出層與隱藏層間的參數更新:
以權重w5為例,
計算:
計算 :
計算:.
三者相乘,得到 w5 的更新為:
(
w5的更新值主要與Out o1 和 Outh1相關)
同理,w6的更新取決於 Out o1 和 Outh2, W7 的更新取決於 Out o2 和 Outh1, W8 的更新取決於 Out o2 和 Outh2, 由此可見每個參數的更新式子都不同
(3)隱藏層與隱藏層間的參數更新:
計算W5時, 誤差是從outo1 --neto1--w5 這樣傳遞過來的。
而更新 w1 時, 路徑是 outh1 ---neth1---w1, 而 outh1先要接收 Eo1 和 E 02 傳來的誤差。
, 其中
通過計算可以得到,
所以, W1 的更新取決於Out o1 ,Out o2 , net01, net02, outh1, neth1.
即 W1的更新路徑是(Out o1 ----- neto1 & Out o2 ----- neto2 )----- outh1 ----neth1 ----W1
W2 的更新路徑是(Out o1 ----- neto1 & Out o2 ----- neto2 )----- outh1 ----neth1----W2
W3 的更新路徑是(Out o1 ----- neto1 & Out o2 ----- neto2 )----- outh2 ----neth2----W3
由此可見, 神經網絡的反向傳播每個參數的路徑是不一樣的。