爲什麼要用稀疏自編碼而不直接設更少的隱層節點

剛學自編碼,以下是本人關於題目問題的一點思考。

自編碼器是一種非常簡單的BP神經網絡,是一種無監督學習算法。

使用一個三層(只有一個隱含層)的自編碼網絡,然後設置隱含節點的數量少於輸入層節點,就能夠輕鬆地實現特徵降維。如圖:


Fig1. 自編碼器網絡結構(圖片來自網絡)

refer to: Deep Learning(深度學習)學習筆記整理系列之(四)

如果隱藏節點比可視節點(輸入、輸出)少的話,由於被迫的降維,自編碼器會自動習得訓練樣本的特徵(變化最大,信息量最多的維度)。但是如果隱藏節點數目過多,甚至比可視節點數目還多的時候,自編碼器不僅會喪失這種能力,更可能會習得一種“恆等函數”——直接把輸入複製過去作爲輸出。這時候,我們需要對隱藏節點進行稀疏性限制。



Fig2. 稀疏自編碼器模型(圖片來自網絡)

這裏說當隱含節點數量太大的時候,需要通過引入正則項(比如上圖的L1限制)來使得每次表達的code儘量稀疏。

那麼這樣和用更少的隱含節點相比,有什麼用呢?

其實可以和SVM比較:
1. 原本使用的是比較少的隱含節點數,相當於使用線性核的SVM。這時候模型很簡單,但是它的表現能力是比較有限的。
2. 增加節點的數量,相當於使用了多項式核的SVM。這時候的模型表示能力變強了,但是容易過擬合(如用9項式來擬合10個樣本點)。
3. 添加限制,讓每次得到的表達code儘量係數,相當於給多項式的SVM添加了正則約束項(如還是用9項式來擬合10個樣本點,但是我們限制之後只能有兩項不是0),這是就不會再過擬合了。

總結就是: 使用了更多的隱含節點之後,模型具有了更強大表達能力;但是同時會導致過擬合的問題,所以需要通過添加約束條件來限制,這時候模型依然具有很強的表達能力(和少隱含節點的模型比),卻又避免了過擬合的問題。而且因爲實際上不爲0(或不接近0)的權值很少,所以網絡被迫用少量的節點來學習到網絡的整體信息,這些被學習到的特徵都非常有代表性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章