目錄
1. 非線性激活層到底是個什麼樣的東西?
其實,對於一個數據,利用非線性激活層對其進行激活,其實是從該數據的信息中提取出其潛在的稀疏性(降維,從原先M->N),但是這種提取的結果是否正確,就要分情況討論了。維度低的數據其實就是這麼一種情況:其信息的冗餘度高的可能性本來就低,如果強行對其進行非線性激活(維度壓縮),則很有可能丟失掉有用信息,甚至丟失掉全部信息(輸出爲全0)。
2. 使用激活層的原則:
-
對含有冗餘信息的數據使用非線性激活(如ReLU),對不含冗餘信息的數據使用線性激活(如一些線性變換)。
-
兩種類型的激活交替靈活使用,以同時兼顧非線性和信息的完整性。
-
由於冗餘信息和非冗餘信息所攜帶的有用信息是一樣多的,因此在設計網絡時,對內存消耗大的結構最好是用在非冗餘信息上。
3. ResNet之所以work的本質原因
ResNet本質上就幹了一件事:降低數據中信息的冗餘度。
具體說來,就是對非冗餘信息採用了線性激活(通過skip connection獲得無冗餘的identity部分),然後對冗餘信息採用了非線性激活(通過ReLU對identity之外的其餘部分進行信息提取/過濾,提取出的有用信息即是殘差)。
其中,提取identity這一步,就是ResNet思想的核心。
從特徵複用的觀點來看,提取identity部分,可以讓網絡不用再去學習一個identity mapping,而是直接學習residual。這就輕鬆愉快多了:站在巨人的肩膀上,做一點微小的工作什麼的...
既然說了ResNet解決的痛點,也順便多說幾句它帶來的好處:
-
由於identity之外的其餘部分的信息冗餘度較高,因此在對其使用ReLU進行非線性激活時,丟失的有用信息也會較少,ReLU層輸出爲0的可能性也會較低。這就降低了在反向傳播時ReLU的梯度消失的概率,從而便於網絡的加深,以大大地發揮深度網絡的潛能。
-
特徵複用能加快模型的學習速度,因爲參數的優化收斂得快(從identity的基礎上直接學習殘差,總比從頭學習全部來得快)。
最後是兩個小tips:
-
如果一個信息可以完整地流過一個非線性激活層,則這個非線性激活層對於這個信息而言,相當於僅僅作了一個線性激活。
-
解決由非線性激活導致的反向傳播梯度消失的竅門,就是要提高進行非線性激活的信息的冗餘度。