小長假來聽聽 NN 的故事吧。
本文參考:這個地址不錯饶深,深入淺出講深度學(xué)習(xí)的,推薦感興趣的朋友看一下逛拱。
當(dāng)你聽到深度學(xué)習(xí),你想到了什么台猴?
Deep Learning is about Neural Networks朽合。
1. 神經(jīng)網(wǎng)絡(luò)
在之前寫過的一篇文章中也有神經(jīng)網(wǎng)絡(luò)的簡要概述俱两。輕松看懂機器學(xué)習(xí)十大常用算法
Neural Networks 適合一個input可能落入至少兩個類別里
NN 由若干層神經(jīng)元,和它們之間的聯(lián)系組成
第一層是 input 層曹步,最后一層是 output 層
在 hidden 層 和 output 層都有自己的 classifier
input 輸入到網(wǎng)絡(luò)中宪彩,被激活,計算的分?jǐn)?shù)被傳遞到下一層讲婚,激活后面的神經(jīng)層尿孔,最后output 層的節(jié)點上的分?jǐn)?shù)代表屬于各類的分?jǐn)?shù),下圖例子得到分類結(jié)果為 class 1
同樣的 input 被傳輸?shù)讲煌墓?jié)點上筹麸,之所以會得到不同的結(jié)果是因為各自節(jié)點有不同的weights 和 bias
模型通過比較預(yù)測和實際的誤差活合,并不斷地調(diào)整 weights 和 bias,進(jìn)而使得預(yù)測與實際的誤差越來越小物赶,預(yù)測效果越來越好白指,這個過程叫做 training。
2. 為什么需要神經(jīng)網(wǎng)絡(luò)酵紫?
上面說到告嘲,神經(jīng)網(wǎng)絡(luò)是由好多個分類器構(gòu)成的網(wǎng)絡(luò),那一個分類器也可以分類奖地,為什么需要一個網(wǎng)絡(luò)的分類器呢橄唬?
就是為了對付復(fù)雜的模式。相比簡單的分類器如 SVM参歹,神經(jīng)網(wǎng)絡(luò)就是可以識別出復(fù)雜的模式轧坎。
當(dāng)數(shù)據(jù)中的模式越來越復(fù)雜,每一層需要的 node 會呈指數(shù)級增長泽示。
隨著數(shù)據(jù)復(fù)雜度的增加缸血,可以采用相應(yīng)的模型。
為什么深度神經(jīng)網(wǎng)絡(luò)可以識別復(fù)雜的模式呢械筛?
就是因為它可以把一個復(fù)雜的模式捎泻,分解為很多個簡單的模式。
例如要識別人臉埋哟,可以先把眼鏡笆豁,鼻子,嘴識別出來赤赊,再組合成一個臉闯狱。
3. 什么問題選擇什么神經(jīng)網(wǎng)絡(luò)呢?
對于非監(jiān)督學(xué)習(xí)問題抛计,主要使用 RBM哄孤,Autoencoders。
對于監(jiān)督學(xué)習(xí)問題吹截,例如文字處理瘦陈,圖像識別凝危,物體識別,語音識別晨逝,主要使用下圖相應(yīng)的模型蛾默。
時間序列問題可以用 Recurrent 網(wǎng)絡(luò)。
4. 為什么神經(jīng)網(wǎng)絡(luò)最近幾年才特別火捉貌?
神經(jīng)網(wǎng)絡(luò)現(xiàn)在可以做很復(fù)雜的問題如人臉識別支鸡,但是在2006年以前甚至都無法解決一個簡單的問題,原因就是 vanishing gradient(梯度消失)趁窃。
當(dāng)梯度很大的時候牧挣,下滑速度就快,相反如果這個坡很平緩棚菊,那移動的速度也就慢浸踩。
在下圖神經(jīng)網(wǎng)絡(luò)中,可以看到越靠前的層次统求,梯度越小检碗,越靠后,梯度越大码邻,所以前面幾層不容易訓(xùn)練折剃。
前面幾層是用來識別一些基礎(chǔ)的重要的簡單的pattern的,到后面的層次中重組像屋,如果前面出錯了怕犁,后面也會出錯。
在用 Back Propagation 訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時候己莺,其中一個節(jié)點的梯度誤差來源于后面的所有點奏甫,如果多個小于1的數(shù)相乘,這個數(shù)會越來越小凌受,所以會造成梯度向量越來越小阵子。
在2006-2007年,由Hinton胜蛉,Lecun挠进,Benjio發(fā)表的一些關(guān)于 Restricted Boltzmann Machines 的論文開始,使這個問題得到了改善誊册。
5. Restricted Boltzmann Machines 是什么领突?
Geoff Hinton 發(fā)表了 RBM 的論文,這個貢獻(xiàn)也使他被稱為深度學(xué)習(xí)之父案怯。
RBM 是 Feature Extractor Neural Nets 家族即 Autoencoders 的一員君旦,可以通過重建 inputs 來自動學(xué)習(xí)數(shù)據(jù)中的 pattern。
RBM 有兩層,有個限制條件是于宙,同一層的node不可以有聯(lián)系浮驳。它將 inputs 編碼成數(shù)字集悍汛,在回溯的時候捞魁,又把數(shù)字解碼成 inputs 的原來狀態(tài)。而且RBM不需要訓(xùn)練的數(shù)據(jù)是labeled离咐。
weights 和 bias 在 forward 和 backward 的時候都很重要谱俭,它使得網(wǎng)絡(luò)知道哪些 feature 對于識別模式起到更重要的作用。
forward 的時候宵蛀,在 hidden 層可以決定哪些需要被激活昆著,哪些不需要。
backward 的時候术陶,在 visible 層凑懂,回溯的結(jié)果會和實際的input比較來評價模型。
6.為什么RBM可以改善梯度消失的問題呢梧宫?
是怎么避免 vanishing gradient 的問題的呢接谨,就是不用 Back propagation,而是用 Deep Belief Nets 替代塘匣。
DBN 的網(wǎng)絡(luò)是典型的多層神經(jīng)網(wǎng)絡(luò)脓豪,但是 training 的時候很不同。
一個 DBN 可以被看成是一個 RBM 棧忌卤,RBM 的一個 hidden 層就是下一個 RBM 的 visiable 層扫夜。
第一個 RBM 就是要盡可能準(zhǔn)確地重建 inputs。
第一個 RBM 的 hidden 層作為下一個 RBM 的 visiable 層驰徊,第二個是用第一個的 output 作為訓(xùn)練數(shù)據(jù)笤闯,直到所有層都走一遍。
很重要的一點棍厂,每一個 RBM 層都會學(xué)習(xí)整個 inputs颗味。而不是像圖像識別時,每一層負(fù)責(zé)一部分 feature勋桶,最后幾層再組裝起來脱衙。
通過這一步初始的訓(xùn)練之后,RBM 就可以識別出數(shù)據(jù)中固有的 pattern例驹。
但是卻不知道這些 pattern 是什么捐韩,所以需要監(jiān)督式學(xué)習(xí)和一些有標(biāo)簽的數(shù)據(jù)來給 pattern 命名,不過這些數(shù)據(jù)不需要特別多鹃锈。
我是 不會停的蝸牛 Alice
85后全職主婦
喜歡人工智能荤胁,行動派
創(chuàng)造力,思考力屎债,學(xué)習(xí)力提升修煉進(jìn)行中
歡迎您的喜歡仅政,關(guān)注和評論垢油!