使用 ReLU 等无限激活函数的反向传播如何工作?

人工智能 神经网络 反向传播 雷路
2021-10-22 18:19:31

我正在用 Python 编写自己的基本机器学习库作为练习,以获得良好的概念理解。我已经成功实现了激活功能的反向传播,例如tanh和 sigmoid 函数。但是,这些在其输出中被标准化。像 ReLU 这样的函数是无界的,所以它的输出可以很快爆发。在我的理解中,最后添加了一个分类层,通常使用 SoftMax 函数,以将输出压缩在 0 和 1 之间。

反向传播如何与此一起工作?我是否只是将 SoftMax 函数视为另一个激活函数并计算其梯度?如果是这样,那个渐变是什么,我将如何实现它?如果没有,培训过程如何运作?如果可能,最好使用伪代码答案。

1个回答

通过 ReLU 的反向传播比通过 sigmoid 激活的反向传播更容易。对于正激活,您只需按原样通过输入梯度。对于负激活,您只需将梯度设置为 0。

关于 softmax,最简单的方法是将其视为负对数似然损失的一部分。换句话说,我建议直接推导出该损失相对于 softmax 输入的梯度。结果非常优雅并且非常容易实现。试着自己推导出来!