一碗酸梅湯 作品
第233章 誤差反向傳播算法
在原本的世界裡,“誤差反向傳播算法”(errorback-propagation,簡稱bp)出現得很早。
1974年,哈佛大學的paulwerbos,在博士論文中首次發明了bp算法,可惜沒有引起重視。
1982年,davidparker重新發現了bp算法,然而,仍然沒有太大的反響。
到了1986年,rumelhart、hinton和williams三人發表了《learningrepresentationsbyback-propagatingerrors》,重新報道了這一方法。
從那之後,人工神經網絡中的誤差反向傳播學習算法,才得到了應有的重視,並逐漸廣泛應用起來,奠定了神經網絡走向完善和實用的基礎。
bp算法的本質,其實是lms(leastmeansquare)算法的推廣。
lms試圖最小化網絡輸出的均方差,用於激活函數可微的感知機的訓練。
只要將lms推廣到由非線性可微神經元組成的多層前饋神經網絡,就得到了bp算法。
因此,bp算法也被稱為廣義δ規則。
bp算法有很多優點,理論依據堅實、推導過程嚴謹、物理概念清楚、通用性強……
可以說,它為多層神經網絡的訓練與實現,提供了一條切實可行的解決途徑,功不可沒。
但是也要看到,bp也有著自身的侷限性,比如收斂速度緩慢、易陷入局部極小等。
慢點倒還不怕,可以通過調整超參數,或者升級硬件性能來解決。
可一旦陷入局部最優,就有可能無法得到全局最優解,這才是真正要命的問題。
有時可以通過選擇恰當的學習速率,有限度地改善這個問題。
也有些時候無法徹底避免,只能“湊合著用”。
幸運的是,儘管理論上存在著種種不足,但在絕大多數情景下,bp算法的實際表現都還不錯。
bp算法的基本思想,是將學習過程分為兩個過程。
在進行訓練時,首先正向傳播。
將數據送入輸入層,然後從前往後,送入各個隱藏層進行處理,最後將結果送到輸出層,得到計算結果。
若計算結果與期望(標籤)不符,則開始進行誤差反向傳播。
在這一步,通過損失函數計算實際輸出與期望輸出的誤差e,然後從後往前,運用鏈式法則,逐層計算每個參數(w,b)相對於誤差e的偏導數。
這個過程就是反向傳播,從輸出層開始,一直進行到輸入層為止。
主要目的是將誤差e分攤給各層所有單元,從而獲得各層單元的誤差信號。
然後以此為基準,調整各神經元的權重和偏置,直到網絡的總誤差達到精度要求。
江寒只花了3天,就理清了bp算法的思路,又花了兩天,就將論文寫了出來。
這篇論文用到的數學公式相當多,但寫作的困難程度其實也就那樣。
複合函數連續求偏導,任何學過一點高數的人,都能很熟練地完成。
1974年,哈佛大學的paulwerbos,在博士論文中首次發明了bp算法,可惜沒有引起重視。
1982年,davidparker重新發現了bp算法,然而,仍然沒有太大的反響。
到了1986年,rumelhart、hinton和williams三人發表了《learningrepresentationsbyback-propagatingerrors》,重新報道了這一方法。
從那之後,人工神經網絡中的誤差反向傳播學習算法,才得到了應有的重視,並逐漸廣泛應用起來,奠定了神經網絡走向完善和實用的基礎。
bp算法的本質,其實是lms(leastmeansquare)算法的推廣。
lms試圖最小化網絡輸出的均方差,用於激活函數可微的感知機的訓練。
只要將lms推廣到由非線性可微神經元組成的多層前饋神經網絡,就得到了bp算法。
因此,bp算法也被稱為廣義δ規則。
bp算法有很多優點,理論依據堅實、推導過程嚴謹、物理概念清楚、通用性強……
可以說,它為多層神經網絡的訓練與實現,提供了一條切實可行的解決途徑,功不可沒。
但是也要看到,bp也有著自身的侷限性,比如收斂速度緩慢、易陷入局部極小等。
慢點倒還不怕,可以通過調整超參數,或者升級硬件性能來解決。
可一旦陷入局部最優,就有可能無法得到全局最優解,這才是真正要命的問題。
有時可以通過選擇恰當的學習速率,有限度地改善這個問題。
也有些時候無法徹底避免,只能“湊合著用”。
幸運的是,儘管理論上存在著種種不足,但在絕大多數情景下,bp算法的實際表現都還不錯。
bp算法的基本思想,是將學習過程分為兩個過程。
在進行訓練時,首先正向傳播。
將數據送入輸入層,然後從前往後,送入各個隱藏層進行處理,最後將結果送到輸出層,得到計算結果。
若計算結果與期望(標籤)不符,則開始進行誤差反向傳播。
在這一步,通過損失函數計算實際輸出與期望輸出的誤差e,然後從後往前,運用鏈式法則,逐層計算每個參數(w,b)相對於誤差e的偏導數。
這個過程就是反向傳播,從輸出層開始,一直進行到輸入層為止。
主要目的是將誤差e分攤給各層所有單元,從而獲得各層單元的誤差信號。
然後以此為基準,調整各神經元的權重和偏置,直到網絡的總誤差達到精度要求。
江寒只花了3天,就理清了bp算法的思路,又花了兩天,就將論文寫了出來。
這篇論文用到的數學公式相當多,但寫作的困難程度其實也就那樣。
複合函數連續求偏導,任何學過一點高數的人,都能很熟練地完成。