引子
Minsky說過神經(jīng)網(wǎng)絡(luò)無法解決異或問題。60年代關(guān)于神經(jīng)網(wǎng)絡(luò)的研究還取得了一定的進展,但是都沒有取得重大的突破。70年代,神經(jīng)網(wǎng)絡(luò)的研究進入了蕭條期,人工智能里產(chǎn)生了許多不同的方向,神經(jīng)網(wǎng)絡(luò),好像被人們所忘記。
直到1986年,David Rumelhar和Geoffery Hinton等人提出了反向傳播(Backpropagation,BP)算法,解決了兩層神經(jīng)網(wǎng)絡(luò)所需要的復(fù)雜計算量問題,克服了Minsky說過神經(jīng)網(wǎng)絡(luò)無法解決異或問題,該算法是對神經(jīng)網(wǎng)絡(luò)受到批判的一個有力的回答。
其中Geoffery Hinton是神經(jīng)網(wǎng)絡(luò)的發(fā)展中一個重要的人物,對神經(jīng)網(wǎng)絡(luò)堅持,使得他獲得了很高的成就,2013年加入google,成為google神經(jīng)網(wǎng)絡(luò)的領(lǐng)軍人物。
Geoffery Hinton
BP神經(jīng)網(wǎng)絡(luò)
從感如器的學(xué)習(xí)算法可知,學(xué)習(xí)的目的是在于修改網(wǎng)絡(luò)中的權(quán)系數(shù),使到網(wǎng)絡(luò)對于所輸入的模式樣本能正確分類。當學(xué)習(xí)結(jié)束時,也即神經(jīng)網(wǎng)絡(luò)能正確分類時,顯然 權(quán)系數(shù)就反映了同類輸人模式樣本的共同特征。換句話講,權(quán)系數(shù)就是存儲了的輸人模式。由于權(quán)系數(shù)是分散存在的,故神經(jīng)網(wǎng)絡(luò)自然而然就有分布存儲的特點。
能夠求出網(wǎng)絡(luò)中的權(quán)系數(shù),是神經(jīng)網(wǎng)絡(luò)的關(guān)鍵。在bp神經(jīng)網(wǎng)絡(luò)中,采用的是誤差回傳,從結(jié)果的誤差,回傳到中間層,利用梯度算法,計算權(quán)重,為了能實現(xiàn)梯度算法,故把神經(jīng)元的激發(fā)函數(shù)改為可微分函數(shù),例如Sigmoid函數(shù):
最后又按負梯度方向修改權(quán)系數(shù)W的修改規(guī)則:
mu 是權(quán)重變化率,它視情況不同而取值不同,一般取0-1之間的小數(shù)。很明顯,梯度法比原來感知器的學(xué)習(xí)算法進了一大步。其關(guān)鍵在于兩點:
- 神經(jīng)元的傳遞函數(shù)采用連續(xù)的s型函數(shù),而不是階躍函數(shù);
- 對權(quán)系數(shù)的修改采用誤差的梯度去控制,而不是采用誤差去控制。故而有更好的動態(tài)特能,即加強了收斂進程。
bp神經(jīng)網(wǎng)絡(luò)算法的推導(dǎo)過程有點復(fù)雜,最后的結(jié)果為:
算法的執(zhí)行的步驟如下:
- 對權(quán)系數(shù)Wij置初值。對各層的權(quán)系數(shù)置一個較小的非零隨機數(shù)。
- 輸入一個樣本,以及對應(yīng)期望輸出。
- 計算各層的輸出,對于第k層第i個神經(jīng)元的輸出,有:
4.求各層的學(xué)習(xí)誤差,對于輸出層有k=m,有
對于其他各層,有
5.修正權(quán)系數(shù)Wij和閥值θ
6.當求出了各層各個權(quán)系數(shù)之后,可按給定品質(zhì)指標判別是否滿足要求。如果滿足要求,則算法結(jié)束;如果未滿足要求,則返回(3)執(zhí)行。
這個學(xué)習(xí)過程,對于任一給定的樣本和期望輸出都要執(zhí)行,直到滿足所有輸入輸出要求為止。
許多問題
歷史總是驚人的相似,神經(jīng)網(wǎng)絡(luò)的學(xué)者們再次登上了《紐約時報》的專訪。人們認為神經(jīng)網(wǎng)絡(luò)可以解決許多問題。就連娛樂界都開始受到了影響,當年的《終結(jié)者》電影中的阿諾都趕時髦地說一句:我的CPU是一個神經(jīng)網(wǎng)絡(luò)處理器,一個會學(xué)習(xí)的計算機。
但是神經(jīng)網(wǎng)絡(luò)仍然存在若干的問題:盡管使用了BP算法,一次神經(jīng)網(wǎng)絡(luò)的訓(xùn)練仍然耗時太久,而且困擾訓(xùn)練優(yōu)化的一個問題就是局部最優(yōu)解問題,這使得神經(jīng)網(wǎng)絡(luò)的優(yōu)化較為困難。同時,隱藏層的節(jié)點數(shù)需要調(diào)參,這使得使用不太方便,工程和研究人員對此多有抱怨。
又一次寒冬
Yann Lecun 1960年 出生于巴黎。1987年 在法國獲得博士學(xué)位后,他曾追隨 Hinton 教授到多倫多大學(xué)做了一年博士后的工作,隨后搬到新澤西州的貝爾實驗室繼續(xù)研究工作。
在貝爾實驗室,Yann Lecun 1989年 發(fā)表了論文, “反向傳播算法在手寫郵政編碼上的應(yīng)用”。他用美國郵政系統(tǒng)提供的近萬個手寫數(shù)字的樣本來培訓(xùn)神經(jīng)網(wǎng)絡(luò)系統(tǒng),培訓(xùn)好的系統(tǒng)在獨立的測試樣本中, 錯誤率只有 5%。
Yann Lecun 進一步運用一種叫做“卷積神經(jīng)網(wǎng)絡(luò)” (Convoluted Neural Networks) 的技術(shù),開發(fā)出商業(yè)軟件用于讀取銀行支票上的手寫數(shù)字,這個支票識別系統(tǒng)在九十年代末占據(jù)了美國接近 20%的市場。
至今在 Yann Lecun的網(wǎng)站里還能看到Convoluted Neural Networks的算法,簡稱為LeNet 5,下圖是算法的動態(tài)演示圖,能夠清晰的看到手寫數(shù)字被正確的識別為相應(yīng)的數(shù)字,對代碼有興趣的同學(xué),github上有很多相關(guān)的LeNet 5代碼。
然而神經(jīng)網(wǎng)絡(luò)還是存在著上面所述的缺陷,此時就在貝爾實驗室,Yann Lecun臨近辦公室的一個同事的工作,又把神經(jīng)網(wǎng)絡(luò)的研究帶入第二個寒冬。 (未完待續(xù))
作者:林清漂