什麼是極限學習機?
極限學習機(ELM, Extreme Learning Machines)是一種前饋神經網絡,最早由新加坡南洋理工大學黃廣斌教授於2006年提出。其發表的文章中對於極限學習機的描述如下:
該算法具有良好的泛化性能以及極快的學習能力
極限學習機和標準神經網絡的區別
ELM 不需要基於梯度的反向傳播來調整權重,而是通過 Moore-Penrose generalized inverse來設置權值。
標準的單隱藏層神經網絡結構如下:
單隱藏層神經網絡
其計算過程如下:
輸入值乘以權重值加上偏置值進行激活函數計算對每一層重複步驟1~3計算輸出值誤差反向傳播重複步驟1~6而 ELM 則對其進行了如下改進:去除步驟4;用一次矩陣逆運算替代步驟6;去除步驟7。
極限學習機計算過程
具體地,ELM 計算過程如下:
式中:
L 是隱藏單元的數量;N 是訓練樣本的數量;
beta 是第 i 個隱藏層和輸出之間的權重向量;w 是輸入和輸出之間的權重向量;g 是激活函數;b 是偏置向量;x 是輸入向量。
極限學習機的計算過程與標準反向傳播神經網絡十分類似,但是隱藏層與輸出之間的權重矩陣是偽逆矩陣。將上式可以簡寫為:
式中:
m 是輸出的數量;H 是隱藏層輸出矩陣;T 是訓練集目標矩陣;
ELM 主要相關理論
定理一:
定理二:
定理三:
了解了上述定理後,現在我們要做的是定義我們的代價函數。如果輸入權重和隱層層偏差可以隨機選擇,那麼SLFN是一個線性系統。
由於我們考慮的 ELM 是一個線性系統,那麼可以設計優化函數:
由於 H 是可逆的,所以計算如下:
ELM 算法
ELM 算法主要過程有:
wi,bi,i=1,L 隨機初始化計算隱藏層輸出 H計算輸出權重矩陣利用 beta 在新的數據集上進行預測 TPython 應用案例見github: burnpiro/elm-pure
其中,基礎的 ELM 算法就能夠在 MNIST 數據集達到 91%以上的準確率,並且在 intel i7 7820X CPU 平臺上通過 3s 就能夠計算完成。
性能對比
首次提出 ELM 的論文中,於2006年通過 Pentium 4 1.9GHz CPU 用 ELM 方法對不同的數據集進行了計算,結果如下:
很明顯梯度下降比矩陣反轉需要更長的訓練時間。此結果表中最重要的信息是準確性和節點數。在前兩個數據集中,可以看到作者使用了不同大小的BP來獲得與ELM相同的結果。在第一種情況下,BP網絡的大小是原來的5倍,在第二種情況下,BP網絡的大小是原來的2倍。也說明了 ELM 方法在逼近數據集時有很高的精確性。
本文也對兩個具有代表性的數據集(CIFAR-10, MNIST)進行了分析,結果如下:
總結
ELM 算法雖然沒有傳統神經網絡的準確度高,但是可以被用於需要即時計算的場景中。