在原本的世界里,“誤差反向傳播算法”(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算法的思路,又花了兩天,就將論文寫了出來。
這篇論文用到的數學公式相當多,但寫作的困難程度其實也就那樣。
復合函數連續求偏導,任何學過一點高數的人,都能很熟練地完成。
而且,江寒重生前,在BP算法上著實下了點功夫,理解得還算透徹。
因此很輕松就將其復原了出來。
寫完《神經網絡訓練中的誤差反向傳播算法》之后,江寒就開始琢磨,如何將手里的這一批論文發表出去。
也不知道怎么回事,那兩篇投往三區期刊的“多層感知機”和“人工神經網絡”論文,迄今沒有任何回音。
既沒有拒稿,也沒有進入同行評議。
如果不是對投稿系統多少有點了解,江寒差點就要懷疑,編輯是不是根本沒看到自己的論文?
目前已經投稿出去的十幾篇論文里,已經確定發表的,只有3篇。
分別是:投往4區期刊AIREV的《論如何高效判定數據是否線性可分》;
投往1區期刊IEEETEC(TRANSASONEVOLUTIONARYPUTATION,電氣與電子工程師協會主辦,進化計算雜志)的《馬爾可夫隨機場》;
以及用小號Dr.X投稿給AMC的《論感知機的局限——異或問題的無解》。
總共價值7個學術點。
江寒的系統UI上,現在很明確地顯示著【學術點:-14,7】。
從這也能看出,用小號投稿是完全沒問題的。
其余的論文大部分都在審稿中,有的已經進入了同行評議環節,但遲遲沒有進入下一步。
也有幾篇關于“感知機”應用的水貨論文,沒能通過同行評議,被雜志社拒稿了。
江寒隨便改改,然后國內拒稿的,投給了國外,國外打回來的,投給國內。
反正不管怎么樣,但凡有一點機會,都要試一試。
萬一發表了,學術點它不香嗎?