论文Interpretable Deep Learning under Fire (Usenix Security 2020)中关于ReLU高阶导为零的处理方法,及其PyTorch实现。
ReLU高阶导问题
ReLU高阶导为零,这使得神经网络为分段线性函数,见『ReLU神经网络:分段线性』。
在某些情况下,需要使用高阶导更新参数。
逼近ReLU函数
使用如下函数逼近ReLU函数:
其导函数如下:
橘红色为原ReLU的一阶导,红色为
PyTorch实现
继承autograd.Function对象,不改变前向传播,只改变反向传播的梯度:
1 | import torch |
总结
- 一种光滑处理ReLU的方法;
- autograd.Function类。