常用激活函数面试要点

每个激活函数的输入都是一个数字,然后对其进行某种固定的数学操作。激活函数给神经元引入了非线性因素,如果不用激活函数的话,无论神经网络有多少层,输出都是输入的线性组合。

激活函数的发展经历了Sigmoid -> Tanh -> ReLU -> Leaky ReLU -> Maxout这样的过程,还有一个特殊的激活函数Softmax,因为它只会被用在网络中的最后一层,用来进行最后的分类和归一化。

Sigmoid

在这里插入图片描述
它输入实数值并将其“挤压”到0到1范围内,适合输出为概率的情况。
Sigmoid函数图像
面试点:

  1. Sigmoid函数的导数 s ( x ) ′ = s ( x ) ( 1 − s ( x ) ) ∈ [ 0 , 0.25 ] s(x)'=s(x)(1-s(x)) ∈ [0, 0.25] s(x)=s(x)(1s(x))[0,0.25]
  2. 假设 a = g ( z ) a=g(z) a=g(z) L ( a , y ) L(a,y) L(a,y)是交叉熵Loss, g g g是Sigmoid函数:反向传播时,Loss对 a a a求偏导, a a a z z z求偏导…实现反向传播。其中, a a a z z z求偏导,即为面试点 1 1 1的结果。
  3. Sigmoid函数饱和使梯度消失。当神经元的激活值在接近0或1处时会饱和,在这些区域梯度几乎为0,由 1 1 1可得。这就会导致梯度消失,几乎就没有信号通过神经传回上一层。
  4. Sigmoid函数非0中心。关于 w w w各分量在梯度更新的过程中,将会同时增大或减小,如果随机初始化到第四象限,将会导致权重更新时出现低效率 z z z字型梯度更新趋势。下图为推导过程:
    在这里插入图片描述

Tanh

在这里插入图片描述
它将实数值压缩到[-1,1]之间。
在这里插入图片描述
Tanh解决了Sigmoid的输出非0中心的问题,但仍然存在饱和问题。
为了防止饱和,现在主流的做法会在激活函数前多做一步Batch Normalization
,尽可能保证每一层网络的输入呈均值较小、0中心的分布。

ReLU

在这里插入图片描述
相较于sigmoid和tanh函数,ReLU对于随机梯度下降的收敛有巨大的加速作用;sigmoid和tanh在求导时含有指数运算,而ReLU求导几乎不存在任何计算量
在这里插入图片描述
对比sigmoid类函数主要变化是:

  1. 单侧抑制
  2. 相对宽阔的兴奋边界
  3. 稀疏激活性

存在问题:
ReLU单元比较脆弱并且可能“死掉”,而且是不可逆的,因此导致了数据多样化的丢失。通过合理设置学习率,会降低神经元“死掉”的概率。

Softmax

在这里插入图片描述
在这里插入图片描述
Softmax是Sigmoid的扩展,当类别数k=2时,Softmax回归退化为Logistic回归。

面试补充

1. 为什么用Softmax怎么不用Hardmax?反向传播有什么不同?(阿里面试中问过)

Hardmax就是简单的大于阈值为1,小于阈值为0,反向传播时,导数为0,无法进行反向传播。
而Softmax在反向传播时,则可以正常进行梯度更新。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Xu_Wave

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

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

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

打赏作者

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

抵扣说明:

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

余额充值