文章目錄
在系列課程開始之初的四節課的SVM中,提到了徑向基函數(Radial Basis Function Network,RBF),可能與上一節課講到的神經網絡存在一定聯繫,本節課嘗試將二者聯繫起來。
k-NN與k-Means的區別:
參考自博客:點擊此處。
14.1 RBF Network Hypothesis
首先回顧一下Gaussian SVM:
它要做的事情是在無限多維的空間中尋找一個“胖胖的”邊界;從最後得到的假設函數來看,Gaussian SVM要做的就是將一堆Gaussian 函數做線性組合,並且這些Gaussian 函數以支持向量(Support Vector)爲中心,最終得到假設函數 。Gaussian kernel 也叫作徑向基函數(Radial Basis Function Network,RBF),接下來看一下其中每部分所表示的函數:
-
radical(徑向):表示Gaussian函數只和新的樣本點 到中心點 (支持向量的座標)的距離有關;
-
basis function(基函數):表示Gaussian 函數,最終的假設函數 就是由這些基函數線性組合而成的。
-
如果令 表示原來SVM假設函數中的一部分,即 ,其中括號內(指數項)表示新的樣本點 與支持向量的座標 之間的距離。距離越近,表示權重越大,相當於對 投更多的票數,反之亦然。其物理意義是新的樣本點 與支持向量的座標 的距離決定了 與 的接近程度。
如果距離越近,則 對 的權重影響越大,反之亦然。即Gaussian SVM的假設函數 就是由所有的的支持向量決定的 線性組合而成的,組合係數爲權重 。
徑向基函數(RBF)網絡實際上就是 Gaussian SVM的延伸,目的就是要找到所有 的線性組合,得到更好的融合模型。之所以成爲RBF網絡,是因爲與之前的神經網絡類似:
由上圖可知,二者的異同在於:
- 隱藏層不同,神經網絡是計算輸入數據與權重向量的內積,然後通過激活函數激活;而RBF網絡是計算輸入數據與支持向量的距離,然後通過Gaussian函數激活;
- 輸出層的組合方式相同:都是對不同假設函數的線性融合(aggregation)。
徑向基函數網絡實際上是神經網絡的一種。RBF網絡的假設函數可以表示爲:
其中,將支持向量(中心)記爲 ,函數 表示計算距離的高斯函數, 表示權重係數(線性組合的係數)。不難發現,其中的關鍵就是 和 。 表示支持向量的個數, 表示支持向量的座標, 表示計算完SVM對偶(Dual)以後, 的值。至此,學習目標就變爲已知RBF和輸出,來計算最好的中心點座標 和權重係數 。
以上對RBF的介紹是從kernel開始的,接下來從相似性的角度分析。kernel實際上是將原來X空間的兩個點轉換到Z空間,然後計算其內積,來衡量二者的相似性。正是因爲這樣的計算方式,導致kernel要受到Mercers’s condition的保障,即它所產生的矩陣是半正定的。關於kernel的選擇,不止Gaussian kernel一種,也可以選擇多項式(polynomial)kernel。
kernel實際上通過將兩向量從X空間轉換到Z空間,通過計算二者的內積,衡量了二者之間的相似性。而RBF則是直接在X空間中,計算距離來衡量相似性,距離越近,相似性越高,反之亦然。因此kernel和RBF都可以看做衡量相似性的方法,而Guassian RBF則是二者的交集。此外,衡量相似性的函數還有很多,比如神經網絡中的神經元,其衡量的是輸入和輸出權重之間的相似性。
由以上分析可知,RBF網絡中的距離相似性是一種很好的特徵轉換方法。
習題1:
14.2 RBF Network Learning
上一小節介紹了RBF網絡的基本概念,其核心思想是找到一些中心(支持向量),然後將這些中心對應的RBF函數進行線性組合,線性組合的權重爲 。
那麼中心應該如何確定呢?首先看一個簡單的例子,將所有樣本點都當做中心點,這樣的RBF網絡稱爲 full RBF Network。其物理意義表示每一箇中心 點都對它周圍的樣本點 有影響,產生影響的大小表示 ,用投標來解釋就是說它有幾票。假設所有的中心點都有同樣的影響力,設爲1,,在二分類問題中,相當於根據距離中心點的遠近來做投票,距離越近票數越多,反之亦然。然後通過 通過計算新的樣本點 與 之間的距離來衡量相似性,最後把這些融合起來,得到最終的假設函數。full RBF 網絡實際上是一種惰性的求解 的方法。這與機器學習中的另一個算法——k近鄰算法(kNN)有很大的關聯性:
在上述計算中,計算的是高斯函數的值,這些值有大有小,最後進行投票,得到假設函數 ,如果要找與新的樣本點 最接近的中心 ,因爲高斯函數是中間高兩側低的函數,在兩側衰減很快,在求和函數 中,最大值處的高斯函數值對其影響最大,所以一個思路是不做所有樣本點的求和動作,而只計算最近或幾個距離較近的中心點的距離。這在表達式中表示就是用最近的中心點來決定 ,這就變成了selection而非aggregation。
其物理意義是說,比如在二分類問題中,假設函數 要判斷新的樣本 是正類還是負類,只需要找到距離該樣本點最近的中心點 所屬的類別即可,即用 的類別表示 的類別,實現類別預測。 這樣的模型稱爲 nearest neighbor model。在此基礎上,將以上算法延伸,可以找出 個距離最近的中心點,然後再進行aggregation操作,就變爲熟悉的 k近鄰算法。這樣會比最近鄰算法的效果更好。易知,k近鄰算法也是一種惰性的方法。這種方法容易訓練,但推理比較費時。
下面看一下在迴歸問題中,如何最佳化權重係數 。
首先計算 ( 的行向量),每個元素爲RBF函數計算的新的樣本與各個中心點的距離,則 爲 的對稱矩陣(Symmetric Matrix),這裏有一個性質,如果所有的樣本 都不相同,則Gaussian RBF求解得到的 爲可逆矩陣(Inverse Matrix)。如果 是對稱矩陣,則有 ,代入到 的最佳化公式 中,可以很輕易地推導出 。以上是針對 full RBF Network推導的,接下來看一下引入正則化的情況:
如果不加正則化,則由假設函數 預測的輸出都是原來輸入數據的期望輸出 ,這使得假設函數在樣本上的誤差 ,這些課程學到這裏,很容易想到這是不好的結果,因爲很有可能導致overfit,因此考慮加入使用正則化方法加以限制。
加入正則化之後,相當於把原來的線性迴歸改爲嶺迴歸(rige regression)。這樣轉化之後, 的矩陣 就是原來SVM中的 Gaussian kernel matrix 。由此得到 regularized full RBFNet 的表達式,此外還可以推導出 kernel ridge regression。
兩者的區別在於Regularization不同,kernel ridge regression是對無限維的空間中做Regularization;在Regularized full RBFNet中是對有限的空間做Regularization,Regularization不同,做的結果就會有一些不一樣。下面看另一種Regularization方法:
回顧之前SVM算法,在計算假設函數時,只使用了支持向量來運算,達到了正則化效果;同樣地,在RBF中也可以借鑑這樣的思想,即使得中心點的數量 遠遠小於樣本數量 。這樣同樣可以達到正則化的效果,即限制了中心點的數量和投票權重。其物理意義是從中心點 中挑出有代表性的中心來。
習題2:
14.3 k-Means Algorithm
要從中心點中找出好的代表,就變爲一個聚類問題(Clustering Problem)。本小節介紹一下爲什麼在RBFNet中需要找出這些代表。
一種想法是將一個點變爲一羣相似的點,即聚類,這是一個典型的無監督學習算法。具體地:
算法核心是使用不同的集合 將樣本點 分開。我們希望如果新的樣本點 和 都屬於同一個集合 ,則表示這個集合的中心點與這兩個樣本點都很接近;如果相隔很遠,則用RBF函數算出的距離很不一樣,中心點 就不能夠代表這個集合。
聚類的誤差衡量使用平方誤差。上式表示對於每個樣本點 與聚類中心的距離。接下來就需要找出一種分羣方式,即找出 和中心點 ,可以將樣本點分得很好,使得誤差函數最小化。接下來看一下聚類算法如何優化:
不難發現,這是一個困難的優化問題,因爲包含兩個部分,一個部分是分羣,一個部分是計算中心點 ,即既需要組合最佳化,又需要數值最佳化。一種想法是對兩組變量交替優化,即固定一組變量,優化另一組變量,交替進行。流程如下:
首先固定中心點 ,然後計算每一個樣本 在一個集合中與各個中心點的距離,選出距離最近的那一個作爲集合 的中心點即可。接下來看集合固定的情況:
如果集合 固定,則問題變爲無約束優化問題(unconstrained optimization)。通過計算偏導數(梯度)來求解最佳的 。其值等於集合 中所有樣本點 的平均值。至此,可以得到 k均值聚類算法(k-Means Algorithm)。其僞代碼如下:
注意,這裏的 k 與 k近鄰算法中的 k 不同。
- 隨機選取 k 個樣本 來初始化聚類中心 ;
- 分別固定集合和聚類中心,進行交替迭代優化(kMeans Algorithm)。
k-Means算法是通過交替最小化的最受歡迎的聚類算法。使用 k-Means 的RBFNet的算法流程如下:
其核心有兩個,分別是:
使用了 k-Means 與我們上節課介紹的自動編碼器(autoencoder)類似,都是特徵轉換(feature transform)方法。在最優化過程中,要求解的參數有k-Means聚類算法的集合個數M、Gaussian函數參數 等。我們可以採用validation的方法來選取最佳的參數值。
習題3:
14.4 k-Means and RBF Network in Action
本小節通過demo來演示k-Means和RBFNet算法。
在該例中,k-Means算法首先隨機選擇四個中心點(k=4),通常如果 k 選擇得當並且有比較好的初始化方法,則該算法可以得到很好的表現。
首先,進行第一次更新,根據選擇的四個中心點,對輸入空間的樣本點進行劃分:
然後,重新計算聚類中心,計算方式是對集合中的點取平均值。
接下來進行第二次迭代,根據新計算的聚類中心,重新確定樣本點歸屬與哪個集合:
然後再計算聚類中心:
迭代到第六次時,可以將四類樣本清晰的劃分出來。
聚類中心選取是任意的,接下來看一下不同數量的初始化聚類中心的影響:
可以看出,k-Means算法對k初始值的選取很敏感。接下來將 k-Means 與 RBFNet結合,做二分類的結果:
可以看出,如果選擇合適的聚類中心數量,可以得到不錯的結果。接下來看一下full RBF Network的情形:
full RBFNet 得到的分隔超平面比較複雜,並且計算量很大,在實際應用中不太常用。
習題4:
樣本數量比較少的時候,正則化強度應該大一些。
Summary
本節課主要介紹了徑向基函數網絡(Radial Basis Function Network,RBFNet)。RBFNet的假設函數就是計算樣本之間相似度的Gaussian函數,替代了神經網絡中的神經元,也使其名字中network的由來。RBFNet的學習過程也是對更假設函數進行線性組合的過程,權重爲 。然後介紹了k近鄰算法和k均值聚類算法,以及引入k均值算法的RBFNet。最後用過一個demo演示了其工作流程,並說明了k-Menas算法中k的選取很重要。