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

2021-07-25 14:24:34 字數 1102 閱讀 5591

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

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

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

fig1. 自編碼器網路結構(來自網路)

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

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

fig2. 稀疏自編碼器模型(來自網路)

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

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

其實可以和svm比較:

1. 原本使用的是比較少的隱含節點數,相當於使用線性核的svm。這時候模型很簡單,但是它的表現能力是比較有限的。

2. 增加節點的數量,相當於使用了多項式核的svm。這時候的模型表示能力變強了,但是容易過擬合(如用9項式來擬合10個樣本點)。

3. 新增限制,讓每次得到的表達code盡量係數,相當於給多項式的svm新增了正則約束項(如還是用9項式來擬合10個樣本點,但是我們限制之後只能有兩項不是0),這是就不會再過擬合了。

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

為什麼要用MAC位址,而不直接使用IP位址?

你已經有了手機號,為什麼還要乙個身份證號呢?mac位址就像身份證一樣,它只唯一的標誌乙個網路介面,它沒有被設計為具有定址功能。全世界存在各種各樣的異構網路,它們使用不同的硬體位址 網路的異構性體現 要使這些異構網路能夠進行通訊,就需要非常複雜的硬體位址轉換工作,因此由使用者主機來完成這件事幾乎是不可...

為什麼要用資料庫建表語句而不直接在工具裡建表呢?

而且當資料量很多時,你增加乙個字段,並且要對這個字段進行插入操作,用工具乙個個插入就很麻煩 這個時候就要用資料庫建表語句就很方便。而且資料量多時,你進行這個操作可能花費十分鐘,而這時有別人也對這張表就行了操作 這個時候就會對錶造成鎖表,有了語句也可以查一查執行過什麼操作 資料字典 比如在頁面裡的下拉...

為什麼要用vuex,而不是直接使用全域性變數

這個問題問的太好了 我迅速要回你們 每乙個 vuex 應用的核心就是store 倉庫 它包含著你的應用中大部分的狀態 state 狀態管理有5個核心 state getter mutation action module 1 vuex的儲存時響應式的,當元件vue中store更改,相應的元件用到的地...