神經網路
反向傳播(backpropagation)
反向傳播是分層神經網路從錯誤中學習的方式。網路先做出一個猜測,你測量它錯得有多離譜,然後把這個誤差沿著各層往後傳遞,告訴每一個連接它該為錯誤負多少責任。想像一間廚房端出了一道太鹹的菜:主廚沿著流水線往回追查——醬料台分一點責任,調味環節分一點——每位廚師都微調自己那一環。用上百萬個例子一遍遍這樣做,整個網路就越來越準。
它的內部其實只是用微積分裡的鏈式法則做細緻的記帳——一層一層地算出:每個權重稍微變動一點,最終的誤差會怎樣改變。精妙之處在於從輸出端往回推:它一次掃過就算出所有這些「責任份額」,而不必逐個權重單獨試探,否則會慢得不可救藥。然後把每個權重朝著能減小誤差的方向挪動一格,循環往復。
它的重要性怎麼說都不為過:正是反向傳播讓深層網路——疊了許多層的網路——真正變得可以訓練,並支撐著幾乎所有現代人工智慧,從影像辨識到聊天機器人。一個常見的混淆:反向傳播只負責找出每個權重該往哪個方向調;該邁多大一步,是另一個步驟(梯度下降)決定的。它是遞送誤差的信使,而不是擰旋鈕的那隻手。
∂E/∂wₖ = (chain rule, layer by layer)
對每個權重 w,反向傳播都算出:若該權重改變,總誤差 E 會如何變化——也就是梯度——做法是把各層用鏈式法則串起來。
這個名字是「誤差的反向傳播」(backward propagation of errors)的縮寫。該方法因 1986 年 David Rumelhart、Geoffrey Hinton 與 Ronald Williams 的一篇著名論文而廣為人知,不過其核心思想在此前數十年裡已被數人各自獨立地推導出來。
又稱
另見