當卷積層後跟batch normalization層時為什麼不要偏置b
阿新 • • 發佈:2019-01-28
起因
之前使用的是inception-v2模型,在v2中,標準的卷積模組為:
* conv_w_b->bn->relu ->pooling*
即,在v2中,儘管在卷積之後、啟用函式之前大量使用batch normalization,但是卷積層依然使用可學習的偏置引數。
這也比較符合我的直觀理解,因為偏置在一般的卷積神經網路中本來就是很重要的,可以讓超判決面不過原點。
但是我在讀inception-v3的程式碼時,發現v3中一個卷積模組中 bn和bias是不共存的,這令我很費解,這麼重要的引數為什麼沒有?
解
後來想明白了,接下來是明白的過程:
首先,看bias的有無到底會不會對bn的結果造成影響?
bn操作的關鍵一步可以簡寫為:
當加上偏置之後,為:
其中:
,然後我們對公式進行化簡:
而:
所以:
。
好了。
那麼為什麼沒有bias的卷積層能夠對bn後的輸入學習到很好的決策面呢?
當然啦,bn本身就是將資料歸一化到標準分佈的呀~