本質(zhì)上,深度學(xué)習(xí)是一個(gè)新興的時(shí)髦名稱,衍生于一個(gè)已經(jīng)存在了相當(dāng)長一段時(shí)間的主題——神經(jīng)網(wǎng)絡(luò)。 ?
從20世紀(jì)40年代開始,深度學(xué)習(xí)發(fā)展迅速,直到現(xiàn)在。該領(lǐng)域取得了巨大的成功,深度學(xué)習(xí)廣泛運(yùn)用于智能手機(jī)、汽車和許多其他設(shè)備。
那么,什么是神經(jīng)網(wǎng)絡(luò),它可以做什么?
現(xiàn)在,一起來關(guān)注計(jì)算機(jī)科學(xué)的經(jīng)典方法:
程序員設(shè)計(jì)一種算法,它對于給定的輸入數(shù)據(jù),生成輸出數(shù)據(jù)。
程序員們準(zhǔn)確地設(shè)計(jì)函數(shù)f(x)的所有邏輯:
y = f(x)
其中x和y分別是輸入數(shù)據(jù)和輸出數(shù)據(jù)
但是,有時(shí)設(shè)計(jì) f(x) 可能并不那么容易。例如,假設(shè)x是面部圖像,y是通信員的名字。對于大腦來說,這項(xiàng)任務(wù)非常容易,而計(jì)算機(jī)算法卻難以完成!
這就是深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)大顯神通的地方。
基本原則是:放棄 f() 算法,試著模仿大腦。
那么,大腦是如何表現(xiàn)的?
大腦使用幾個(gè)無限對 (x,y) 樣本(訓(xùn)練集)不斷訓(xùn)練,在這個(gè)過程中,f(x) 函數(shù)會自動形成。它不是由任何人設(shè)計(jì)的,而是從無休止的試錯(cuò)法提煉機(jī)制中形成的。
想想一個(gè)孩子每天看著周圍熟悉的人:數(shù)十億個(gè)快照,取自不同的位置、視角、光線條件,每次識別都要進(jìn)行關(guān)聯(lián),每次都要修正和銳化自然神經(jīng)網(wǎng)絡(luò)。
人工神經(jīng)網(wǎng)絡(luò)是由大腦中的神經(jīng)元和突觸組成的自然神經(jīng)網(wǎng)絡(luò)模型。
典型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
為了保持簡單,并且利用當(dāng)今機(jī)器的數(shù)學(xué)和計(jì)算能力,可以將神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)為一組層,每層包含節(jié)點(diǎn)(大腦神經(jīng)元的人工對應(yīng)物),其中層中的每個(gè)節(jié)點(diǎn)連接到下一層中的節(jié)點(diǎn)。
每個(gè)節(jié)點(diǎn)都有一個(gè)狀態(tài),通過浮點(diǎn)數(shù)表示,其取值范圍通常介于0到1。該狀態(tài)接近其最小值時(shí),該節(jié)點(diǎn)被認(rèn)為是非活動的(關(guān)閉),而它接近最大值時(shí),該節(jié)點(diǎn)被認(rèn)為是活動的(打開)??梢园阉胂蟪梢粋€(gè)燈泡;不嚴(yán)格依賴于二進(jìn)制狀態(tài),但位于取值范圍內(nèi)的某個(gè)中間值。
每個(gè)連接都有一個(gè)權(quán)重,因此前一層中的活動節(jié)點(diǎn)或多或少地會影響到下一層中節(jié)點(diǎn)的活動(興奮性連結(jié)),而非活動節(jié)點(diǎn)不會產(chǎn)生任何影響。
連接的權(quán)重也可以是負(fù)的,這意味著前一層中的節(jié)點(diǎn)(或多或少地)對下一層中的節(jié)點(diǎn)的不活動性(抑制性連結(jié))產(chǎn)生影響。
簡單來說,現(xiàn)在假設(shè)一個(gè)網(wǎng)絡(luò)的子集,其中前一層中的三個(gè)節(jié)點(diǎn)與下一層中的節(jié)點(diǎn)相連結(jié)。簡而言之,假設(shè)前一層中的前兩個(gè)節(jié)點(diǎn)處于其最大激活值(1),而第三個(gè)節(jié)點(diǎn)處于其最小值(0)。
在上圖中,前一層中的前兩個(gè)節(jié)點(diǎn)是活動的(開),因此,它們對下一層中節(jié)點(diǎn)的狀態(tài)有所貢獻(xiàn),而第三個(gè)節(jié)點(diǎn)是非活動的(關(guān)),因此它不會以任何方式產(chǎn)生影響(獨(dú)立于其連結(jié)權(quán)重)。
第一個(gè)節(jié)點(diǎn)具有強(qiáng)(厚)正(綠色)連接權(quán)重,這意味著它對激活的貢獻(xiàn)很大。第二個(gè)具有弱(?。┴?fù)(紅色)連接權(quán)重;因此,它有助于抑制連接節(jié)點(diǎn)。
最后,得到了來自前一層的傳入連接節(jié)點(diǎn)的所有貢獻(xiàn)值的加權(quán)和。
其中i是節(jié)點(diǎn) i 的激活狀態(tài),w ij是連接節(jié)點(diǎn) i 和節(jié)點(diǎn) j 的連接權(quán)重。
那么,給定加權(quán)和,如何判斷下一層中的節(jié)點(diǎn)是否會被激活?規(guī)則真的像“總和為正即被激活,結(jié)果為負(fù)則不會”?有可能,但一般來說,這取決于你為這個(gè)節(jié)點(diǎn)選擇哪個(gè)激活函數(shù)及閾值)。
想一想。這個(gè)最終數(shù)字可以是實(shí)數(shù)范圍內(nèi)的任何數(shù)字,我們需要使用它來設(shè)置更有限范圍內(nèi)的節(jié)點(diǎn)狀態(tài)(假設(shè)從0到1)。然后將第一個(gè)范圍映射到第二個(gè)范圍,以便將任意(負(fù)數(shù)或正數(shù))數(shù)字壓縮到0到1的范圍內(nèi)。
sigmoid 函數(shù)是執(zhí)行此任務(wù)的一個(gè)常見激活函數(shù)。
在該圖中,閾值(y 值達(dá)到范圍中間的 x 值,即0.5)為零,但一般來講,它可以是任何值(負(fù)數(shù)或正數(shù),其變化影響sigmoid向左或向右移動)。
低閾值允許使用較低的加權(quán)和激活節(jié)點(diǎn),而高閾值將僅使用該和的高值確定激活。
該閾值可以通過考慮前一層中的附加虛節(jié)點(diǎn)來實(shí)現(xiàn),其激活值恒定為 1。在這種情況下,該虛節(jié)點(diǎn)的連接權(quán)重可以用作閾值,并且上文提到的和公式可以被認(rèn)為包括閾值本身。
最終,網(wǎng)絡(luò)的狀態(tài)由其所有權(quán)重的一組值來表示(從廣義上講,包括閾值)。
給定狀態(tài)或一組權(quán)重值可能會產(chǎn)生不良結(jié)果或大錯(cuò)誤,而另一個(gè)狀態(tài)可能會產(chǎn)生良好結(jié)果,換句話說,就是小錯(cuò)誤。
因此,在N維狀態(tài)空間中移動會造成小錯(cuò)誤或大錯(cuò)誤。損失函數(shù)能將權(quán)重域映射到錯(cuò)誤值的函數(shù)。在n+1空間里,人們的大腦很難想象這樣的函數(shù)。但是,對于N = 2是個(gè)特殊情況。
訓(xùn)練神經(jīng)網(wǎng)絡(luò)包括找到最小的損失函數(shù)。為什么是最佳最小值而不是全局最小值?其實(shí)是因?yàn)檫@個(gè)函數(shù)通常是不可微分的,所以只能借助一些 梯度下降技術(shù)在權(quán)重域中游蕩,并避免以下情況:
做出太大的改變,可能你還沒意識到就錯(cuò)過最佳最小值
做出太小的改變,你可能會卡在一個(gè)不太好的局部最小值
不容易,對吧?這就是深度學(xué)習(xí)的主要問題,也解釋了為什么訓(xùn)練階段可能要花數(shù)小時(shí)、數(shù)天甚至數(shù)周。
這就是為什么硬件對于此任務(wù)至關(guān)重要,同時(shí)也解釋了為什么經(jīng)常需要暫停,考慮不同的方法和配置參數(shù)來重新開始。
現(xiàn)在回到網(wǎng)絡(luò)的一般結(jié)構(gòu),這是一堆層。第一層是輸入數(shù)據(jù) (x),而最后一層是輸出數(shù)據(jù) (y)。
中間的層可以是零個(gè)、一個(gè)或多個(gè)。它們被稱為隱藏層,深度學(xué)習(xí)中的“深度”一詞恰好指的是網(wǎng)絡(luò)可以有許多隱藏層,因此可能在訓(xùn)練期間找到更多關(guān)聯(lián)輸入和輸出的特征。
提示:在20世紀(jì)90年代,你會聽說過多層網(wǎng)絡(luò)而不是深度網(wǎng)絡(luò),但這是一回事。現(xiàn)在,越來越清楚的是,篩選層離輸入層越遠(yuǎn)(深),就能越好地捕捉抽象特征。
學(xué)習(xí)過程
在學(xué)習(xí)過程開始時(shí),權(quán)重是隨機(jī)設(shè)置的,因此第一層中的給定輸入集將傳送并生成隨機(jī)(計(jì)算)輸出數(shù)據(jù)。將實(shí)際輸出數(shù)據(jù)與期望輸出數(shù)據(jù)進(jìn)行比較;其差異就是網(wǎng)絡(luò)誤差(損失函數(shù))的度量。
然后,此錯(cuò)誤用于調(diào)整生成它的連接權(quán)重,此過程從輸出層開始,逐步向后移動到第一層。
調(diào)整的量可以很小,也可以很大,并且通常在稱為學(xué)習(xí)率的因素中定義。
這種算法稱為反向傳播,并在Rumelhart,Hinton和Williams研究之后,于1986年開始流行。
記住這個(gè)名字:杰弗里·辛頓 (Geoffrey Hinton),他被譽(yù)為“深度學(xué)習(xí)的教父”,是一位孜孜不倦的科學(xué)家,為他人指引前進(jìn)方向。例如,他現(xiàn)在正在研究一種名為膠囊神經(jīng)網(wǎng)絡(luò) (Capsule Neural Networks) 的新范式,聽起來像是該領(lǐng)域的另一場偉大革命!
反向傳播旨在通過對訓(xùn)練每次集中迭代的權(quán)重進(jìn)行適當(dāng)?shù)男U?,來逐漸減少網(wǎng)絡(luò)的整體誤差。另外,減少誤差這個(gè)步驟很困難,因?yàn)椴荒鼙WC權(quán)重調(diào)整總是朝著正確的方向進(jìn)行最小化。
簡而言之,你戴著眼罩走來走去時(shí),在一個(gè)n維曲面上找到一個(gè)最小值:你可以找到一個(gè)局部最小值,但永遠(yuǎn)不知道是否可以找到更小的。
如果學(xué)習(xí)率太低,則該過程可能過于緩慢,并且網(wǎng)絡(luò)也可能停滯在局部極小值。另一方面,較高的學(xué)習(xí)率可能導(dǎo)致跳過全局最小值并使算法發(fā)散。
事實(shí)上,訓(xùn)練階段的問題在于,錯(cuò)誤只多不少!
現(xiàn)狀
為什么這個(gè)領(lǐng)域現(xiàn)在取得如此巨大的成功?
主要是因?yàn)橐韵聝蓚€(gè)原因:
訓(xùn)練所需的大量數(shù)據(jù)(來自智能手機(jī)、設(shè)備、物聯(lián)網(wǎng)傳感器和互聯(lián)網(wǎng))的可用性
現(xiàn)代計(jì)算機(jī)的計(jì)算能力可以大大縮短訓(xùn)練階段(訓(xùn)練階段只有幾周甚至幾天的情況很常見)
想了解更多?這里有幾本好書推薦:
亞當(dāng)?吉布森(Adam Gibson)和 喬?!づ撂厣↗osh Patterson)所著的《深度學(xué)習(xí)》,O’Reilly媒體出版社。
莫希特·賽瓦克(Mohit Sewark)、默罕默德·禮薩·卡里姆(Md Rezaul Karim)和普拉蒂普·普賈里(Pradeep Pujari)所著的《實(shí)用卷積神經(jīng)網(wǎng)絡(luò)》, Packt出版社。
審核編輯 :李倩
?
評論
查看更多