每个神经元都有一个激活函数,由这层神经元输出给下层神经元的输入,中间就会有个函数关系,将之做非线性转换。
使用激活函数,可使上一层节点做非线性转换,从而获取充分的特徵组合,野使神经网路可以充分学习到更多;若只做最原始的线性转换,那麽神经网路学习的就非常有限。
在神经网路加上激活函数後,可学习到非线性的曲线,来对非线性的数据加以处理。
图片来源:https://codingnote.cc/zh-tw/p/176736/
早期研究,主要采用激活函数如sigmoid、tanh。近年大多用ReLU来做研究,以及由ReLU所改进的Leaky-ReLU、P-ReLU等等。
优点:其输出范围限於0~1之间,且为连续变数,便於求导,可用於输出层。
缺点:可观察上图,其上下两侧趋近於平坦,对输入有微小改变时,变得较不敏感,梯度趋近於0,权重不会更新,容易出现梯度消失的状况。
又称双曲正切曲线,其取值为[-1,1],为sigmoid的变形。
图片来源:https://codingnote.cc/zh-tw/p/176736/
相较Sigmoid,其中间值为0,会比Sigmoid更能提供给下一层神经元做学习。
线性整流函数,针对Sigmoid及Tanh的缺点做改善,是现代神经网路中最常用的激活函数。
图片来源:https://codingnote.cc/zh-tw/p/176736/
计算简单,在X>0的区段上,不会出现梯度消失的状况,但若在X<0的区段上,直接无法更新,造成梯度为0的情况。
有这ReLU的优点,却不会有dead ReLU问题,拟合能力强,但计算较为复杂,是原本参数的一倍。
在深度学习中,没有哪个激活函数一定是最好的,建议可以多尝试。
一般多使用ReLU做激活函数,当遇到梯度消失状况发生时,可尝试Leaky-ReLU及ELU看看。
参考资料:
<<: [Day 20] Facial Recognition: OpenCV + Dlib可以一次满足
>>: 初学者跪着学JavaScript Day18 : 物件:new Map()
https://codepen.io/pwbzvqja/pen/MWeBbXQ 作业目标: 作业批改...
今天谈一个在商业视角的时间故事。 我的公司盛行加班(勿战),因此有些主管为了体恤加班的同仁,也方便把...
前言 在Object [上]中我们介绍了物件的宣告、型态、拷贝等等特性,接下来我们继续介绍物件中都有...
[https://codepen.io/terry-yu-the-vuer/pen/rNOrWYY?...
Display 我认为有了html和css的基本概念後 还有一个观念需要知道的 那就是display...