一文带你读懂激活函数

Sigmoid函数本质上是一种常用的激活函数,是神经元最重要的组成部分。那什么是激活函数呢?激活函数有什么作用呢?常见的激活函数都有哪些?以及如何选择合适的激活函数?这次我们将重点对上述问题进行讨论。

线性模型在处理非线性问题时往往手足无措,这时我们需要引入激活函数来解决线性不可分问题。激活函数(Activation function),又名激励函数,往往存在于神经网络的输入层和输出层之间,作用是给神经网络中增加一些非线性因素,使得神经网络能够解决更加复杂的问题,同时也增强了神经网络的表达能力和学习能力。

常用的激活函数有 Sigmoid函数、双曲正切激活函数(tanh)、修正线性单元(ReLU)等。接下来我们将一一学习。

1.Sigmoid函数

Sigmoid函数是神经网络中最常用到的激活函数,数学表达式为:f(x) = ,

函数图像如下图3-8所示。

图3-8 Sigmoid函数图像

由函数图像可知,Sigmoid函数是单调增函数,输出范围在[0,1]之间,且越是负向增大,越接近于0,逼近速度越来越慢;越是正向增大,越接近于1,逼近速度也是越来越慢;因为 Sigmoid函数求导比较容易,可解释性也很强,所以在历史上被广泛的使用。

与此同时,Sigmoid函数也有两个很大的缺点:首先是 Sigmoid函数会造成梯度消失问题,从图像中我们也可以得知,当输入特别大或是特别小时,神经元的梯度几乎接近于0,这就导致神经网络不收敛,模型的参数不会更新,训练过程将变得非常困难。另一方面, Sigmoid函数的输出不是以0为均值的,导致传入下一层神经网络的输入是非0的。这就导致一个后果:若 Sigmoid函数的输出全部为正数,那么传入下一层神经网络的值永远大于0,这时参数无论怎么更新梯度都为正。正是基于上述的缺点, Sigmoid函数近年来的使用频率也在渐渐减弱。

2.双曲正切激活函数(Tanh)

Tanh函数又名双曲正切激活函数,是 Sigmoid函数的变形,其数学表达式为:tanh(x) = ,函数图像如图3-9所示:

图3-9 tanh函数图像

由上图可知,tanh激活函数与 Sigmoid函数不同的是,函数的输出范围在[-1,1]之间,且Tanh函数的输出是以为0均值的,这就一定程度上解决了上述 Sigmoid函数的第二个缺点,所以其在实际应用中的效果要好于 Sigmoid函数。但当输入特别大或是特别小时,仍然存在梯度消失的问题。

3.修正线性单元ReLU

ReLU激活函数又名修正线性单元,是目前深层神经网络中越来越受欢迎的一种激活函数,其数学表达式为:f(x) = max(0,x),函数图像如下图所示:

图3-10 ReLU函数图像

从ReLU的函数图像我们可以发现,函数原点左侧的部分,输出值为0,斜率为0;函数原点右侧是斜率为1的直线,且输出值就是输入值。相比于上述的 Sigmoid和tanh两种激活函数,ReLU激活函数完美的解决了梯度消失的问题,因为它的线性的、非饱和的。此外,它的计算也更加简单,只需要设置一个特定的阈值就可以计算激活值,这样极大的提高了运算的速度。所以近年来,ReLU激活函数的应用越来越广泛。

但是ReLU激活函数也有一些缺陷:训练的时候不适合大梯度的输入数据,因为在参数更新之后,ReLU的神经元不会再任何数据节点被激活,这就会导致梯度永远为0。比如:输入的数据小于0时,梯度就会为0,这就导致了负的梯度被置0,而且今后也可能不会被任何数据所激活,也就是说ReLU的神经元“坏死”了。

所以针对ReLU函数上述的缺点,又出现了带泄露的ReLU(Leaky ReLU)和带参数的ReLU(Parametric ReLU)。

4.其它激活函数

Leaky ReLU是ReLU激活函数的变形,主要是针对ReLU函数中神经元容易坏死的缺陷,将原点左侧小于0的部分,赋予一个很小的斜率。其效果通常要好于ReLU激活函数,但实践中使用的频率并没有那么高。数据公式为:f(x) = max(0, x) + γmin(0, x)。通常,γ是一个很小的常数,如:0.01。

Parametric ReLU是ReLU激活函数的另一种变形,和Leaky ReLU函数一样是非饱和函数,解决了坏死难题。不同之处在于其在函数中引入一个可学习的参数,往往不同的神经元有不同的参数,所以第i个神经元的数学表达式为:f(x) = max(0, x) + γi min(0, x)。当γi 取0时,便可以视为ReLU函数,取很小的常数时,可视为Leaky ReLU函数。相对而言,Parametric ReLU激活函数的使用频率也不是很高。

上述两种ReLU激活函数的变形Leaky ReLU、Parametric ReLU函数图如图3-10所示:

图3-11 Leaky ReLU/Parametric ReLU函数图像

原文发布于微信公众号 - 磐创AI(xunixs)

原文发表时间:2018-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的python

自然语言处理之文本卷积

自然语言处理之文本卷积 1.文本的向量表示 2.文本的1维卷积 3.池化

382160
来自专栏瓜大三哥

图像分割(一) 之简介

图像分割就是将图像划分为若干个互不相交的小区域的过程,所谓小区域是某种意义下具有共同属性的像素的连通集合。 基于阈值分割方法实际上是输入图像f到输出图像g的变换...

41250
来自专栏Petrichor的专栏

深度学习: 目标函数

目标函数 (object function) = 损失函数 (loss function) = 代价函数 (cost function)

49040
来自专栏机器学习算法原理与实践

深度神经网络(DNN)损失函数和激活函数的选择

    在深度神经网络(DNN)反向传播算法(BP)中,我们对DNN的前向反向传播算法的使用做了总结。里面使用的损失函数是均方差,而激活函数是Sigmoid。实...

19810
来自专栏IT派

入门 | 了解神经网络,你需要知道的名词都在这里

近日,Mate Labs 联合创始人兼 CTO 在 Medium 上撰文《Everything you need to know about Neural Ne...

36780
来自专栏机器学习算法工程师

绝对不容错过:最完整的检测模型评估指标mAP计算指南(附代码)在这里!

本文翻译自Measuring Object Detection models - mAP - What is Mean Average Precision?(...

1K80
来自专栏机器学习算法与Python学习

线性分类器

线性分类 上一篇笔记介绍了图像分类问题。图像分类的任务,就是从已有的固定分类标签集合中选择一个并分配给一张图像。我们还介绍了k-Nearest Neighbor...

39490
来自专栏WD学习记录

机器学习 学习笔记(19)神经网络

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

20020
来自专栏YoungGy

风格转换简介

风格转换,是把一张图片转化成同内容但包含某风格的新图片。本文将介绍如何让机器学习风格转换,包含两种方法:优化问题求解、转化网络求解。

48550
来自专栏量子位

你真的理解反向传播吗?面试必备

深度学习框架越来越容易上手,训练一个模型也只需简单几行代码。但是,在机器学习面试中,也会考量面试者对机器学习原理的掌握程度。反向传播问题经常出现,不少人碰到时仍...

33240

扫码关注云+社区

领取腾讯云代金券