【八股文-机器学习】激活函数
纵览
如果使用线性激活函数(恒等激励函数),那么神经网络仅是将输入线性组合再输出,在这种情况下,深层(多个隐藏层)神经网络与只有一个隐藏层的神经网络没有任何区别,不如去掉多个隐藏层。
线性指一次函数,直线关系,曲线和二次函数属于非线性。非线性指导数不为常数,relu的导数是分段不连续也属于非线性。
sigmoid
导数图像如下图所示:
当输入值很大或很小时,更新的梯度趋于0,也就是参数几乎不变,也就很可能造成梯度消失的问题。所以一般不用sigmoid做激活函数。
relu
当使用ReLU 激活函数时,我们不会得到非常小的值(比如前面 sigmoid 函数的 0.0000000438)。相反,它要么是 0,要么是 1。但这又催生出另一个问题:死亡 ReLU 问题。如果在计算梯度时有太多值都低于 0 会怎样呢?我们会得到相当多不会更新的权重和偏置,因为其更新的量为 0。
优点是当我们将 ReLU 函数引入神经网络时,我们也引入了很大的稀疏性。那么稀疏性这个术语究竟是什么意思?稀疏:数量少,通常分散在很大的区域。在神经网络中,这意味着激活的矩阵含有许多 0。这种稀疏性能让我们得到什么?当某个比例(比如 50%)的激活饱和时,我们就称这个神经网络是稀疏的。这能提升时间和空间复杂度方面的效率——常数值(通常)所需空间更少,计算成本也更低。Yoshua Bengio 等人发现 ReLU 这种分量实际上能让神经网络表现更好,而且还有前面提到的时间和空间方面的效率。
elu
其导数为本身再加一个alpha
这里成功避开了死亡 ReLU 问题,同时仍保有 ReLU 激活函数的一些计算速度增益——也就是说,网络中仍还有一些死亡的分量。
leaky relu
其导数再负数部分是一个常量alpha
- 类似 ELU,Leaky ReLU 也能避免死亡 ReLU 问题,因为其在计算导数时允许较小的梯度;
- 由于不包含指数运算,所以计算速度比 ELU 快。
- 无法避免梯度爆炸问题;
- 神经网络不学习 α 值;
- 在微分时,两部分都是线性的;而 ELU 的一部分是线性的,一部分是非线性的。
tanh
由图像可知,tanh函数是sigmoid函数向下平移和收缩后的结果。
其导数为
sigmoid导数可以写为
sigmoid和tanh激活函数有共同的缺点:即在x很大或很小时,梯度几乎为零,因此使用梯度下降优化算法更新网络很慢。
华为HUAWEI工作强度 1375人发布
查看4道真题和解析