很明显,如果值的范围在-10;10和输出层的激活函数在间隔-1;1中的值之间,我就必须缩放输出数据。但是,我也可以通过将激活函数与因子10相乘来扩展激活函数。在我看来,更常见的是缩放数据,而不是函数。有理由这么做吗?
发布于 2020-12-19 07:15:20
它所做的就是改变学习步骤的步长。缩小输出使梯度变小,所以梯度下降更新更小。我们希望这样做,这样我们就不会用更大的步骤跳过一个好的解决方案。
假设激活函数是a =\sigma(x),其中x是激活函数的输入,a是输出。
y的真实输出范围约为\sigma范围的10倍。我们可以放大\sigma,也可以缩小y。
让输出按10:y' = 10a进行缩放。
损失函数L比较预测和事实:L(y', y)。我们需要梯度w.r.t x进行反向传播。也就是说,为了找出损失与输入有关的变化,所以我们可以更改输入:
另一方面,让我们缩小到数据,所以y_s = 0.1y。这意味着我们不需要扩展a。现在的损失函数梯度是:
对于这两种情况,请注意梯度的最终形式。唯一的区别是L的参数。对于输出被缩放的情况,损失函数的参数要小10倍。这意味着梯度会变小。这意味着对x进行的步骤更新将更小。我们通常需要小的更新,这样我们就可以收敛到最优的解决方案。。
但也要注意,我们也可以通过降低学习速度来使步长变小。
因此,缩小输出而不是激活是一个很好的经验法则,以获得更好的收敛。这不是一条规则。
https://datascience.stackexchange.com/questions/86875
复制相似问题