深度学习之学习笔记(六)—— 激活函数
激活函数 在第三章《神经元的工作原理》中,我们曾经提到过激活函数。当时使用的是最简单的阶跃函数作为激活函数。 阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数。Sigmoid函数的定义和图形如下: Sigmoid函数把可能在较大范围内变换的输入值挤压到(0,1)输出范围内,因此也称为“ 挤压函数 ”(Squashing function)。 其中 , Sigmoid函数被选为激活函数还有一个很重要的原因是它的 导数很容易计算。 求导过程如下: 先将 稍微变形,有 记 , 则 其中 根据复合函数求导法则: 若 ,则 为什么要计算激活函数的导数?这个我们在后面《误差反向传播法》一章里解释。 非线性激活函数 ( ) 可以很明显地看出,Sigmoid函数是一个非线性函数。关于线性函数和非线性函数的定义如下: 输出值是输入值的常倍数的函数称为 线性函数 ,用数学式表示为 , 为常数。因此线性函数是一条直线 非线性函数 ,就是指不像线性函数那样呈现出一条直线的函数,比如Sigmoid函数 所有的 激活函数 都是 非线性函数 让我们回顾一下神经网络训练时的具体操作:我们将输入 和它对应的权重 相乘,并将激活函数 应用于该乘积来获取该层的输出,并将激活函数的运算结果作为输入馈送到下一个层。 问题是,为什么我们一定要加上一个非线性的激活函数来处理输入信号呢?