機器學習(Coursera吳恩達)(四)(神經網絡待學)

機器學習(Coursera吳恩達)(四)(神經網絡待學)

標籤(空格分隔): 機器學習 神經網絡 Neural-Network


神經網絡(NEURAL NETWORK)

無論是線性迴歸還是邏輯迴歸,當特徵太多時,計算負荷會非常大。
如果特徵非常多時,那麼構建僅構建二次項就會有很多種組合,Cn2 種組合。
比如我們有100*100的圖片,那麼僅灰度就有10000個特徵。將其組合的話就無法有效使用邏輯迴歸處理。
神經網絡是用計算機模擬人的大腦,模擬神經元的鏈接使算法自動學習所有特徵。

模型表示

1神經元模型.png-104.8kB

神經網絡分爲輸入層,隱藏層和輸出層。是許多邏輯單元按不同層級組織起來的網絡,每一層的輸出變量都是下一層的輸入變量。

2神經網絡模型.png-91.9kB

給每一層都類似邏輯迴歸加入一個偏差單元(bias unit)x0=1,a0(1)=1
* ai(j) 表示第j層的第i個激活單元
* θ(j) 表示從第j層映射到j+1層是的權重矩陣,例如θ(1) 表示第一層到第二層的權重矩陣。其尺寸爲:以j+1層激活單元數量爲行數,第j層激活單元數+1爲列數。例如上圖中θ(1) 就是3*4。(θs(j+1)s(j) , x是第j層的爲(s(j)+1)1 尺寸,最後輸出就是s(j+1)1
對於以上模型,激活單元和輸出分別爲:

3g_theta_x.png-27kB

這樣的算法成爲前向傳播算法(forward propagation)。

向量化表示

4矩陣表示.png-97kB

4矩陣表示3.png-56.1kB

4矩陣表示2.png-140.8kB

在最後輸出層就是類似logistic regression,就是把LR的原始特徵x變成了現在的特徵a。

我們可以把a一系列看爲有x特徵得到個更高級別的進化體,並且是由x決定的。因爲梯度是下降的所以a是變化的,也就是這個特徵變得越來越高效。而且這些特徵遠比x2 要有用,也能更好的預測。

特徵

單純的邏輯迴歸中,我們用到的就是獲得的原始特徵及其多種組合,有時候這樣的特徵不能完全表現特性,因此需要用其他的方法獲得更有用的特徵。
神經網絡就是這樣的方法,我們可以看做第二層的項就是有第一層原始特徵通過學習得到的更搞笑的特徵集。
神經網絡可以解決簡單的邏輯迴歸無法處理的表達。
比如LR可以處理AND、OR、NOT,但是對XOR的複雜程度無法輕易解決,但是NN可以。
首先XOR可以變換表達形式:
5XOR變換表達.png-90.2kB

然後用兩個NOT 和AND表示兩層了LR,也就組合成了多個lR神經元的神經網絡:第一層到第二層爲得到特徵的NOT,也就是更高級的特徵a,然後使用a作爲新的特徵得到最後的hθ(x)
6XOR.png-141.2kB

多分類

當我們要處理的是多分類的情況。輸出神經元就不是一個節點了,要對應多種分類以多個節點輸出。每個節點的輸出是當前分類的概率。選取最接近1的那個分類作爲預測分類。

7多分類.png-147.3kB

神經網絡的學習

代價函數???

  • m表示樣本個數,每個樣本包含一組輸入x和一組輸出y
  • L表示神經網絡層數
  • SI 表示每層的神經元個數,Sl 表示輸出層神經元個數
  • SL 表示最後一層中處理單元的個數。

將神經網絡分類問題分爲:二分類和多分類。
二分類:SL=0,y=0or1 表示哪一類;
多分類:SL=k,yi=1 表示分在哪一類。

邏輯迴歸中輸出只有一個標量,稱爲標量。但是在神經網絡中,假設函數有K個輸出因此hθ(x)RK,(hθ(x))i=ithoutput
代價函數$J(\Theta)=-\frac{1}{m}[\sum_{i=1}^m \sum_{k=1}^ky_k^{(i)}log(h_\Theta(x^{(i)}))k+(1-y_k^{(i)})log(1-h\Theta(x^{(i)}))_k)] \
+ \frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_l+1}(\Theta_{ji}^{(l)})^2$

這個式子是把k個LR的誤差進行累加,對每一個分別計算代價函數,再通過累加寫爲一個函數。每一層都是對這一層的。對每行特徵都有K個不同的結果,然後利用循環在K個預測中選擇可能性最高的一個,將其與y中的實際數據進行比較。
正則化的那一項只是排除了每一層θ0 之後,每一層的θ 矩陣的和。最裏層的循環j循環所有的行(由sl+1 層的激活單元數決定),循環i則循環所有的列,由改成(sl 層)的激活單元數所決定。即:hθ(x) 與真實值之間的距離爲每個樣本-每個類輸出的加和,對參數進行regularization的bias項處理所有參數的平方和。

BP傳播算法

爲了計算代價函數的偏導數Θij(l)J(Θ) 。需要用反向傳播算法。也就是首先計算最後一層的誤差,然後再一層一層反向求出各層的誤差,直到倒數第二層。

一個例子:

1例子.png-290.7kB

1、 我們從最後一層開始計算誤差,用δ 表示誤差:δ(4)=a(4)y
2、 利用這個誤差計算前一層的誤差:

δ(3)=(Θ(3))Tδ(4)g(z(3))
其中g(z(3)) 是sigmoid函數的導數,g(z(3))=a(3)(1a(3)) 。而(θ(3))Tδ(4) 則是權重導致的誤差的和。
3、 計算第二層的誤差:
δ(2)=(Θ(2))Tδ(3)g(z(2))

我們就有了所有誤差的表達式後,便可以計算代價函數的偏導數了,假設λ=0 ,有:
Θij(i)J(Θ)=aj(l)δl(l+1)
  • l表示目前計算的第幾行
  • j表示目前計算的層中激活單元的下標,也將是下一層的第j個輸入變量的下標
  • i表示下一層中誤差單元的下標,是受到權重矩陣中第i行影響的下一層中的誤差單元的下標。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章