赣州网站制作培训,江苏网站开发建设电话,建设通查询中标,房地产在线开盘目录
线性激活函数
阶跃激活函数
S型激活函数
双曲正切激活函数
修正线性单元
Softmax激活函数
偏置扮演什么角色#xff1f; 政安晨的个人主页#xff1a;政安晨 欢迎 #x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨…目录
线性激活函数
阶跃激活函数
S型激活函数
双曲正切激活函数
修正线性单元
Softmax激活函数
偏置扮演什么角色 政安晨的个人主页政安晨 欢迎 点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益如有不足之处欢迎在评论区提出指正 本文目标介绍激活函数。
在神经网络编程中激活函数或传递函数为神经元的输出建立界限。神经网络可以使用许多不同的激活函数。我们将在本文中讨论最常见的激活函数。为神经网络选择激活函数是一个重要的考虑因为它会影响输入数据格式化的方式。在本文中我们将指导你选择激活函数。
线性激活函数
最基本的激活函数是线性函数因为它根本不改变神经元输出。下面公式展示了程序通常如何实现线性激活函数 如你所见这个激活函数只是返回神经元输入传递给它的值。下图展示了线性激活函数的图像。 为学习提供数值的回归神经网络通常会在其输出层使用线性激活函数。分类神经网络即为其输入确定合适类别的神经网络通常在其输出层使用Softmax激活函数。
阶跃激活函数
阶跃或阈值激活函数是另一种简单的激活函数。神经网络最初称为“感知机”perceptron。McCulloch和Pitts1943引入了最初的感知机并使用了如下公式一样的阶跃激活函数 上面公式为0.5或更高的输入值输出1为所有其他输入值输出0。阶跃激活函数通常被称为阈值激活函数因为它们仅对大于指定阈值的值返回1真如下图所示。 S型激活函数
对于仅需要输出正数的前馈神经网络S型Sigmoid激活函数或逻辑激活函数是非常常见的选择。虽然它使用广泛但双曲正切激活函数或ReLU激活函数通常是更合适的选择。我们将在后面介绍ReLU激活函数。下面公式展示了S型激活函数 使用S型激活函数以确保值保持在相对较小的范围内如下图所示从图中可以看出大于或小于0的值都会被压缩到01的范围内。 双曲正切激活函数
对于必须输出−11的值的神经网络双曲正切tanh激活函数也是非常常见的激活函数如下公式所示 双曲正切激活函数图像的形状类似S型激活函数图像的形状如下图所示 双曲正切激活函数相对S型激活函数具有诸多优点。这些优点涉及神经网络训练中使用的导数我们以后在“反向传播训练”中介绍。
修正线性单元
修正线性单元ReLU由Teh和Hinton在2000年引入在过去几年中得到了迅速的应用。在ReLU激活函数之前双曲正切激活函数通常被视为优先选择的激活函数。由于出色的训练结果目前大多数最新研究都推荐ReLU激活函数。因此大多数神经网络应该在隐藏层上使用ReLU激活函数在输出层上使用Softmax或线性激活函数。
下面公式展示了非常简单的ReLU激活函数 现在我们将研究为什么ReLU激活函数通常比隐藏层的其他激活函数要好。性能提高的部分原因在于ReLU激活函数是线性的非饱和激活函数。与S型激活函数/逻辑激活函数或双曲正切激活函数不同ReLU不会饱和到−1、0或1。饱和激活函数总是朝向并最终获得一个值。如双曲正切激活函数在x减小时饱和到−1在x增大时饱和到1。
下图展示了ReLU激活函数的图像
最新研究表明神经网络的隐藏层应使用ReLU激活函数。
Softmax激活函数
与线性激活函数一样通常会在神经网络的输出层中找到Softmax激活函数。Softmax激活函数用于分类神经网络。分类神经网络中具有最高值的神经元可以宣称神经网络的输入属于它的分类。因为它是一种更好的方法所以Softmax激活函数会强制神经网络的输出表示输入落入每个类的概率。如果没有Softmax激活函数则神经元的输出就是数值值最高的数表示获胜的类。
为了了解如何使用Softmax激活函数我们来研究一个常见的神经网络分类问题。 鸢尾花数据集包含针对150种不同鸢尾花的4个测量值。这些花中的每一种都属于3个鸢尾花物种之一。当你提供花朵的测量值时Softmax激活函数允许神经网络为你提供这些测量值属于这3个物种的概率。如神经网络可能会告诉你该鸢尾花有80%的概率是setosa有15%的概率是virginica只有5%的概率是versicolour。因为这些是概率所以它们的总和必须是100%。不可能同时有80%的概率是setosa、75%的概率是virginica、20%的概率是versicolour——这种结果是毫无意义的。 要将输入数据分为3个鸢尾花物种之一则对于这3个物种中的每一个你都需要一个输出神经元。输出神经元并不指定这3个物种各自的概率。因此我们期望提供的这些概率总和为100%。而神经网络将告诉你花朵属于这3个物种中每一个的概率。 要获得概率请使用下面公式中的Softmax函数 Softmax激活函数的计算方法与咱们前面介绍的其他激活函数不同。在使用Softmax作为激活函数时单个神经元的输出取决于其他输出神经元。
下面是用伪代码实现了Softmax激活函数
def softmax(neuron_output):sum 0for v in neuron_output:sum sum vsum math.exp(sum)proba [ ]for i in range(len(neuron_output)):proba[i] math.exp(neuron_output[i])/sum return proba
请考虑一个训练好的神经网络它将数据分为三类如3个鸢尾花物种。在这种情况下你将为每个目标分类使用一个输出神经元。请考虑神经网络要输出以下内容 Neuron 1: setosa: 0.9 Neuron 2: versicolour: 0.2 Neuron 3: virginica: 0.4 从上面的输出中我们可以清楚地看到神经网络认为数据代表了setosa鸢尾花。但是这些值不是概率。值0.9不表示数据有90%的概率代表setosa。这些值的总和为1.5。要将它们视为概率它们的总和必须为1。
该神经网络的输出向量如下 [0.9, 0.2, 0.4] 如果将此向量提供给Softmax激活函数则返回以下向量 [0.47548495534876745, 0.2361188410001125, 0.28839620365112] 以上3个值的总和为1可以视为概率。由于向量中的第一个值四舍五入为0.4848%因此数据表示setosa的概率为48%。你可以通过以下方式计算该值 sumexp(0.9)exp(0.2)exp(0.4)5.17283056695839 j0exp(0.9)/sum0.47548495534876745 j1exp(0.2)/sum0.2361188410001125 j2exp(0.4)/sum0.28839620365112 偏置扮演什么角色
在上文中看到的激活函数指定了单个神经元的输出。神经元的权重和偏置bias共同决定了激活的输出以产生期望的输出。要查看这个过程如何发生请考虑下面公式。它表示了单输入的S型激活神经网络 变量x表示神经网络的单个输入。w和b变量指定了神经网络的权重和偏置。上面公式是一种组合包含了指定神经网络的公式和指定S型激活函数的公式。
通过调整神经元的权重可以调整激活函数的斜率或形状。下图展示了权重变化对S型激活函数输出的影响 下图展示了使用以下参数的多个S型曲线 f(x, 0.5, 0.0) f(x, 1.0, 0.0) f(x, 1.5, 0.0) f(x, 2.0, 0.0) 为了生成这些曲线我们没有使用偏置这很显然因为每种情况下第3个参数都是0。使用4个权重值会在上图中产生4条不同的S型曲线。无论权重如何当x为0时我们总是得到相同的值0.5因为当x为0时所有曲线都到达同一点。当输入接近0.5时我们可能需要神经网络产生其他值。
调整偏置会使S型曲线发生移动这使得当x接近0时该函数取值不为0.5。下图展示了权重为1.0时偏置变化对S型激活函数输出的影响。
下图展示了具有以下参数的多条S型曲线 f(x, 1.0, 1.0) f(x, 1.0, 0.5) f(x, 1.0, 1.5) f(x, 1.0, 2.0) 这些函数的权重均为1.0。当我们调整不同的偏置时S型曲线向左或向右移动。由于所有曲线在右上角或左下角发生合并因此并不是完全的移位。当我们将偏置和权重放在一起时它们生成了一条曲线该曲线创建了神经元所需的输出。
以上曲线仅是一个神经元的输出。在一个完整的神经网络中许多不同神经元的输出将合并以产生复杂的输出模式。