前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >激活函数

激活函数

作者头像
用户1386409
发布2018-04-24 11:44:42
8210
发布2018-04-24 11:44:42
举报
文章被收录于专栏:PaddlePaddlePaddlePaddle

深度学习基础理论-CNN篇

激活函数

激活函数(activation function)层又称非线性映射层,顾名思义,激活函数的引入为的是增加整个网络的表达能力(即非线性)。否则,若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数。在实际使用中,有多达十几种激活函数可供选择。本节以Sigmoid型激活函数和ReLU函数为例,介绍涉及激活函数的若干基本概念和问题。

直观上,激活函数模拟了生物神经元特性:接受一组输入信号并产生输出。在神经科学中,生物神经元通常有一个阈值,当神经元所获得的输入信号累积效果超过了该阈值,神经元就被激活而处于兴奋状态;否则处于抑制状态。在人工神经网络中,因Sigmoid型函数可以模拟这一生物过程,从而在神经网络发展历史进程中曾处于相当重要的地位。Sigmoid型函数也称Logistic函数:

其函数形状下图(a)所示。很明显能看出,经过Sigmoid型函数作用后,输出响应的值域被压缩到[0,1] 之间,而0对应了生物神经元的“抑制状态”,1则恰好对应了“兴奋状态”。不过再深入的观察还能发现在Sigmoid函数两端,对于大于5(或小于−5)的值无论多大(或多小)都会压缩到1(或0)。如此便带来一个严重问题,即梯度的“饱和效应”。对照Sigmoid型函数的梯度图如下图(b)所示,大于5(或小于−5)部分的梯度接近0,这会导致在误差反向传播过程中导数处于该区域的误差将很难甚至根本无法传递至前层,进而导致整个网络无法训练(导数为0将无法更新网络参数)。此外,在参数初始化的时候还需特别注意,要避免初始化参数直接将输出值域带入这一区域:一种可能的情形是当初始化参数过大时,将直接引发梯度饱和效应而无法训练。

图 Sigmoid型函数及其函数梯度

为了避免梯度饱和效应的发生,Nair和Hinton于2010年将修正线性单(Rectified Linear Unit,简称ReLU)引入神经网络。ReLU函数是目前深度卷积神经网络中最为常用的激活函数之一。另外,根据ReLU函数改进的其他激活函数也展示出更好的性能。

图 ReLU函数及其函数梯度

ReLU函数实际上是一个分段函数,其定义为:

由上图可见,ReLU函数的梯度在x ≥ 0 时为1,反之为0。对x ≥ 0 部分完全消除了Sigmoid型函数的梯度饱和效应。同时,在实验中还发现相比Sigmoid型函数,ReLU函数有助于随机梯度下降方法收敛,收敛速度约快6倍左右。正是由于ReLU函数的这些优质特性,ReLU函数已成为目前卷积神经网络及其他深度学习模型(如递归神经网络RNN等)激活函数的首选之一。

end

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PaddlePaddle 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档