ReLU6(x)=min(max(0,x),6)
ReLU6可以抑制ReLU的最大值,當x>6時,其導數也是0;
目的:
主要是為了在移動端float16的低精度的時候,也能有很好的數值分辨率,如果對ReLu的輸出值不加限制,那么輸出范圍就是0到正無窮,而低精度的float16無法精確描述其數值,帶來精度損失。
為什么是6呢?
普通relu, y=max(0, x), 相當於無限多個bernoulli分布,即無限多個骰子
relu6, y= min(max(0,x), 6), 相當於有六個bernoulli分布,即6個硬幣,同時拋出正面,這樣鼓勵網絡學習到稀疏特征。
網絡里面每一個輸出n,相當於n個bernoulli分布的疊加。
通過實驗發現,用6,效果比較好。所以選用了6
參考
1. ReLU6;
完