1. 程式人生 > >周志華《機器學習》課後習題解答系列(六):Ch5.7

周志華《機器學習》課後習題解答系列(六):Ch5.7

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. 參考

下面列出一些參考內容:

相關推薦

機器學習課後習題解答系列Ch5.7

5.7. RBF神經網路實驗 注:本題程式基於Python實現(這裡檢視完整程式碼和資料集)。 1. RBF網路基礎 RBF網路採用RBF(Radial Basis Function函式)作為隱層神經元啟用函式,是一種區域性逼近神經

機器學習課後習題解答系列Ch5.8

SOM神經網路實驗 注:本題程式分別基於Python和Matlab實現(這裡檢視完整程式碼和資料集)。 1 基礎概述 1.1 SOM網路概念 SOM(Self-Organizing Map,自組織對映)網路是一種無監督的競爭型神經

機器學習課後習題解答系列Ch5.10

卷積神經網路實驗 - 手寫字元識別 注:本題程實現基於python-theano(這裡檢視完整程式碼和資料集)。 1. 基礎知識回顧 1.1. 核心思想 卷積神經網路(Convolutional Neural Network, C

機器學習課後習題解答系列Ch5.5

這裡的程式設計基於Python-PyBrain。Pybrain是一個以神經網路為核心的機器學習包,相關內容可參考神經網路基礎 - PyBrain機器學習包的使用 5.5 BP演算法實現 實驗過程:基於PyBrain分別實現標準

機器學習課後習題解答系列Ch2

本章概要 本章講述了模型評估與選擇(model evaluation and selection)的相關知識: 2.1 經驗誤差與過擬合(empirical error & overfitting) 精度accuracy、訓練誤差(經驗誤差)

機器學習課後習題解答系列目錄

對機器學習一直很感興趣,也曾閱讀過李航老師的《統計學習導論》和Springer的《統計學習導論-基於R應用》等相關書籍,但總感覺自己缺乏深入的理解和系統的實踐。最近從實驗室角落覓得南京大學周志華老師《機器學習》一書,隨意翻看之間便被本書內容文筆深深吸引,如獲至寶

機器學習課後習題解答系列Ch4

本章概要 本章講述決策樹(decision tree),相關內容包括: 決策樹生成(construction) 子決策(sub-decision)、遞迴生成演算法(basic algorithm)、最優劃分屬性、純度(purity)、

機器學習課後習題解答系列Ch3.3

思路概要 程式設計實現對率迴歸: * 採用sklearn邏輯斯蒂迴歸庫函式實現,通過檢視混淆矩陣,繪製決策區域來檢視模型分類效果; * 自己程式設計實現,從極大化似然函數出發,採用梯度下降法得到最優引數,然後嘗試了隨機梯度下降法來優化過程。

機器學習課後習題解答系列Ch6

本章概要 本章講述支援向量機(Support Vector Machine,SVM),相關內容包括: 支援向量分類器(SVM classifier) 支援向量(support vector)、間隔(margin)、最大間隔(maximum

Hulu機器學習問題與解答系列 | 第PCA算法

iad 效果 其中 struct 並不是 系統資源 gic 文章 協方差 好久不見,Hulu機器學習問題與解答系列又又又更新啦! 你可以點擊菜單欄的“機器學習”,回顧本系列前幾期的全部內容,並留言發表你的感悟與想法,說不定會在接下來的文章中看到你的感言噢~ 今天

機器學習總結

Lecture3 線性模型 基本形式 一般向量形式: 優點: 線性迴歸 廣義線性模型 對數機率迴歸 由對數機率函式確定 $\boldsymbol{\omega}$ 和 $b$

機器學習 筆記

第1章 1.4歸納偏好 學習演算法自身的歸納偏好與問題是否相配,往往會起到決定作用。 對於上面這句話:你的輸入資料被怎麼處理,最終得到什麼結果,我認為偏好指的就是這個處理的過程。線性非線性?那些feature忽略掉?怎麼利用這些資料?更具體一些,你用網路處理,還是傳統方法,資料的分佈和你

機器學習 效能度量

2.5 效能度量 效能度量(performance measure)是衡量模型泛化能力的評價標準,在對比不同模型的能力時,使用不同的效能度量往往會導致不同的評判結果。本節除2.5.1外,其它主要介紹分類模型的效能度量。 2.5.1 最常見的效能度量 在迴歸任務中,即預測連續值的問題,最常

機器學習

盜用weka 緒論 1.2基本術語 學習任務大致分為兩類: 監督學習:分類、迴歸 無監督學習:聚類 泛化:訓練得到的模型適用於新樣本的能力 機器學習領域最重要的國際學術會議是國際機器學習會議 (ICML)、國

機器學習筆記

http://blog.sina.cn/dpool/blog/s/blog_cfa68e330102ycy9.html?md=gd https://www.cnblogs.com/shiwanghualuo/p/7192678.html 首先的階段由卷積層和池化層組成,卷積的節點組織在特徵對映塊

[機器學習]ID3決策樹 詳細計算流程 機器學習 筆記 原創Excel手算方法

1.用到的主要三條熵公式: 1.1 資訊熵 詳情見夏農資訊理論 概率越平衡 事件所含有的資訊量越大 1.2 條件熵 代表某一屬性下不同分類的資訊熵之和 1.3 資訊增益 等於資訊熵減去條件熵,從數值上,越大的資訊增益在資訊熵一定的情況下,代表條件熵越小,條件熵越

-機器學習-筆記- 強化學習

#### 任務與獎賞 ####   “強化學習”(reinforcement learning)可以講述為在任務過程中不斷摸索,然後總結出較好的完成任務策略。   強化學習任務通常用馬爾可夫決策過程(Markov Decision Process,簡稱M

機器學習筆記

新人一枚,既是機器學習的初學者,也是首次發部落格。謹以此記錄我的學習體會,做一些總結。望與大家共同學習、共同進步。文中若有內容錯誤或有措詞不嚴謹之處,望大家不吝指出。謝謝! 機器學習中的基本概念 基本術語 根據上圖我們可以用一個三維空間來了解以

機器學習讀後總結 第10、11章

降維與度量學習 什麼是降維學習 降維是一種分類演算法,它是一種解決維數災難的重要途徑。例如二維資料經過投影變為一維資料從而更好的表徵資料的特徵,然後再進行識別;這就利用了降維的方法。 K鄰近學習 k近鄰學習是一種監督學習演算法,它給定測試樣本,基於某種距離度量找出與訓練集

機器學習讀後總結 第三章

線性模型 基本形式 線性模型試圖學得一個通過屬性的線性組合來進行預測的函式,即f(x)=w1x1+w2x2+…+wdxd+b,w和b學得之後,模型就得以確定,而w直觀表達了各屬性在預測中的重要性。線性迴歸 線性迴歸試圖學得一個線性模型以儘可能準確的預測實值輸出標記。線性迴歸