深度學習中激活函數的導數在不連續可導時的處理
- 2019 年 12 月 19 日
- 筆記
Q: 深度學習中激活函數在不連續可導時的導數怎麼處理呢?
A: 激活函數不要求處處連續可導,在不連續可導處定義好該處的導數即可。
sigmoid函數是處處連續可導的。其他如ReLU,在0處不連續可導。實際上激活函數用ReLU的情況很多。
以caffe中的ReLU為例
在caffe中,給定輸入x, ReLU層可以表述為:
f(x) = x, if x>0;
f(x) = negative_slope * x, if x <=0.
當negative_slop>0時,ReLU是leaky ReLU. negative_slope默認為0, 即標準ReLU。
如下圖程式碼所示,Backward_cpu中bottom_data(即輸入x)=0時,導數為negative_slope。

常見激活函數和導數
不連續可導處的導數值取derivative(x+)還是derivative(x-),不同框架如pytorch, caffe, tensorflow可能各有選擇。

