對ResNet本質的一些思考

目錄

1. 非線性激活層到底是個什麼樣的東西?

2. 使用激活層的原則:

3. ResNet之所以work的本質原因


1. 非線性激活層到底是個什麼樣的東西?

其實,對於一個數據,利用非線性激活層對其進行激活,其實是從該數據的信息中提取出其潛在的稀疏性(降維,從原先M->N),但是這種提取的結果是否正確,就要分情況討論了。維度低的數據其實就是這麼一種情況:其信息的冗餘度高的可能性本來就低,如果強行對其進行非線性激活(維度壓縮),則很有可能丟失掉有用信息,甚至丟失掉全部信息(輸出爲全0)。

 

2. 使用激活層的原則:

  1. 含有冗餘信息的數據使用非線性激活(如ReLU),對不含冗餘信息的數據使用線性激活(如一些線性變換)。

  2. 兩種類型的激活交替靈活使用,以同時兼顧非線性和信息的完整性。

  3. 由於冗餘信息和非冗餘信息所攜帶的有用信息是一樣多的,因此在設計網絡時,對內存消耗大的結構最好是用在非冗餘信息上。

 

3. ResNet之所以work的本質原因

ResNet本質上就幹了一件事:降低數據中信息的冗餘度。

具體說來,就是對非冗餘信息採用了線性激活(通過skip connection獲得無冗餘的identity部分),然後對冗餘信息採用了非線性激活(通過ReLU對identity之外的其餘部分進行信息提取/過濾,提取出的有用信息即是殘差)。

其中,提取identity這一步,就是ResNet思想的核心。

特徵複用的觀點來看,提取identity部分,可以讓網絡不用再去學習一個identity mapping,而是直接學習residual。這就輕鬆愉快多了:站在巨人的肩膀上,做一點微小的工作什麼的...

既然說了ResNet解決的痛點,也順便多說幾句它帶來的好處:

  1. 由於identity之外的其餘部分的信息冗餘度較高,因此在對其使用ReLU進行非線性激活時,丟失的有用信息也會較少,ReLU層輸出爲0的可能性也會較低。這就降低了在反向傳播時ReLU的梯度消失的概率,從而便於網絡的加深,以大大地發揮深度網絡的潛能。

  2. 特徵複用能加快模型的學習速度,因爲參數的優化收斂得快(從identity的基礎上直接學習殘差,總比從頭學習全部來得快)。

最後是兩個小tips:

  1. 如果一個信息可以完整地流過一個非線性激活層,則這個非線性激活層對於這個信息而言,相當於僅僅作了一個線性激活。

  2. 解決由非線性激活導致的反向傳播梯度消失的竅門,就是要提高進行非線性激活的信息的冗餘度

摘自:對ResNet本質的一些思考

 

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