機器學習之——初識神經網絡

在討論神經網絡之前,我們先回顧一下之前的一系列討論。

之前我們已經討論過,非線性假設(Non-Linear Hypothesis),使用非線性的多項式能夠幫助我們建立更好的分類模型(Classification)。假設我們有非常多的特徵,例如大於10000個變量,我們希望用這10000個特徵來構建一個非線性的多項式模型,那麼結果將是數量非常驚人的特徵組合,即便我們只採用兩兩特徵的組合(x1x2+x1x3+x1x4+...+x9999x10000),我們也會有接近500000哥組合而成的特徵。這對於一般的邏輯迴歸(Logistic Regression)來說,需要計算的特徵太多了。

我們舉一個假設:

假設我們希望訓練一個模型來識別視覺圖像(例如識別一張圖片上是否是一輛汽車,Google之前做過一個根據YouTube的視頻來準確的識別出一隻貓),我們怎麼樣才能這樣做呢?一種方法是,我們利用很多汽車的圖片和很多非汽車的圖片,然後利用這些圖片上一個個像素的值來作爲特徵。

假如我們只選用灰度圖片,每個像素只有一個值(非RGB值),我們可以選取圖片上的兩個不同位置的兩個像素,然後訓練一個邏輯迴歸模型來利用這兩個像素的值來判斷圖片上是否是一輛汽車:


假如我們採用的都是50x50像素的小圖片,並且我們將所有的像素視爲特徵,則會有2500個特徵,如果我們要進一步將兩兩特徵組合構成一個多項式模型,則會有2500x2500/2(接近300萬)個特徵。普通的邏輯迴歸模型,不能有效的處理這麼多的特徵,這時候,我們就可以使用神經網絡。

那麼神經網絡是從何而來的呢?

神經網絡算法(Neural Network)源自於人類對大腦的模仿。在20世紀80到90年代被廣泛的使用過,之後的應用逐漸減少,直到最近幾年又變得開始流行起來。原因是,神經網絡是非常依賴計算能力的算法,在較早之前的應用時,由於計算機的計算能力瓶頸,導致一度消退,隨着計算機性能的不斷提高,神經網絡算法又成爲了很有效的一門技術。

神經網絡算法的目的是發現一個能夠模仿人類大腦學習能力的算法。有一個實驗,如果我們將視覺信號傳遞給大腦中負責其他感覺——如觸覺——的大腦皮層區,我們發現負責處理觸覺的大腦組織將能夠很快地學會如何處理視覺信號。我們就推斷,在大腦的不同組織不同神經之間,使用着一套學習算法,使得將外界的刺激作爲輸入,能夠對輸入進行相同的處理。


有另外一個案例,讓舌頭學會如何去“看”東西。再一個盲人的頭頂配置了一臺低像素的照相機,然後將照相機拍攝的照片的像素轉換爲不同的電極,每個像素都按照亮度被賦予一個不同的電壓值。結果隨着實驗的進行,這個盲人開始能夠利用舌頭看到眼前的東西。目前這一項技術正在逐漸的應用到幫助盲人恢復視覺上,例如Google、微軟。(希望我們中國也很快能夠有這樣一家造福社會的公司!)


爲了構建神經網絡模型,我們首先要思考:大腦中的神經網絡是什麼結構?

每一個神經元都可以被認爲是一個處理單元/神經核(Processing Unit/Nucleus),它含有許多輸入/樹突(Input/Dendrite),並且有一個輸出/軸突(Output/Axon)。神經網絡是由大量的神經元相互鏈接並通過電脈衝來交流的一個網絡結構。


神經網絡模型建立在需要的神經元智商,每一個神經元又是一個個學習模型。這些神經元,也叫激活單元(Activation Unit)採納一些特徵作爲輸入,並且根據本身的模型提供一個輸出。下面是一個以邏輯迴歸模型作爲自身學習模型的神經元的示例,在神經網絡中,參數也可以被稱之爲權重(Weight)


這一次我們先討論到這裏。下一次我們將討論,神經網絡模型的具體表達。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章