摘要:现为谷歌软件工程师。尽管存在这两个问题,目前仍是最常用的,在搭建人工神经网络的时候推荐优先尝试函数人们为了解决,提出了将的前半段设为而非。
夏飞,清华大学计算机软件学士,卡内基梅隆大学人工智能硕士。现为谷歌软件工程师。
TLDR (or the take-away)
优先使用ReLU (Rectified Linear Unit) 函数作为神经元的activation function:
背景
深度学习的基本原理是基于人工神经网络,信号从一个神经元进入,经过非线性的activation function,传入到下一层神经元;再经过该层神经元的activate,继续往下传递,如此循环往复,直到输出层。正是由于这些非线性函数的反复叠加,才使得神经网络有足够的capacity来抓取复杂的pattern,在各个领域取得state-of-the-art的结果。显而易见,activation function在深度学习中举足轻重,也是很活跃的研究领域之一。目前来讲,选择怎样的activation function不在于它能否模拟真正的神经元,而在于能否便于优化整个深度神经网络。
下面我们简单聊一下各类函数的特点以及为什么现在优先推荐ReLU函数。
Sigmoid函数
Sigmoid函数是深度学习领域开始时使用频率较高的activation function。它是便于求导的平滑函数,其导数为,这是优点。然而,Sigmoid有三大缺点:
容易出现gradient vanishing
函数输出并不是zero-centered
幂运算相对来讲比较耗时
Gradient Vanishing
优化神经网络的方法是Back Propagation,即导数的后向传递:先计算输出层对应的loss,然后将loss以导数的形式不断向上一层网络传递,修正相应的参数,达到降低loss的目的。 Sigmoid函数在深度网络中常常会导致导数逐渐变为0,使得参数无法被更新,神经网络无法被优化。
原因在于两点:
在上图中容易看出,当中较大或较小时,导数接近0,而后向传递的数学依据是微积分求导的链式法则,当前层的导数需要之前各层导数的乘积,几个小数的相乘,结果会很接近0
Sigmoid导数的较大值是0.25,这意味着导数在每一层至少会被压缩为原来的1/4,通过两层后被变为1/16,…,通过10层后为1/1048576。请注意这里是“至少”,导数达到较大值这种情况还是很少见的。
输出不是zero-centered
Sigmoid函数的输出值恒大于0,这会导致模型训练的收敛速度变慢。
举例来讲,对,如果所有均为正数或负数,那么其对的导数总是正数或负数,这会导致如下图红色箭头所示的阶梯式更新,这显然并非一个好的优化路径。深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。
幂运算相对耗时
相对于前两项,这其实并不是一个大问题,我们目前是具备相应计算能力的,但面对深度学习中庞大的计算量,较好是能省则省 :-)。之后我们会看到,在ReLU函数中,需要做的仅仅是一个thresholding,相对于幂运算来讲会快很多。
tanh函数
tanh读作Hyperbolic Tangent,如上图所示,它解决了zero-centered的输出问题,然而,gradient vanishing的问题和幂运算的问题仍然存在。
ReLU函数
ReLU函数其实就是一个取较大值函数,注意这并不是全区间可导的,但是我们可以取sub-gradient,如上图所示。ReLU虽然简单,但却是近几年的重要成果,有以下几大优点:
解决了gradient vanishing问题 (在正区间)
计算速度非常快,只需要判断输入是否大于0
收敛速度远快于sigmoid和tanh
ReLU也有几个需要特别注意的问题:
ReLU的输出不是zero-centered
Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。
尽管存在这两个问题,ReLU目前仍是最常用的activation function,在搭建人工神经网络的时候推荐优先尝试!
Leaky ReLU函数
人们为了解决Dead ReLU Problem,提出了将ReLU的前半段设为而非0。另外一种直观的想法是基于参数的方法,即Parametric ReLU:,其中可由back propagation学出来。理论上来讲,Leaky ReLU有ReLU的所有优点,外加不会有Dead ReLU问题,但是在实际操作当中,并没有完全证明Leaky ReLU总是好于ReLU。
ELU (Exponential Linear Units) 函数
ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:
不会有Dead ReLU问题
输出的均值接近0,zero-centered
它的一个小问题在于计算量稍大。类似于Leaky ReLU,理论上虽然好于ReLU,但在实际使用中目前并没有好的证据ELU总是优于ReLU。
小结
建议使用ReLU函数,但是要注意初始化和learning rate的设置;可以尝试使用Leaky ReLU或ELU函数;不建议使用tanh,尤其是sigmoid函数。
参考资料
Udacity Deep Learning Courses
Stanford CS231n Course
欢迎加入本站公开兴趣群商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/4496.html
摘要:当云平台出现网络故障系统故障等问题,这对云租户用户有时甚至是致命的,所以不少是由高级别开发人员转型而来。目前国内各大云厂商也基本都提供了应用运维平台,包括腾讯蓝鲸阿里华为等。 DevOps 全链路 下图是我们熟知的软件研发环节,在迭代频率高的研发组织里,一天可能要经历多次如下循环。对于用户群体庞大或者正在经历大幅业务扩张的企业研发组织,除了重点关注应用的快速上线之外,如何保障应用的高可...
摘要:被称为亚马逊的新服务提供了强大的功能,如图像分析,文本到语音转换和自然语言处理。换句话说,其任务是将谷歌的机器学习功能产品化。亚马逊平台推出的这些新服务中的第一个是名为的图像识别服务。 亚马逊一直在其零售业务中使用深度学习和人工智能来提高客户体验。该公司声称,它有数千名工程师专门从事人工智能相关开发,以改善搜索、物流、产品推荐和库存管理。亚马逊现在正在将相同的专业知识带给云,展示了开发人员可...
摘要:在低端领域,在上训练模型的价格比便宜两倍。硬件定价价格变化频繁,但目前提供的实例起价为美元小时,以秒为增量计费,而更强大且性能更高的实例起价为美元小时。 随着越来越多的现代机器学习任务都需要使用GPU,了解不同GPU供应商的成本和性能trade-off变得至关重要。初创公司Rare Technologies最近发布了一个超大规模机器学习基准,聚焦GPU,比较了几家受欢迎的硬件提供商,在机器学...
摘要:本文内容节选自由主办的第七届,北京一流科技有限公司首席科学家袁进辉老师木分享的让简单且强大深度学习引擎背后的技术实践实录。年创立北京一流科技有限公司,致力于打造分布式深度学习平台的事实工业标准。 本文内容节选自由msup主办的第七届TOP100summit,北京一流科技有限公司首席科学家袁进辉(老师木)分享的《让AI简单且强大:深度学习引擎OneFlow背后的技术实践》实录。 北京一流...
阅读 2311·2021-11-15 11:38
阅读 2439·2021-11-15 11:37
阅读 2542·2021-08-24 10:00
阅读 2900·2019-08-30 15:56
阅读 1258·2019-08-30 15:53
阅读 3694·2019-08-29 18:43
阅读 2929·2019-08-29 17:01
阅读 3254·2019-08-29 16:25