【深度学习】5-从计算图直观认识“激活函数不以零为中心导致收敛变慢”

​🚩 前言

活动地址:CSDN21天学习挑战赛

“众所周知,激活函数最好具有关于零点对称的特性,不关于零点对称会导致收敛变慢”,这种说法看到几次了,但对于背后的原因却一直比较模糊,今天就来捋一捋。

为此我阅读了一些文章,其中一篇个人觉得写得很棒(附在文末的参考中),但也花了一些时间才看懂(可能我比较笨?)。后面我发现从计算图来看这个问题会比较直观和容易理解一些。

如果不了解计算图,可以查阅 齐藤康毅 的 《深度学习入门 基于python的理论与实现》的第五章:误差反向传播法。



1. 收敛变慢的原因

先上计算图(某层神经网络的一小部分):

在这里插入图片描述

图中黑色箭头为正向推理,红色箭头为误差的反向传播。因为 s i g m o i d sigmoid sigmoid 函数的输出值都为正,故 x i x_i xi 的符号都相同且为正;则参数 w i w_i wi 的更新方向(增大\减小) x i a x_ia xia 仅由 a a a 决定。

  • a a a 大于 0 ,所有参数更新时都增大
  • a a a 小于 0, 所有参数更新时均减小

所有参数更新方向始终一致会有什么影响?如果某次迭代收敛到最优参数,一个参数需要增大,另一个需要减小,那我们一致的参数更新方向就无法指向最优点,会形成一种锯齿型的路径,因此收敛到最优点的速度就慢。
在这里插入图片描述
图片来源:谈谈激活函数以零为中心的问题

2. 为何要“对称”?

前面我们看到,参数更新方向一致将导致锯齿状的更新路径。只要激活函数的值域分布在零的两边,就不会出现更新方向始终一致的问题了。

那对称的意义是什么?像下图中,函数曲线偏向 y 的正半轴,那么更新参数时参数就更容易增大而不容易减小,但如何确定参数更应该增大还是减小呢?
在这里插入图片描述

3. 与“参数值全相同”情况的对比

下面对比一下两个问题。

  1. 激活函数输出值全为正:参数更新路径为锯齿状,更新慢
  2. 参数值全相同:完全无法正常训练

3.1. 激活函数输出值全为正

对于激活函数输出值全为正,以二维的参数空间为例,它失去的是一半的方向。一对参数值更新量 ( Δ w 1 , Δ w 2 ) (\Delta w1, \Delta w2) (Δw1,Δw2) ,虽然 Δ w 1 \Delta w1 Δw1 Δ w 2 \Delta w2 Δw2 的符号相同,但参数不同的绝对值仍可以组合出丰富的更新方向,足以抵达这二维空间中的任意一点,因为第二、四象限中的任一个向量,都可以分解为第一、三象限中的两个向量。
在这里插入图片描述

3.2. 参数值全相同

参数值全相同将导致所有参数的更新方向和幅度也相同(可参考:权重参数全相同值初始化,导致无法训练),此时模型完全报废,因为参数更新将只能在同一条直线上移动。
在这里插入图片描述


参考

  1. 《深度学习入门 基于python的理论与实现》齐藤康毅
  2. 谈谈激活函数以零为中心的问题

博主主页:清风莫追_CSDN
原文链接:http://t.csdn.cn/nIA0d

  • 43
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 37
    评论
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风莫追

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值