首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩放激活函数

缩放激活函数
EN

Data Science用户
提问于 2020-12-18 15:46:46
回答 1查看 470关注 0票数 1

很明显,如果值的范围在-10;10和输出层的激活函数在间隔-1;1中的值之间,我就必须缩放输出数据。但是,我也可以通过将激活函数与因子10相乘来扩展激活函数。在我看来,更常见的是缩放数据,而不是函数。有理由这么做吗?

EN

回答 1

Data Science用户

回答已采纳

发布于 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进行反向传播。也就是说,为了找出损失与输入有关的变化,所以我们可以更改输入:

\frac{\partial L(y', y)}{\partial x} = \frac{\partial L(y', y)}{\partial y'} \times \frac{\partial y'}{\partial a} \times \frac{\partial a}{\partial x} \\= \frac{\partial L(y', y)}{\partial y'} \times 10 \times \frac{\partial a}{\partial x} \\ = \frac{\partial L(10a, y)}{10\cdot \partial a} \times 10 \times \frac{\partial a}{\partial x} \\= \frac{\partial L(10a, y)}{\partial a} \times \frac{\partial a}{\partial x} \\= \frac{\partial L(10 \cdot (a, 0.1y))}{\partial a} \times \frac{\partial a}{\partial x}

缩放输出

另一方面,让我们缩小到数据,所以y_s = 0.1y。这意味着我们不需要扩展a。现在的损失函数梯度是:

\frac{\partial L(a, y_s)}{\partial x} = \frac{\partial L(a, 0.1y)}{\partial a} \times \frac{\partial a}{\partial x}

对于这两种情况,请注意梯度的最终形式。唯一的区别是L的参数。对于输出被缩放的情况,损失函数的参数要小10倍。这意味着梯度会变小。这意味着对x进行的步骤更新将更小。我们通常需要小的更新,这样我们就可以收敛到最优的解决方案。

但也要注意,我们也可以通过降低学习速度来使步长变小。

因此,缩小输出而不是激活是一个很好的经验法则,以获得更好的收敛。这不是一条规则。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/86875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档