一碗酸梅湯 作品

第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算法的思路,又花了兩天,就將論文寫了出來。

    這篇論文用到的數學公式相當多,但寫作的困難程度其實也就那樣。

    複合函數連續求偏導,任何學過一點高數的人,都能很熟練地完成。