寬度學習(Broad Learning System)


寬度學習(Broad Learning System)

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/itnerd/article/details/82871734

一、寬度學習的前世今生

寬度學習系統(BLS) 一詞的提出源於澳門大學科技學院院長陳俊龍和其學生於2018年1月發表在IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS,VOL. 29, NO. 1 的一篇文章,題目叫《Broad Learning System: An Effective and Efficient Incremental Learning System Without the Need for Deep Architecture 》。文章的主旨十分明顯,就是提出了一種可以和深度學習媲美的寬度學習框架。

為什么要提出寬度學習? 眾所周知,深度學習中最讓人頭疼之處在於其數量龐大的待優化參數,通常需要耗費大量的時間和機器資源來進行優化。

寬度學習的前身實際上是已經被人們研究了很久的隨機向量函數連接網絡 random vector functional-link neural network (RVFLNN),如圖所示:
在這里插入圖片描述
咋一看這網絡結構沒有什么奇特之處,其實也對,就是在單層前饋網絡(SLFN)中增加了從輸入層到輸出層的直接連接。網絡的第一層也叫輸入層,第二層改名了,叫做增強層,第三層是輸出層。具體來看,網絡中有三種連接,分別是

  • (輸入層 => 增強層)加權后有非線性變換
  • (增強層 => 輸出層)只有線性變換
  • (輸入層 => 輸出層)只有線性變換

所以在RVFLNN中只有增強層 是真正意義上的神經網絡單元,因為只有它帶了激活函數,網絡的其他部分均是線性的。下面我們將這個網絡結構扭一扭:
在這里插入圖片描述
當我們把增強層和輸入層排成一行時,將它們視為一體,那網絡就成了由 A(輸入層+增強層)到 Y 的線性變換了!線性變換對應的權重矩陣 W 就是 輸入層加增強層 到 輸出層 之間的線性連接!!

這時你可能要問:那輸入層到增強層之間的連接怎么處理/優化?我們的回答是:不管它!!! 我們給這些連接隨機初始化,固定不變!

如果我們固定輸入層到增強層之間的權重,那么對整個網絡的訓練就是求出 A 到 Y 之間的變換 W,而 W 的確定非常簡單:W=A1YW = A^{-1}YW=A1Y
輸入 X 已知,就可以求出增強層 A;訓練數據的標簽已知,就知道了 Y。接下來的學習就是一步到位的事情了。

為什么可以這樣做?
深度學習費了老勁把網絡層數一加再加,就是為了增加模型的復雜度,能更好地逼近我們希望學習到的非線性函數,但是不是非線性層數越多越好呢?理論早就證明單層前饋網絡(SLFN)已經可以作為函數近似器了,可見增加層數並不是必要的。RVFLNN也被證明可以用來逼近緊集上的任何連續函數,其非線性近似能力就體現在增強層的非線性激活函數上,只要增強層單元數量足夠多,要多非線性有多非線性!

二、寬度學習系統(BLS)

在這里插入圖片描述
之前介紹的是RVFLNN,現在來看BLS,它對輸入層做了一點改進,就是不直接用原始數據作為輸入層,而是先對數據做了一些變換,相當於特征提取,將變化后的特征作為原RVFLNN的輸入層,這樣做的意義不是很大,只不過想告訴你:寬度學習可以利用別的模型提取到的特征來訓練,即可以可別的機器學習算法組裝。現在我們不把第一層叫做輸入層,而是叫它特征層。

當給定了特征 Z,直接計算增強層 H,將特征層和增強層合並成 A=[Z|H],豎線表示合並成一行。由於訓練數據的標簽 Y 已知,計算權重 W=A1YW = A^{-1}YW=A1Y 即可。實際計算時,使用嶺回歸 來求解權值矩陣,即通過下面的優化問題來解W(其中σ1=σ2=v=u=2\sigma_1=\sigma_2=v=u=2σ1=σ2=v=u=2):
在這里插入圖片描述
解得
在這里插入圖片描述
以上過程是一步到位,即當數據固定,模型結構固定,可以直接找到最優的參數 W。

然而在大數據時代,數據固定是不可能的,數據會源源不斷地來。模型固定也是不現實的,因為時不時需要調整數據的維數,比如增加新的特征。這樣一來,就有了針對以上網絡的增量學習算法。注意,寬度學習的核心在其增量學習算法,因為當數據量上億時,相當於矩陣 Z 或 X 有上億行,每次更新權重都對一個上一行的矩陣求偽逆 是不現實的!

增量學習的核心就是,利用上一次的計算結果,和新加入的數據,只需少量計算就能得進而得到更新的權重。
在這里插入圖片描述
例如:當我們發現初始設計的模型擬合能力不夠,需要增加增強節點數量來減小損失函數。這時,我們給矩陣 A 增加一列 a,表示新增的增強節點,得到[A|a],這時要計算新的權值矩陣,就需要求 [Aa]1[A|a]^{-1}[Aa]1,於是問題就轉化成分塊矩陣的廣義逆問題,得到了[Aa]1[A|a]^{-1}[Aa]1,則更新的權重為 Wnew=[Aa]1YW_{new} = [A|a]^{-1}YWnew=[Aa]1Y,具體解形式如下,可以看到,Wn+1W_{n+1}Wn+1中用到了更新之前的權值矩陣WnW_{n}Wn,因而有效地減少了更新權重的計算量。
在這里插入圖片描述
第一次計算權值是用的是 嶺回歸 算法,因為有迭代過程,可能計算時間稍長。但是第二次、三次……計算時都只涉及矩陣的乘法,所以權值矩陣的更新是非常迅速。相比深度學習的反復訓練,時常陷入局部最優無法自拔,寬度學習的優勢非常明顯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM