神经网络有界输出

机器算法验证 机器学习 神经网络
2022-04-20 06:02:20

我正在使用具有线性激活函数的神经网络作为输出函数。我的反应是连续的,不能是否定的,也不能超过某个值。该值通常在 0 到 1000 之间。

我使用了对数响应来避免负值,但是当我运行神经网络时,一些值将超过 1000 并且是不合理的,因为这些值是不可能的。

如果我想要有界输出,同时我想使用小批量随机梯度下降作为优化函数,我有什么选择。

我尝试在 -1 和 1 之间缩放响应,并使用 tanh 激活函数作为输出函数,还使用 ​​sigmoid 作为激活函数,并在 0 和 1 之间缩放响应。这些可以防止预测值超出界限 0 和 1000 但是在 RMSE 和 MAE 方面并没有产生一个整体更好的模型。

有没有其他模型可以尝试?tanh 和 sigmoid 是激活连续输出的好方法吗?

我还想知道是否有人对尝试使用线性输出激活函数改进神经网络有任何建议。

帮助将不胜感激。

1个回答

有界输出范围的一个技巧是在 (0,1) 之间缩放目标值并使用 sigmoid 输出 + 二元交叉熵损失。

这通常用于图像数据,其中所有像素值都在 (0,255) 之间。
是最后一层的激活,对于sigmoid输出+二元交叉熵损失 其中是缩放后的目标值。wrt的导数是,这有点类似于使用无界激活 + MSE 的导数。a=wh+b

E(a,t)=tlogσ(a)+(1t)log(1σ(a)),Ea=σ(a)t
taprediction - target