神經網絡的前世

小長假來聽聽 NN 的故事吧。

本文參考:這個地址不錯,深入淺出講深度學習的,推薦感興趣的朋友看一下。

當你聽到深度學習,你想到了什么?

Deep Learning is about Neural Networks。

1. 神經網絡

在之前寫過的一篇文章中也有神經網絡的簡要概述。輕松看懂機器學習十大常用算法

Neural Networks 適合一個input可能落入至少兩個類別里

NN 由若干層神經元,和它們之間的聯系組成
第一層是 input 層,最后一層是 output 層

在 hidden 層 和 output 層都有自己的 classifier

input 輸入到網絡中,被激活,計算的分數被傳遞到下一層,激活后面的神經層,最后output 層的節點上的分數代表屬于各類的分數,下圖例子得到分類結果為 class 1

同樣的 input 被傳輸到不同的節點上,之所以會得到不同的結果是因為各自節點有不同的weights 和 bias

模型通過比較預測和實際的誤差,并不斷地調整 weights 和 bias,進而使得預測與實際的誤差越來越小,預測效果越來越好,這個過程叫做 training。

2. 為什么需要神經網絡?

上面說到,神經網絡是由好多個分類器構成的網絡,那一個分類器也可以分類,為什么需要一個網絡的分類器呢?

就是為了對付復雜的模式。相比簡單的分類器如 SVM,神經網絡就是可以識別出復雜的模式。

當數據中的模式越來越復雜,每一層需要的 node 會呈指數級增長。
隨著數據復雜度的增加,可以采用相應的模型。

為什么深度神經網絡可以識別復雜的模式呢?

就是因為它可以把一個復雜的模式,分解為很多個簡單的模式。
例如要識別人臉,可以先把眼鏡,鼻子,嘴識別出來,再組合成一個臉。

3. 什么問題選擇什么神經網絡呢?

對于非監督學習問題,主要使用 RBM,Autoencoders。

對于監督學習問題,例如文字處理,圖像識別,物體識別,語音識別,主要使用下圖相應的模型。

時間序列問題可以用 Recurrent 網絡。

4. 為什么神經網絡最近幾年才特別火?

神經網絡現在可以做很復雜的問題如人臉識別,但是在2006年以前甚至都無法解決一個簡單的問題,原因就是 vanishing gradient(梯度消失)

當梯度很大的時候,下滑速度就快,相反如果這個坡很平緩,那移動的速度也就慢。

在下圖神經網絡中,可以看到越靠前的層次,梯度越小,越靠后,梯度越大,所以前面幾層不容易訓練。
前面幾層是用來識別一些基礎的重要的簡單的pattern的,到后面的層次中重組,如果前面出錯了,后面也會出錯。

在用 Back Propagation 訓練神經網絡的時候,其中一個節點的梯度誤差來源于后面的所有點,如果多個小于1的數相乘,這個數會越來越小,所以會造成梯度向量越來越小。

在2006-2007年,由Hinton,Lecun,Benjio發表的一些關于 Restricted Boltzmann Machines 的論文開始,使這個問題得到了改善。

5. Restricted Boltzmann Machines 是什么?

Geoff Hinton 發表了 RBM 的論文,這個貢獻也使他被稱為深度學習之父。

RBM 是 Feature Extractor Neural Nets 家族即 Autoencoders 的一員,可以通過重建 inputs 來自動學習數據中的 pattern。

RBM 有兩層,有個限制條件是,同一層的node不可以有聯系。它將 inputs 編碼成數字集,在回溯的時候,又把數字解碼成 inputs 的原來狀態。而且RBM不需要訓練的數據是labeled。

weights 和 bias 在 forward 和 backward 的時候都很重要,它使得網絡知道哪些 feature 對于識別模式起到更重要的作用。

forward 的時候,在 hidden 層可以決定哪些需要被激活,哪些不需要。
backward 的時候,在 visible 層,回溯的結果會和實際的input比較來評價模型。

6.為什么RBM可以改善梯度消失的問題呢?

是怎么避免 vanishing gradient 的問題的呢,就是不用 Back propagation,而是用 Deep Belief Nets 替代。

DBN 的網絡是典型的多層神經網絡,但是 training 的時候很不同。

一個 DBN 可以被看成是一個 RBM 棧,RBM 的一個 hidden 層就是下一個 RBM 的 visiable 層。

第一個 RBM 就是要盡可能準確地重建 inputs。


第一個 RBM 的 hidden 層作為下一個 RBM 的 visiable 層,第二個是用第一個的 output 作為訓練數據,直到所有層都走一遍。


很重要的一點,每一個 RBM 層都會學習整個 inputs。而不是像圖像識別時,每一層負責一部分 feature,最后幾層再組裝起來。

通過這一步初始的訓練之后,RBM 就可以識別出數據中固有的 pattern。
但是卻不知道這些 pattern 是什么,所以需要監督式學習和一些有標簽的數據來給 pattern 命名,不過這些數據不需要特別多。


我是 不會停的蝸牛 Alice
85后全職主婦
喜歡人工智能,行動派
創造力,思考力,學習力提升修煉進行中
歡迎您的喜歡,關注和評論!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容