DAY18:激活函数

激活函数

  • 每个神经元都有一个激活函数,由这层神经元输出给下层神经元的输入,中间就会有个函数关系,将之做非线性转换。

  • 使用激活函数,可使上一层节点做非线性转换,从而获取充分的特徵组合,野使神经网路可以充分学习到更多;若只做最原始的线性转换,那麽神经网路学习的就非常有限。

  • 在神经网路加上激活函数後,可学习到非线性的曲线,来对非线性的数据加以处理。
    图片来源:https://codingnote.cc/zh-tw/p/176736/

  • 早期研究,主要采用激活函数如sigmoid、tanh。近年大多用ReLU来做研究,以及由ReLU所改进的Leaky-ReLU、P-ReLU等等。


Sigmoid

  • 又称Logistic函数,是最早也使用范围最广的一类激活函数,可用来做二分类,其值的范围[0,1]。
    图片来源:https://codingnote.cc/zh-tw/p/176736/
    • 优点:其输出范围限於0~1之间,且为连续变数,便於求导,可用於输出层。

    • 缺点:可观察上图,其上下两侧趋近於平坦,对输入有微小改变时,变得较不敏感,梯度趋近於0,权重不会更新,容易出现梯度消失的状况。


Tanh

  • 又称双曲正切曲线,其取值为[-1,1],为sigmoid的变形。
    图片来源:https://codingnote.cc/zh-tw/p/176736/

  • 相较Sigmoid,其中间值为0,会比Sigmoid更能提供给下一层神经元做学习。

    • 优点:较Sigmoid收敛速度快。
    • 缺点:依旧存在良两侧趋於平坦,会有梯度消失的状况。

ReLU

  • 线性整流函数,针对Sigmoid及Tanh的缺点做改善,是现代神经网路中最常用的激活函数。

    图片来源:https://codingnote.cc/zh-tw/p/176736/

  • 计算简单,在X>0的区段上,不会出现梯度消失的状况,但若在X<0的区段上,直接无法更新,造成梯度为0的情况。

    • 优点:计算速度快,加速收敛的速度,在X>0区间解决了梯度消失的问题。
    • 缺点:X<0的区间,发生dead ReLU的现象,梯度恒为0,导致神经元无法激活死亡。
      • 产生原因:参数初始化、learning rate太大。
      • 解决方法:采用Xavier初始化方法、避免将learning rate设置太大。

Leaky-ReLU

  • 为了解决dead ReLU的问题,将X<0的区段更趋向於激活而不会让其死亡。f(x)=max(ax, x),其中a通常为0.01。

    图片来源:https://codingnote.cc/zh-tw/p/176736/
  • 其优缺点跟ReLU相似,但解决了X<0的区段梯度消失的问题。

PReLU

  • 与Leaky-ReLU相似,差别在於f(x)=max(ax, x)的a为透过反向传播求得,为非固定的。同样为了解决dead ReLU问题而改善的。

ELU


Maxout

  • 有这ReLU的优点,却不会有dead ReLU问题,拟合能力强,但计算较为复杂,是原本参数的一倍。

  • 详细可参考


今日小结


<<:  [Day 20] Facial Recognition: OpenCV + Dlib可以一次满足

>>:  初学者跪着学JavaScript Day18 : 物件:new Map()

前端工程学习日记第11天

https://codepen.io/pwbzvqja/pen/MWeBbXQ 作业目标: 作业批改...

关於商业视角的时间故事

今天谈一个在商业视角的时间故事。 我的公司盛行加班(勿战),因此有些主管为了体恤加班的同仁,也方便把...

[JS] You Don't Know JavaScript [this & Object Prototypes] - Object [下]

前言 在Object [上]中我们介绍了物件的宣告、型态、拷贝等等特性,接下来我们继续介绍物件中都有...

日记19

[https://codepen.io/terry-yu-the-vuer/pen/rNOrWYY?...

Day15来吧 展示(CSS)

Display 我认为有了html和css的基本概念後 还有一个观念需要知道的 那就是display...