激活函数
在第三章《神经元的工作原理》中,我们曾经提到过激活函数。当时使用的是最简单的阶跃函数作为激活函数。
阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数。Sigmoid函数的定义和图形如下:
Sigmoid函数把可能在较大范围内变换的输入值挤压到(0,1)输出范围内,因此也称为“挤压函数”(Squashing function)。
其中
,Sigmoid函数被选为激活函数还有一个很重要的原因是它的导数很容易计算。
求导过程如下:
先将
稍微变形,有记
,则
其中
根据复合函数求导法则:
若
,则
为什么要计算激活函数的导数?这个我们在后面《误差反向传播法》一章里解释。
非线性激活函数()
可以很明显地看出,Sigmoid函数是一个非线性函数。关于线性函数和非线性函数的定义如下:
输出值是输入值的常倍数的函数称为线性函数,用数学式表示为
, 为常数。因此线性函数是一条直线非线性函数,就是指不像线性函数那样呈现出一条直线的函数,比如Sigmoid函数
所有的激活函数都是非线性函数
让我们回顾一下神经网络训练时的具体操作:我们将输入
和它对应的权重相乘,并将激活函数应用于该乘积来获取该层的输出,并将激活函数的运算结果作为输入馈送到下一个层。问题是,为什么我们一定要加上一个非线性的激活函数来处理输入信号呢?
如果我们不运用非线性激活函数的话,则输出信号将仅仅是一个简单的线性函数。而且无论如何加深层数,一直在做的只是计算线性激活函数,线性函数的复合函数仍然是线性函数。
例如:把
作为激活函数,把 的运算对应3层神经网络,那么。 可以由 ( 其中 ),这一次乘法运算来表示。因此在这种情况下,无论神经网络有多少层,都只是把输入线性组合再输出,结果仍然是线性的。
那么为什么我们需要非线性函数?
我们在第二章《AI / ML / DL的基本概念》中介绍过,神经网络被认为是通用函数近似器(Universal Function Approximators)。这意味着它们可以计算和学习任何函数。几乎我们可以想到的任何过程都可以表示为神经网络中的函数计算。所以我们需要一个可以学习和表示几乎任何东西的神经网络模型,以及可以将输入映射到输出的任意复杂函数。而非线性激活函数正是具有这样优点的函数。非线性激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数。这样我们的神经网络就可以学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。也可以理解一些复杂的事情,即一些相互之间具有很多隐藏层的非线性问题。
其他激活函数
除了Sigmoid函数,还有其他的非线性激活函数。它们优缺点的比较在网上有很多,这里不一一赘述。
Softmax函数
Softmax函数通常用于输出层,特别是在多元分类问题中。Softmax函数又称归一化指数函数。它是二分类函数Sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。
Softmax函数以一种特殊的方式将一个向量
归一化成和为1。在基于神经网络的分类任务中,经常用Softmax函数将神经网络的多维输出 归一化成一个概率向量 ,如下式:
我们知道概率有两个性质:1)预测的概率为非负数;2)各种预测结果概率之和等于1。Softmax就是将在负无穷到正无穷上的预测结果按照这两步转换为概率的。
1) 将预测结果转化为非负数
我们知道指数函数的值域取值范围是零到正无穷。下图为
的图像:softmax第一步就是将模型的预测结果转化到指数函数上,这样保证了概率的非负性。
2) 各种预测结果概率之和等于1
为了确保各个预测结果的概率之和等于1。我们只需要将转换后的结果进行归一化处理。方法就是将转化后的结果除以所有的值转化后结果之和,可以理解为转化后结果占总数的百分比。这样就得到近似的概率。
下图展示了softmax的计算方法:
如上图所示,假如模型对一个三分类问题的预测结果为3、1、-3。我们用Softmax将模型结果转为概率。步骤如下:
1)将预测结果转化为非负数
2)各种预测结果概率之和等于1
其中,
含义是,模型对该样本的预测结果显示,该样本属于第一种类型的概率是88%,属于第二种类型的概率是12%,属于第三种类型的概率是0。
下一章,我们将介绍计算权重
的调整值所用的损失函数。
References:
来源:CSDN
作者:肖恩林
链接:https://blog.csdn.net/linxiaoyin/article/details/104088805