深度学习之学习笔记(六) |
您所在的位置:网站首页 › 激活函数具有哪些性质和特征 › 深度学习之学习笔记(六) |
激活函数
在第三章《神经元的工作原理》中,我们曾经提到过激活函数。当时使用的是最简单的阶跃函数作为激活函数。 阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用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:一分钟理解softmax函数(超简单)
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |