1. 程式人生 > >機器學習:神經網絡之表達

機器學習:神經網絡之表達

聚類 推薦系統 處理 mar 添加 gist 課程筆記 像素 ...

**************************************

註:本系列博客是博主學習Stanford大學 Andrew Ng 教授的《機器學習》課程筆記。博主深感學過課程後,不進行總結非常easy遺忘。依據課程加上自己對不明確問題的補充遂有此系列博客。

本系列博客包含線性回歸、邏輯回歸、神經網絡、機器學習的應用和系統設計、支持向量機、聚類、將維、異常檢測、推薦系統及大規模機器學習等內容。

**************************************

神經網絡:表達

非線性假說

使用非線性的多項式項,可以幫助我們建立更好的分類模型。

如果我們有許多的特征。比如大於100個變量,我們希望用這 100個特征來構建一個非線性的多項式模型,結果將是數量很驚人的特征組合。即便我們僅僅採用兩兩特征的組合(x1x2+x1x3+x1x4+...+x2x3+x2x4+...+x99x100),我們也會有接近 5000個組合而成的特征。這對於一 般的邏輯回歸來說須要計算的特征太多了。

技術分享

這種問題還有非常多,比如在計算機視覺的汽車檢測問題中。對於一副汽車圖片來說,你能夠輕易的辨別出這是一輛汽車,可是在計算機或者相機“眼裏”。這僅僅是一堆像素的數字矩陣而已:

技術分享

所以,對於汽車檢測問題,我們須要一堆汽車圖片和一堆非汽車圖片作為訓練集,訓練一個用於汽車檢測的分類器

技術分享

假使我們採用的都是 50x50 像素的小圖片。而且我們將全部的像素視為特征,則會有 2500 個特征,假設我們要進一步將兩兩特征組合構成一個多項式模型,則會有約 25002/2 個(接近3百萬個)特征。

普通的邏輯回歸模型,不能有效地處理這麽多的特征。這時候我們須要神經網絡。


技術分享

我們模擬大腦中的神經元結構建立一個簡單的模型-Logistic unit:

技術分享

我們設計出了類似於神經元的神經網絡,效果例如以下:

技術分享

當中x1,x2,x3是輸入單元(input units),我們將原始數據輸入給它們。 a1,a2,a3是中間單元。它們負責將數據進行處理,然後呈遞到下一層。 最後是輸出單元,它負責計算 h(x)。

神經網絡模型是很多邏輯單元依照不同層級組織起來的網絡,每一層的輸出變量都是下一層的輸入變量。上圖為一個3 層的神經網絡,第一層成為輸入(InputLayer),最後一層稱為輸出層(Output Layer)。中間一層成為隱藏層(Hidden Layers)。我們為每一層都添加了一個偏差單位(bias unit)。

技術分享

模型表示二

相對與使用循環來編碼。利用向量化的方法會使得計算更為簡便。

技術分享

技術分享

事實上神經網絡就像是 logistic regression。只只是我們把 logistic regression 中的輸入向量[x1~x3]變成了中間層的[a(2)1~a(2)3], 我們能夠把a0,a1,a2,a3看成更為高級的特征值,也就是 x0,x1,x2,x3的進化體,而且它們是由x與決定的,由於是梯度下降的,所以a是變化的,而且變得越來越厲害。所以這些更高級的特征值遠比只將 x次方厲害。也能更好的預測新數據。

這就是神經網絡相比於邏輯回歸和線性回歸的優勢。

特征和直觀解釋

我們的目標是利用神經網絡實現一個邏輯代數中的同或運算,因此首先介紹一下同或運算和異或運算:
同或邏輯和異或邏輯是僅僅有兩個邏輯變量的邏輯函數。假設當兩個邏輯變量A和B同樣時,邏輯函數F等於1。否則F等於0。這樣的邏輯關系稱為同或。

反之。假設當兩個邏輯變量A和B相異時,邏輯函數F等於1,否則F等於0。這樣的邏輯關系稱為異或。

技術分享

將其相應到一個非線性分類器,例如以下圖所看到的:

技術分享

先介紹三種最主要的邏輯運算(與邏輯運算、或邏輯運算、非邏輯運算),同一時候分別介紹其相應的神經網絡實現。最後將這幾種主要的邏輯運算組合,形成終於的同或邏輯運算的神經網絡。

技術分享

技術分享

技術分享

左圖的神經元(三個權重分別為-30,20,20)能夠被視為作用同於邏輯與(AND)。中圖的神經元(三個權重分別為-10,20,20)能夠被視為作用等同於邏輯或(OR)。右圖的神經元(兩個權重分別為 10,-20)能夠被視為作用等同於邏輯非(NOT):

技術分享

我們能夠利用神經元來組合成更為復雜的神經網絡以實現更復雜的運算。

比如我們要實現 XNOR 功能(輸入的兩個值必須一樣,均為 1 或均為0)。即 XNOR=(x1ANDx2)OR((NOTx1)AND(NOTx2))

技術分享

上圖中第二層隱藏網絡a1和a2分別代表了A And B和Not A And Not B。a1和a2又做了一次或邏輯運算就得到了同或邏輯運算。

該神經網絡相應的輸出與同或運算的真值表同樣。

多分類問題

當我們有不止兩種分類時(也就是 y=1,2,3….)。比方我們要訓練一個神經網絡算法來識別路人、汽車、摩托車和卡車。在輸出層我們應該有 4個值。

比如,第一個值為1或0用於預測是否是行人,第二個值用於推斷是否為汽車。 輸入向量x有三個維度,兩個中間層,輸出層4個神經元分別用來表示4類,也就是每
一個數據在輸出層都會出現[a b c d]T,且a,b,c,d中僅有一個為1,表示當前類。以下是該神經網絡的可能結構演示樣例:

技術分享

當向量的某個元素為1,其它為0時,代表分類結果為某個為1元素所相應的類別。這與之前邏輯回歸中的多類分類表示不同,在邏輯回歸中,輸出y屬於類似於{1, 2, 3,4}中的某個值,而非一個向量。因此。假設要訓練一個多類分類問題的神經網絡模型,訓練集是這種:

技術分享

******************

作者:hao_09

時間:2015/8/13

文章地址:http://blog.csdn.net/lsh_2013/article/details/47454079

******************





機器學習:神經網絡之表達