1、多層神經(jīng)網(wǎng)絡(luò)復(fù)雜化,提升效率成為新挑戰(zhàn)
神經(jīng)網(wǎng)絡(luò)從感知機發(fā)展到多層前饋神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)變得越來越復(fù)雜。如上一篇 機器學(xué)習(xí)中的函數(shù)(2)- 多層前饋網(wǎng)絡(luò)巧解“異或”問題,損失函數(shù)上場優(yōu)化網(wǎng)絡(luò)性能 討論針對前饋神經(jīng)網(wǎng)絡(luò)我們的目標(biāo)是要讓損失函數(shù)達到最小值,這樣實際輸出和預(yù)期輸出的差值最小,利用最小化損失函數(shù)提升分類的精度。顯然,采用“窮舉”找優(yōu)參數(shù)的方法不是聰明的選擇,費時費力。我們現(xiàn)在面臨的問題和挑戰(zhàn)變成,如何找到一個高效的方法從眾多網(wǎng)絡(luò)參數(shù)(神經(jīng)元之間的連接權(quán)值和偏置)中選擇最佳的參數(shù)?這就是我們即將一起學(xué)習(xí)討論的話題。
在研究復(fù)雜問題之前,我們先要弄清楚幾個基礎(chǔ)概念,包括“凸函數(shù)”,“梯度”,“梯度下降”。
2、基礎(chǔ)概念:凸函數(shù)和凸曲面、梯度和梯度下降
討論這些概念前必須向偉大的牛頓致敬,當(dāng)科學(xué)發(fā)展到伽利略和開普勒那個年代,人們就在物理學(xué)和天文學(xué)中遇到很多求一個函數(shù)的最大值或最小值,即最優(yōu)化問題,比如計算行星運動的近日點和遠(yuǎn)日點距離等。如何系統(tǒng)地解決最優(yōu)化問題?牛頓創(chuàng)造性的給出了答案,他的偉大之處在于,他不像前人那樣,將最優(yōu)化問題看成是若干數(shù)量比較大小的問題,而看成是研究函數(shù)動態(tài)變化趨勢的問題 。如下圖,牛頓對比拋物線和它的導(dǎo)數(shù)(虛的直線),發(fā)現(xiàn)曲線達到最高點的位置,就是切線變成水平的位置,或者說導(dǎo)數(shù)變?yōu)?的位置呢。他把比較數(shù)大小的問題,變成了尋找函數(shù)變化拐點的問題,同時發(fā)明導(dǎo)數(shù)這種工具將這兩個問題等同起來,利用導(dǎo)數(shù)這個工具求最大值問題就變成了解方程的問題,你看微積分這種強大的數(shù)學(xué)工具在神經(jīng)網(wǎng)絡(luò)中多重要啊。
(1)凸函數(shù)和凸曲面
凸函數(shù)的直觀認(rèn)識:下圖中上述[圖a]是凸函數(shù)圖像,[圖b]是非凸函數(shù)圖像,“任意兩點連接而成的線段與函數(shù)沒有交點”即為凸函數(shù)。
從凸曲面與非凸曲面理解最小值和局部最小值:凸函數(shù)的局部極小值就是全局最小值,如下圖中【圖a】凸曲面中無論彈珠起始位置在何處,彈珠最終都會落在曲面的最低點,而這個極小值恰好是全局最小值。而非凸函數(shù)求導(dǎo)獲得的極小值不能保證是全局最小值,如【圖b】非凸曲面中彈珠仍然會落在曲面的某個低點,但有可能不是全局的最低點。
(2)梯度和梯度下降法
梯度(gradient)的本質(zhì)是一個向量(有大小和方向兩個要素),表示某一函數(shù)在該點處的方向?qū)?shù)沿著該方向取得最大值,即函數(shù)在該點處沿著此梯度的方向變化最快,變化率最大。為求得這個梯度值會用到“偏導(dǎo)”的概念,“偏導(dǎo)”的英文是“partial derivatives”,若譯成“局部導(dǎo)數(shù)”更易理解,對于多維變量函數(shù)而言,當(dāng)求某個變量的導(dǎo)數(shù)時,就是把其他變量視為常量,然后對整個函數(shù)求其導(dǎo)數(shù),由于這里只求一個變量,即為“局部”。接著把這個對“一個變量”求導(dǎo)的過程對余下的其他變量都求一遍導(dǎo)數(shù),再放到向量場中,就得到了這個函數(shù)的梯度。
梯度下降法(Gradient descent)是最常見的一種最優(yōu)化問題求解方法。打個比方,假設(shè)一個高度近視的人在山的某個位置上(定義為起始點),他計劃從從山上走下來,也就是走到山的最低點。這個時候,他可以以起始點為基準(zhǔn),尋找這個位置點附近最陡峭的地方,然后朝著山的高度下降的方向走,如此循環(huán)迭代,最后就可以到達山谷位置。梯度下降過程示意如下圖所示,當(dāng)我們沿著負(fù)梯度方向進行迭代的時候“每次走多大的距離”是需要算法工程師去調(diào)試的,即算法工程師就是要調(diào)試合適的“學(xué)習(xí)率”,從而找到“最佳”參數(shù)。如果碰到極大值問題,則可以將目標(biāo)函數(shù)加上負(fù)號,從而將其轉(zhuǎn)換成極小值問題來求解。
3、BP算法提升效率,讓人工智能再次進
如本文開頭提到的,上世紀(jì)70年代多層神經(jīng)網(wǎng)絡(luò)出現(xiàn)后,面臨重大的挑戰(zhàn)是增加神經(jīng)網(wǎng)絡(luò)的層數(shù)雖然可為其提供更大的靈活性,讓網(wǎng)絡(luò)能解決更多的問題,但隨之而來的數(shù)量龐大的網(wǎng)絡(luò)參數(shù)的訓(xùn)練,這是制約多層神經(jīng)網(wǎng)絡(luò)發(fā)展的一個重要瓶頸。這時誤差逆?zhèn)鞑ィ╡rror BackPropagation, 簡稱BP)算法出現(xiàn)了。現(xiàn)在提及BP算法時,常常把保羅·沃伯斯(PaulWerbos)稱作BP算法的提出者,杰弗里?辛頓(Geoffrey Hinton)稱作BP算法的推動者。
1974年,沃伯斯(圖a)在哈佛大學(xué)取得博士學(xué)位,在他的博士論文里首次提出了通過誤差的反向傳播來訓(xùn)練人工神經(jīng)網(wǎng)絡(luò),沃伯斯的研究工作,為多層神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)、訓(xùn)練與實現(xiàn),提供了一種切實可行的解決途徑。
1986年,辛頓教授(圖b)和他的團隊優(yōu)化了BP算法,吻醒了沉睡多年的“人工智能”公主,讓人工智能研究再次進入繁榮期。
BP算法其實并不僅僅是一個反向算法,而是一個雙向算法,它其實是分兩步走①正向傳播信號,輸出分類信息;②反向傳播誤差,調(diào)整網(wǎng)絡(luò)權(quán)值 。
BP 算法基于梯度下降(gradient descent)策略,以目標(biāo)的負(fù)梯度方向?qū)?shù)進行調(diào)整,采用“鏈?zhǔn)椒▌t”(鏈?zhǔn)椒▌t用于求解復(fù)合函數(shù)的導(dǎo)數(shù),復(fù)合函數(shù)導(dǎo)數(shù)是構(gòu)成復(fù)合的函數(shù)在相應(yīng)點的乘積,就像鎖鏈一環(huán)扣一環(huán),所以稱為鏈?zhǔn)椒▌t)。
BP算法的工作流程拆解開如下,對于每個訓(xùn)練樣例BP算法執(zhí)行的順序是
先將輸入示例提供給輸入層神經(jīng)元,然后逐層將信號前傳,直到產(chǎn)生輸出層的結(jié)果。
然后計算輸出層的誤差,再將誤差逆向傳播至隱層神經(jīng)元。
最后根據(jù)隱層神經(jīng)元的誤差來對連接權(quán)和閾值進行調(diào)整。
該迭代過程循環(huán)進行,直到達到某些停止條件為止,例如訓(xùn)練誤差已達到一個很小的值。實際應(yīng)用中BP算法把網(wǎng)絡(luò)權(quán)值糾錯的運算量,從原來的與神經(jīng)元數(shù)目的平方成正比,下降到只和神經(jīng)元數(shù)目本身成正比,效率和可行性大大提升,而這個得益于這個反向模式微分方法節(jié)省的計算冗余。
4、BP算法的缺陷
BP算法在很多場合都很適用,集“BP算法”之大成者當(dāng)屬Yann LeCun(楊立昆),紐約大學(xué)教授2018年還拿過圖靈獎,擔(dān)任過Facebook首席人工智能科學(xué)家。1989年,LeCun就用BP算法在手寫郵政編碼識別上有著非常成功的應(yīng)用,訓(xùn)練好的系統(tǒng),手寫數(shù)字錯誤率只有5%。LeCun借此還申請了專利,開了公司,發(fā)了筆小財。但如前所述,BP算法的缺點也很明顯,在神經(jīng)網(wǎng)絡(luò)的層數(shù)增多時,很容易陷入局部最優(yōu)解,亦容易過擬合。20世紀(jì)90年代,VladimirVapnik(萬普尼克)提出了著名的支持向量機(Support Vector Machine,SVM),雖然SVM是一個特殊的兩層神經(jīng)網(wǎng)絡(luò),但因該算法性能卓越,具有可解釋性,且沒有局部最優(yōu)的問題,在圖像和語音識別等領(lǐng)域獲得了廣泛而成功的應(yīng)用。在手寫郵政編碼的識別問題上,LeCun利用BP算法把錯誤率降到5%左右,而SVM在1998年就把錯誤率降低至0.8%,這遠(yuǎn)超越同期的傳統(tǒng)神經(jīng)網(wǎng)絡(luò)算法。這使得很多神經(jīng)網(wǎng)絡(luò)的研究者轉(zhuǎn)向SVM的研究,從而導(dǎo)致多層前饋神經(jīng)網(wǎng)絡(luò)的研究逐漸受到冷落,在某種程度上萬普尼克又把神經(jīng)網(wǎng)絡(luò)研究送到了一個新的低潮期。
神經(jīng)網(wǎng)絡(luò)又是如何度過這個低谷期,快速進入到下一個繁榮時代的呢?
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103584 -
人工智能
+關(guān)注
關(guān)注
1806文章
49011瀏覽量
249381 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4380瀏覽量
64853
原文標(biāo)題:機器學(xué)習(xí)中的函數(shù)(3) - "梯度下降"走捷徑,"BP算法"提效率
文章出處:【微信號:Hardware_10W,微信公眾號:硬件十萬個為什么】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
詳解深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

評論