林軒田之機器學習課程筆記( distilling hidden features之radial basis function network)(32之30)

歡迎轉載,可以關注博客:http://blog.csdn.net/cqy_chen
深度學習書籍推薦:https://item.jd.com/12128543.html
深度學習課程推薦:https://www.coursera.org/learn/neural-networks/home/welcome
TensorFlow:http://www.tensorfly.cn/ http://www.tensorflow.org/
題目可能不全,因爲有字數限制,不好意思,可以參考:
https://www.csie.ntu.edu.tw/~htlin/course/ml15fall/

概要

上節講到了深度學習,就是神經網絡的延伸,神經網絡的一個困難點就是初始值的設定,介紹了denoising的自動編碼機。本節將介紹RBF的網絡結構。

RBF網絡假設空間

RBF在SVM中的kernel轉換已經有提到,回憶SVM的公式:

gsvm(x)=sign(svαnyneγ||xxn||2+b)

一個理解是我們將數據投影到無限多維,然後找一條胖胖的邊界進行切分。
一個理解是這就是一堆高斯函數的線性組合,這些高斯函數的中心點在支持向量這裏。
高斯kernel也稱之爲RBF(radio basis function)kernel。
radio:表示我們計算的點x只與某些中心點有關,這裏就表示只與支持向量有關
basis function:表示我們需要對最後的轉換做的一些簡單組合。這裏是線性組合。
上面公式拆分下;
gn(x)=yneγ||xxn||2gsvm(x)=sign(svαngn(x)+b)

而RBF 網絡則是上面的延伸,和普通網絡對比如下:
這裏寫圖片描述
區別就在於隱層不一樣,普通的網絡採用的內積方式,而RBF網絡採用的是距離函數。最後都是進行一個線性組合。
RBF網絡表示成:
h(x)=output(m=1MβmRBF(x,μm)+b)

所以這裏主要是有兩個參數需要決定,中心點和線性組合係數,當然還有選擇什麼樣的中心函數,高斯函數,還是啥。以及最後的輸出函數採用什麼變化。
在SVM中,中心點採用的是支持向量,輸出採用的是sign。

kernel:是一種相似性的轉換,透過在z空間的內積進行計算。可以有各種各樣的kernel函數。
RBF:也是一種相似性的轉換,是透過某些中心點的距離來實現。
而高斯函數是兩者的交集。
一般來說這種距離相似性的計算,離的越近,相似度應該越高

RBF網絡學習算法

上面已經說到有兩個比較核心的參數,哪些點作爲中心點,轉換之後的線性組合係數。
對於找中心點,一種方法是既然不好找,那就設置所有的點都是中心點。
1)中心點數量m等於點的數量。μm=xm
2)相當於給每一個點都一票,進行投票。βm=ym
3)最後根據這些票數計算結果,如果是一個二分類問題,如下:

h(x)=sign(m=1Nymeγ||xxm||2)

這個的意思就是給每個點都一票,新來的一個點算算到所有點的距離,距離越近轉換之後結果越大。
由於高斯函數衰減比較快,所以通過高斯變換轉換,越遠的點計算基本爲0。所以新的點結果基本依賴最近的一些點。
1. 當新來的點只依賴最近的一個點,這個算法就是最鄰近算法。
2. 當新來的點依賴最近的k個點,就是knn算法了

這是一種很懶的做法,因爲沒有計算中心點,所有資料點都是中心嘛。

當不是採用的分類模型,而是迴歸模型呢?公式如下:

h(x)=m=1Nymeγ||xxm||2

這就是直接將數據通過高斯函數進行轉換,然後進行線性迴歸。
線性迴歸的解我們知道是:
β=(ZZT)1ZTy

我們有這樣的結論,當採用高斯變換的時候,且每筆資料不同,那麼Z 一定可逆。又因爲,Z 是一個對稱的矩陣。那麼:
β=Z1y

那麼如果進行預測:
這裏寫圖片描述
這樣輸入任意一個xn 就會得到原來的數據。所以:Ein=0
這不是就容易過擬合麼?
那怎麼辦?加正則化啊。
加上正則化之後,結果變成了:
β=(ZZT+λ)1ZTy

對比下kernel的ridge regression:
β=(K+λ)1y,Kkernel

那麼再回憶下SVM:
這裏寫圖片描述
SVM可以看做是減少中心點來達到正則化效果。所以要想算法更加的魯棒可以選擇少量的點作爲中心點。

k-means算法

要找到一些點作爲中心點,那麼一個想法就是分羣。說白了就是聚類嘛。這樣的話我們需要聚類算法能滿足以下幾點:
1)將數據分成m類,S1,S2,S3......Sm ,一個點只屬於一個類別。
2) 每一個類有一箇中心點,um
3)在同一類中,我們希望umx1x2
這樣聚類的損失可以是:

Ein(u1,u2......um;S1,S1......Sm)=1Nn=1Nm=1M[xn=um]||xnum||2

我們這裏是一個組合最佳化的問題。我們就先固定一組,然後優化另一個。
如果固定中心點。那麼現在的問題就是如何分類:
1)那就是遍歷數據和中心點的距離然後選擇最近的中心點作爲這個點羣。
2)那麼分羣確定完畢,現在就是要確定中心點了,分好的羣選取一箇中心點。
這裏寫圖片描述
新的羣的中心點就是該羣的點的均值。

交替的求解變量,這就是k-means算法。也可以參考:
http://blog.csdn.net/cqy_chen/article/details/71080478

那麼求得了這些中心點,然後就可以放到RBF中,作爲中心點。

這就是 k-means + RBF

k-means與RBF網絡算法實踐

上面介紹了k-means算法,看看實際怎麼運行的:
這裏寫圖片描述
經過了有限次的運行,會得到還不錯的結果。
這裏寫圖片描述
如果k-means挑選了比較合理的中心點,那麼通過RBF還會得到不錯的結果。
如果所有的點都是中心點呢?
這裏寫圖片描述
一般不會採用所有的點都是中心點的RBF網絡。

歡迎轉載,可以關注博客:http://blog.csdn.net/cqy_chen

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