Resnet的加法變成減法會怎樣?Geng Young2020-12-07 03:19:11

不會怎麼樣,效果應該差啊不多。Pre-activation 的輸出是沒有符號 bias 的,因此加和減並沒有任何區別。ResNet 的目的是為了使每個 residual block 可以儘可能的接近 identity operator,顯然 identity 無論是加一個還是減一個無符號 bias 的量都可以做到。

Resnet的加法變成減法會怎樣?是知知小可愛鴨2020-12-08 03:25:34

看見你這個問題後我馬上嘗試了一波實驗,然而對於我的訓練任務loss無法收斂 - 。 - !

Resnet的加法變成減法會怎樣?zzzk2020-12-08 09:28:00

自問自答一下哈。

減法有兩種操作

一個是輸入input 減去殘差塊內的特徵,即

out = X - F(X)

另外一個是殘差塊內的特徵減去輸入input,即

out = F(X) - X

簡單跑了一個數據集實驗了一下,發現第一種方法模型還是可以收斂的,第二種方法訓練不了。

我的理解是第一種方法其實跟resnet的加法是等價的。因為殘差塊內的特徵有正有負,取+號和-號影響不大。

而第二種則是強行給輸入取反,可能影響到後面的relu啟用,進而導致不收斂

Resnet的加法變成減法會怎樣?aluea2021-03-30 12:38:56

不請自來

F(X)-X

假設三個隱層,全零初始化,輸入x來看前饋。

[X,-X,X,-X,X],F只是對這些輸出進行調整(殘差),邏輯上沒有影響。

但是存在relu這樣的啟用函式,負值是阻斷梯度的。

做完資料歸一化,第二層符號一反轉,直接暴斃。

如果不做歸一化,最好的情況,正值負值一半一半,那麼每層最多隻能更新一半引數,而且還是隔層更新,很難搞清楚這是在訓練什麼。

啟用函式換成tanh,應該可以。

Resnet的加法變成減法會怎樣?CW不要無聊的風格2021-03-30 14:16:26

這麼好的問題居然沒多少人來回答!?

結論先行,

若改為

x-F(x)

,則影響可能相對較小;相對地,若改為

F(x)-x

則影響應該較大,甚至於導致網路不收斂。

ResNet的理念與思想

來看:

H(x)=F(x)+x

,ResNet是要保留一個Identity mapping:x,

當x已是最優的時候F(x)將趨於被push到0。

這樣,繼續加深網路時,也能處於最優狀態而不輸於淺層網路,

解決了深度網路難最佳化的問題。

這麼看來,如果改為

x-F(x)

影響應該不會太大,其還是維護了identity mapping,只不過改變了深層的權重,可以看為

x+F

相對地,若改為

F(x)-x

,那麼Identity mapping將不再是Identity,可以看作為

G(x) = -x

H(x) = F(x)+G(x)=W(x)

,這。。已經失去了ResNet的樣子了,等效於一個普通的深度網路,以往深度網路難最佳化甚至退化的問題大機率會出現,從而容易導致網路不收斂。

梯度傳播

的角度來看:

在ResNet中,對於第

l

層的輸入與輸出,有:

x_{l+1}=F(x_{l})+x_{l}

遞迴計算,則第

L(L>l)

層:

x_{L}=\sum_{i=l}^{L-1}{F(x_{i})}+x_{l}

於是,loss反向傳播到第

l

層輸入的梯度:

\frac{\partial loss}{\partial x_{l}}=\frac{\partial loss}{\partial x_{L}}\cdot \frac{\partial x_{L}}{\partial x_{l}}=\frac{\partial x_{loss}}{\partial x_{L}}(1+\frac{\partial \sum_{i=l}^{L-1}{F(x_{i})}}{\partial x_{l}})

這揭示了兩點(也是ResNet的2個強大之處):

深層

x_{L}

的梯度得以傳播回淺層

x_{l}

淺層

x_{l}

的梯度不會輕易消失

以上這兩點的前提條件就是要維護Identity mapping

。因此,若改為

F(x)-x

則破壞了這一條件,從而影響較大;而改為

x-F(x)

還是保持了該條件,於是影響相對較小。

當然,以上是理論分析,建議各位還是結合實驗去分析,會讓你得到昇華~