只有 ReLU 节点的网络如何输出负值?

机器算法验证 时间序列 神经网络 深度学习
2022-03-28 01:22:45

我正在尝试使用带有前馈神经网络的 api 进行时间序列预测。对于密集的聚合数据,它工作得很好,但对于稀疏的数据,它有时会预测负值,即使我的历史数据只有正值。

源代码非常密集,我可能会漏掉一两行,但据我所知,输入层和隐藏层都是 ReLU 节点。

假设我是对的,只有 ReLU 层的网络怎么会导致负值,尤其是在没有训练数据有负值的情况下?

2个回答

考虑 ReLU 的定义:

f(x)=max{0,x}

ReLU 单元的输出是非负的,句号。如果网络的最后一层是 ReLU 单元,那么输出必须是非负的。如果输出为负数,则说明出现问题:要么存在编程错误,要么输出层不是 ReLU。

假设最后一层是线性的,这个线性层将 ReLU 输出作为其输入显然,线性层对其输出没有限制,因此线性层的输出可以是正的、负的或两者都不是。

您的最终输出取决于输出层中的激活函数。如果您的网络仅包含包括输出激活在内的 relu 激活,那么输出将是非负的,这是正确的。然而,在隐藏层中具有 relu 激活和另一个输出(例如线性函数或 tanh)的模型可以产生非负输出。