美文网首页计算机视觉TensorFlow
7.激励函数(激活函数)

7.激励函数(激活函数)

作者: TensorFlow开发者 | 来源:发表于2019-03-31 00:14 被阅读0次
 本文目录:

-- 什么是激励函数
-- 常见的激励函数
-- 如何选用激励函数
-- TensorFlow中激励函数的相关接口汇总
-- 小结

什么是激励函数

在计算机深度学习时,总会经常遇到一些之前完全没有听说过的词汇,比如激励函数、卷积、池化、交叉熵,刚开始可能会觉得特别生涩、一时间不理解,这没关系,当深入理解这个词汇背后所代表的具体含义后,发现其实这些词汇也是可以慢慢接受的(习惯了就好了...)。

神经元

通常,一层中的神经元经过加权求和,然后再经过非线性方程得到的结果转化为输出,或者作为下一层的输入。激励函数,说白了就是非线性方程。

激励函数的作用:通过激活函数会将数据压缩到一定的范围区间内,得到的数据的大小将决定该神经元是否处于活跃状态,即:是否被激活。这使得神经网络可以更好地解决较为复杂的问题。

常见的激励函数:sigmoid函数、tanh函数、ReLu函数、SoftMax函数等等。

常见的激励函数

1. sigmoid函数

先来看下sigmoid函数表达式:


sigmoid函数表达式

sigmoid函数图像:


sigmoid函数图像

优点:
1.输出结果在(0, 1)之间,输出范围有限,优化起来稳定可控;
2.单调连续,求导方便;

缺点:
1.根据图像也可容易看出:极易饱和。
当输入范围在(-∞, -4)或(4, +∞)时,就落入了饱和区,一阶导数接近0,这就使得容易产生梯度消失,进而导致训练出现问题。

2.输出是在(0, 1)之间,这是优点;但不是以0为中心,所以也是缺点。

2. tanh函数

tanh函数表达式及图像:


tanh函数函数表达式 tanh函数图像

优点:
1.输出结果在(-1, 1)之间,输出范围有限,且以0为中心;
2.单调连续,收敛速度比sigmoid更快;

缺点:
1.根据图像也可容易看出:同sigmoid一样,极易饱和。
当输入范围在(-∞, -2)或(2, +∞)时,就落入了饱和区,一阶导数接近0,这就使得容易产生梯度消失,进而导致训练出现问题。

3. ReLu函数

ReLu函数表达:f(x) = max(0, x)
ReLu函数图像:

ReLu函数图像

优点:
1.收敛速度比sigmoid、tanh函数更快;
2.当x>0时,保持梯度不衰减,从而可以有效缓解梯度消失的问题。

缺点:
1.当x<0时,硬饱和,这会导致部分输入对应的权重无法更新,可能会出现“神经元死亡”。

4.softplus函数

softplus函数对relu函数做了平滑处理,其表达式为:f(x) = log(1 + e^x);

softplus函数和relu函数图像
5.SoftMax函数

我们先来看看这种激励函数出现的输出层是什么样子:


从样子上来看这种方式跟普通的全连接层没有什么区别,但是激励函数的形式却大大 不同 。
首先后面一层作为预测分类的输出节点,每一个节点就代表一个分类 ,那么这 7个节 点就最多能够表示 2 个分类的模型 。 任何一个节点的激励函数都是:


其中 i就是节点的下标次序,而:



也就是说这是一个线性分类模型的输出作为自然常数e的指数。 最有趣的是最后这一层有这样一个特性,那就是:


也就是说最后一层的每个节点的输出值加和是1。 这种激励函数从物理意义上可以解释为一 个样本通过网络进行分类的时候在每个节点上输出的值都是小于等于1的,是它从属于这个分类的概率。

在训练的时候方法大家可能也已经猜到了,就是拿到一个训练样本和给分 类标签一个下标序号,然后对应的节点给1,其他给0。

说明:SoftMax这种激励函数使用的损失函数看上去比较特殊,叫做交叉熵(cross entropy)损失函数。 什么叫交叉摘损失函数呢,如何理解这种函数呢? 等后面总结代价函数时专门介绍。

6.dropout函数

当一个神经元以概率keep_prob为标准决定是否被激活,如果被激活,那么该神经元的输出将被放大到原来的1/keep_prob倍;如果不被激活,则神经元的输出为0。

默认情况下,每个神经元是否被激活是相互独立的。dropout激活函数格式为:
tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)

如何选用激励函数?

激励函数在神经网络中起着非常重要的作用,理论上添加激励函数的神经网络可以收敛为任意一个函数,因激励函数各有特色,所以使用时,应根据具体情况具体分析。一般选用规则为:

-当输入的数据特征相差明显时,用tanh效果更好;
-当特征相差不明显时,用sigmoid函数比较好;
-sigmoid和tanh作为激励函数需要对输入进行规范化处理,否则激活后的值可能进入饱和区,而relu不会出现这种情况,有时relu甚至不需要要求输入规范化,因此目前85%~90%的神经网络会采用relu函数。

TensorFlow中相关接口汇总

tf.sigmoid(features, name=None)

tf.tanh(features, name=None)

tf.nn.relu(features, name=None)

tf.nn.softplus(features, name=None)

tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)

小结

对神经网络学习中的激励函数进行总结。激励函数,说白了就是非线性方程。

相关文章

  • 7.激励函数(激活函数)

    什么是激励函数 在计算机深度学习时,总会经常遇到一些之前完全没有听说过的词汇,比如激励函数、卷积、池化、交叉熵,刚...

  • 机器学习

    常用激活函数(激励函数) Sigmoid函数 Relu函数

  • 机器学习 激励函数

    激励函数(activation function)——也有翻译成激活函数的,也是神经元中重要的组成部分。激励函数在...

  • 深度学习之激活函数详解

    激活函数是什么 激活函数,即Activation Function,有时候也称作激励函数。它是为了解决线性不可分的...

  • 神经网络中的激活函数-tanh

    为什么要引入激活函数 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输...

  • 选用Relu 替代tanh 与sigmoid 的原因

    为什么要引入激活函数? 如果不用激活函数(其实相当于激励函数是f(x)=x),在这种情况下你每一层输出都是上层输入...

  • 12- 深度学习之神经网络核心原理与算法-Softmax

    softmax 输出层的激励函数softmax 前面我们已经接触了一种激励函数,sigmoid函数。含义: 似然度...

  • 《莫烦TensorFlow》笔记

    激励函数 激励函数推荐: CNN:relu RNN:relu or tanh 优化器 SGD将大块数据拆分输入神经...

  • 机器学习中常用的激励函数

    神经网络中的激励函数为神经元提供了规模化的非线性化能力。常见的激励函数包括sigmoid函数,tanh函数和ReL...

  • 激励函数

    激励函数通常是非线性的,其通过对线性矩阵运算结果的非线性变化,使用神经网络得以拟合任意函数 1. 数据准备 2. ...

网友评论

    本文标题:7.激励函数(激活函数)

    本文链接:https://www.haomeiwen.com/subject/rjrebqtx.html