周志華《機器學習》課後習題解答系列(六):Ch5.7 - RBF網路實驗
相關答案和原始碼託管在我的Github上:PY131/Machine-Learning_ZhouZhihua.
5.7. RBF神經網路實驗
注:本題程式基於Python實現(這裡檢視完整程式碼和資料集)。
1. RBF網路基礎
RBF網路採用RBF(Radial Basis Function函式)作為隱層神經元啟用函式,是一種區域性逼近神經網路,下面先分析其啟用函式RBF,然後分析RBF神經網路的結構。
1.1. 徑向基函式(RBF)
徑向基函式是一類取值依賴樣本於到中心點距離的函式,本題基於常用的高斯徑向基函式(gaussian RBF)開展實驗。下面是高斯徑向基函式形式書p108式(5.19):
這裡的 β 為尺度係數, c_i 為中心點(維度由輸入決定),函式的取值取決於樣本 x 到中心點的距離(2-範數),該函式的引數為 (β, c_i)。
如下圖示為高斯徑向基函式示意圖(繪圖程式):
1.2. RBF網路
RBF神經網路一般指一種單隱層前饋神經網路,它使用徑向基函式作為隱層神經元啟用函式,而輸出是隱層輸出的線性組合,網路結構示意如下:
參考書p108式(5.18),該神經網路的輸出為:
進一步分析,一般函式均可表示成一組基函式的線性組合,而RBF網路相當於用隱層神經元構建了這樣一組基函式,由輸出層進行線性組合,從而實現函式逼近的功能。
2. RBF網路實現
這裡RBF神經網路建模的過程分一下兩步:
1. 確定神經元對應的高斯徑向基函式中心 c ;
2. 利用BP演算法來訓練剩餘引數 w, β ;
下面依次討論其實現:
2.1. RBF中心獲取
RBF的中心引數 c 的獲取方法有以下一些:
- 從輸入資料樣本中抽取,這就要求輸入樣本具有較好的代表性;
- 自組織生成,如聚類法生成,採用聚類中心來作為中心引數 c ,同時根據各中心的距離來初始化尺度係數 β ;
2.2. RBF-BP演算法推導
參考神經網路基礎 - Python程式設計實現標準BP演算法,這裡隱層啟用函式為RBF,輸出層神經元數為 1 ,啟用函式為 y=f(x)=x 。
BP演算法採用梯度下降法進行引數迭代更新,參考書p102-103,進行RBF-BP演算法中基於梯度下降的引數更新推導如下:
在完成基礎推導之後,給出RBF網路的BP演算法如下所示:
2.3. RBF-BP演算法實現
樣例程式碼如下:
def BackPropagateRBF(self, x, y):
'''
the implementation of special BP algorithm on one slide of sample for RBF network
@param x, y: array and float, input and output of the data sample
'''
# dependent packages
import numpy as np
# get current network output
self.y = self.Pred(x)
# calculate the gradient for hidden layer
g = np.zeros(self.h_n)
for h in range(self.h_n):
g[h] = (self.y - y) * self.b[h]
# updating the parameter
for h in range(self.h_n):
self.beta[h] += self.lr * g[h] * self.w[h] * np.linalg.norm(x-self.c[h],2)
self.w[h] -= self.lr * g[h]
3. 異或問題實驗
3.1. 準備資料
首先基於numpy.array生成異或資料,該資料為2輸入,1輸出,如下所示:
樣例程式碼:
# train set
X_trn = np.random.randint(0,2,(100,2))
y_trn = np.logical_xor(X_trn[:,0],X_trn[:,1])
樣例資料:
>>> X_trn
array([[0, 0],
[1, 1],
...
>>> y_trn
array([False, False, ...
3.2. 引數之-RBF中心點
這裡由於採用異或資料,其中心點可以簡單設定如下:
centers = np.array([[0,0],[0,1],[1,0],[1,1]])
同時取隱節點數目為4。
3.3. 生成模型並訓練
樣例程式碼如下:
# construct the network
rbf_nn = RBP_network() # initial a BP network class
rbf_nn.CreateNN(4, centers, learningrate=0.05) # build the network structure
# parameter training(這裡迭代10次)
for i in range(10):
rbf_nn.TrainRBF(X_trn, y_trn)
繪製出訓練過程中的均方誤差變化曲線如下圖:
由上圖可以看到,曲線收斂十分迅速,說明這裡的RBF網路訓練異或資料集十分輕鬆,這也和我們所生成的資料的完備無誤有關。
3.4. 測試模型
按照訓練集資料生成方法生成測試集資料,通過模型預測,得出結果如下:
test error rate: 0.000
即測試錯誤率為0,可知我們的模型預測十分準確的,泛化效能優秀(主要得益於XOR預測模型對RBF網路來說太過簡單)。
4. 小結
回顧RBF網路工作原理,如參考書p108式(5.18)-(5.19)。RBF網路建模類似於非線性模型中的基函式建模,進一步,我們可將其與廣義可加模型聯絡起來。RBF網路採用徑向基函式作為單隱層啟用函式(即核函式),又可將其與SVM with RBF kernel聯絡起來。
回顧RBF網路實現過程,我們或可將該方法視為一種半監督的學習方法,具體有:
- step 1:無監督的學習,從資料中獲取中心引數,常用聚類方法;
- step 2:有監督的學習,基於資料訓練引數,過程一般基於BP演算法實現;
5. 參考
下面列出一些參考內容:
相關文章
- 機器學習-周志華機器學習
- 周志華西瓜書《機器學習》機器學習
- 機器學習定義及基本術語(根據周志華的《機器學習》概括)機器學習
- 重磅!周志華《機器學習》手推筆記來了!機器學習筆記
- 華中科技大學軟體學院機器學習課程實驗機器學習
- 機器學習 第六節 第二課機器學習
- 周志華西瓜書《機器學習》第三章線性模型機器學習模型
- 機器學習導圖系列(5):機器學習模型及神經網路模型機器學習模型神經網路
- CSAPP 第六章課後習題APP
- 機器學習 | 吳恩達機器學習第九周學習筆記機器學習吳恩達筆記
- 吳恩達機器學習系列11:神經網路吳恩達機器學習神經網路
- 機器學習筆試題精選(六)機器學習筆試
- 周志華西瓜書《機器學習筆記》學習筆記第二章《模型的評估與選擇》機器學習筆記模型
- 北大張志華:機器學習就是現代統計學機器學習
- 《計算機網路微課堂》實驗5 交換機的自學習演算法計算機網路演算法
- 機器學習之神經網路機器學習神經網路
- 計算機網路自頂向下方法:第六章: 鏈路層和區域網 課後複習題計算機網路
- 網路安全與機器學習(二):網路安全任務如何結合機器學習?機器學習
- 周志華《機器學習》西瓜書精煉版筆記來了!16 章完整版機器學習筆記
- 《C和指標》第三章課後習題解答指標
- 【卷積神經網路學習】(4)機器學習卷積神經網路機器學習
- 華南農業大學C語言程式設計課後習題(第六章)C語言程式設計
- 【機器學習】--貝葉斯網路機器學習
- 機器學習整理(神經網路)機器學習神經網路
- 機器學習如何改善網路安全?機器學習
- 機器學習-習題(二)機器學習
- 機器學習-習題(一)機器學習
- 吳恩達機器學習課程 筆記5 神經網路吳恩達機器學習筆記神經網路
- 《計算機網路實驗課程》——Wireshark實驗計算機網路
- python課後習題Python
- 微課|玩轉Python輕鬆過二級:第2章課後習題解答(3課,79題)Python
- 學習網路安全能解決哪些現實問題?網路安全學習
- 機器學習實驗出錯總結機器學習
- 從機器學習新手到工程師:Coursera 公開課學習路徑指南機器學習工程師
- TensorFlow系列專題(二):機器學習基礎機器學習
- TensorFlow系列專題(一):機器學習基礎機器學習
- 機器學習課程筆記機器學習筆記
- 吳恩達機器學習系列0——初識機器學習吳恩達機器學習
- 學習python第六節課Python