激活函数

出现梯度消失与梯度爆炸的原因以及解决方案

流过昼夜 提交于 2020-05-06 02:48:35
在学习李宏毅老师机器学习的相关视频时,课下做了一个有关神经网络的小Demo,但是运行效果总是不尽人意,上网查询资料,才发现是梯度爆炸和梯度消失惹的祸。今天就让我们一起来学习一下梯度消失与梯度爆炸的概念、产生原因以及该如何解决。 目录 1.梯度消失与梯度爆炸的概念 2.梯度消失与梯度爆炸的产生原因 3.梯度消失与梯度爆炸的解决方案 首先让我们先来了解一个概念:什么是梯度不稳定呢? 概念 :在深度神经网络中的梯度是不稳定的,在靠近输入层的隐藏层中或会消失,或会爆炸。这种不稳定性才是深度神经网络中基于梯度学习的根本问题。 产生梯度不稳定的根本原因 :前面层上的梯度是来自后面层上梯度的乘积。当存在过多的层时,就会出现梯度不稳定场景,比如梯度消失和梯度爆炸。 划重点 :梯度消失和梯度爆炸属于梯度不稳定的范畴 1.梯度消失与梯度爆炸的概念 梯度消失:在神经网络中,当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加,分类准确率反而下降了。这种现象叫梯度消失。 梯度爆炸:在神经网络中,当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加,分类准确率反而下降了。这种现象叫梯度爆炸。 其实梯度消失和梯度爆炸是一回事,只是表现的形式,以及产生的原因不一样。 2.梯度消失与梯度爆炸的产生原因 梯度消失:(1)隐藏层的层数过多;(2)采用了不合适的激活函数(

梯度消失、爆炸原因及其解决方法(转)

荒凉一梦 提交于 2020-05-06 02:11:12
转自: https://blog.csdn.net/qq_25737169/article/details/78847691 前言 本文主要深入介绍深度学习中的梯度消失和梯度爆炸的问题以及解决方案。本文分为三部分,第一部分主要直观的介绍深度学习中为什么使用梯度更新,第二部分主要介绍深度学习中梯度消失及爆炸的原因,第三部分对提出梯度消失及爆炸的解决方案。有基础的同鞋可以跳着阅读。 其中,梯度消失爆炸的解决方案主要包括以下几个部分。 - 预训练加微调 - 梯度剪切、权重正则(针对梯度爆炸) - 使用不同的激活函数 - 使用batchnorm - 使用残差结构 - 使用LSTM网络 第一部分:为什么要使用梯度更新规则 在介绍梯度消失以及爆炸之前,先简单说一说梯度消失的根源—–深度神经网络和反向传播。目前深度学习方法中,深度神经网络的发展造就了我们可以构建更深层的网络完成更复杂的任务,深层网络比如深度卷积网络,LSTM等等,而且最终结果表明,在处理复杂任务上,深度网络比浅层的网络具有更好的效果。但是,目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化。这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来,每一层非线性层都可以视为是一个非线性函数 f ( x ) f(x)(非线性来自于非线性激活函数)

TensorFlow(十一):递归神经网络(RNN与LSTM)

谁说我不能喝 提交于 2020-05-06 02:08:54
RNN RNN(Recurrent Neural Networks,循环神经网络)不仅会学习当前时刻的信息,也会依赖之前的序列信息。由于其特殊的网络模型结构解决了信息保存的问题。所以RNN对处理时间序列和语言文本序列问题有独特的优势。递归神经网络都具有一连串重复神经网络模块的形式。在标准的RNNs中,这种重复模块有一种非常简单的结构。 那么 S(t+1) = tanh( U*X(t+1) + W*S(t)) 。tanh激活函数图像如下: 激活函数tanh把状态S值映射到-1和1之间. RNN通过BPTT算法反向传播误差,它与BP相似,只不过与时间有关。RNN同样通过随机梯度下降(Stochastic gradient descent)算法使得代价函数(损失函数)值达到最小。 BBPT算法规则如下: 但是随着时间间隔不断增大时,RNN会丧失学习到连接很远的信息能力(梯度消失)。原因如下: RNN的激活函数tanh可以将所有值映射到-1至1之间,以及在利用梯度下降算法调优时利用链式法则,那么会造成很多个小于1的项连乘就很快的逼近零。 依赖于我们的激活函数和网络参数,也可能会产生梯度爆炸(如激活函数是Relu,而LSTM采用的激活函数是sigmoid和tanh,从而避免了梯度爆炸的情况)。一般靠裁剪后的优化算法即可解决,比如gradient clipping(如果梯度的范数大于某个给定值

RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题

倾然丶 夕夏残阳落幕 提交于 2020-05-06 01:50:51
RNN梯度消失和爆炸的原因 经典的RNN结构如下图所示: 假设我们的时间序列只有三段, 为给定值,神经元没有激活函数,则RNN最简单的前向传播过程如下: 假设在t=3时刻,损失函数为 。 则对于一次训练任务的损失函数为 ,即每一时刻损失值的累加。 使用随机梯度下降法训练RNN其实就是对 、 、 以及 求偏导,并不断调整它们以使L尽可能达到最小的过程。 现在假设我们我们的时间序列只有三段,t1,t2,t3。 我们只对t3时刻的 求偏导(其他时刻类似): 可以看出对于 求偏导并没有长期依赖,但是对于 求偏导,会随着时间序列产生长期依赖。因为 随着时间序列向前传播,而 又是 的函数。 根据上述求偏导的过程,我们可以得出任意时刻对 求偏导的公式: 任意时刻对 求偏导的公式同上。 如果加上激活函数, , 则 = 激活函数tanh和它的导数图像如下。 由上图可以看出 ,对于训练过程大部分情况下tanh的导数是小于1的,因为很少情况下会出现 ,如果 也是一个大于0小于1的值,则当t很大时 ,就会趋近于0,和 趋近与0是一个道理。同理当 很大时 就会趋近于无穷,这就是RNN中梯度消失和爆炸的原因。 至于怎么避免这种现象,让我在看看 梯度消失和爆炸的根本原因就是 这一坨,要消除这种情况就需要把这一坨在求偏导的过程中去掉,至于怎么去掉,一种办法就是使 另一种办法就是使 。其实这就是LSTM做的事情。

Relation-Shape Convolutional Neural Network for Point Cloud Analysis

霸气de小男生 提交于 2020-05-06 01:32:02
Yongcheng Liu, 2019 CVPR 1. Intuition 点之间的关系(几何拓扑结构)可能蕴含了3D点云的形状信息,所以作者设计了可以学习点之间关系(relation)的模型。从总体上看,本作符合经典的local-to-global结构,并且由FPS(Farthest Point Sampling)确定中心点,使用球查询(ball query)获取邻域,在邻域内随机采样固定数目的点。在此基础上,建模如下: $$ f_{P_{sub}} = \sigma(\mathcal{A}({\mathcal{T}(f_{x_j}), \forall x_j\in \mathcal{N}(x_i)})), \mathcal{N}(x_i)={x_j \arrowvert d(x_i, x_j) \lt r} $$ $\mathcal{T}$用于转化单点特征,比如空间转换矩阵,所以通常也就是shared mlp;$\mathcal{A}$用于综合(aggregate)各个点特征,通常是max、average、sum等;$\sigma$是激活函数。这个模型在传统2D卷积操作上也适用。 传统的卷积操作中,$\mathcal{T}(f_{x_j})=w_j \cdot f_{x_j}$,作者认为$w_j$只与$f_{x_j}$有关,并不能学习到$x_j$与$x_i$的关系,所以提出$

LSTM如何解决梯度消失或爆炸的?

廉价感情. 提交于 2020-05-06 00:45:52
from:https://zhuanlan.zhihu.com/p/44163528 哪些问题? 梯度消失会导致我们的神经网络中前面层的网络权重无法得到更新,也就停止了学习。 梯度爆炸会使得学习不稳定, 参数变化太大导致无法获取最优参数。 在深度多层感知机网络中,梯度爆炸会导致网络不稳定,最好的结果是无法从训练数据中学习,最坏的结果是由于权重值为NaN而无法更新权重。 在循环神经网络(RNN)中,梯度爆炸会导致网络不稳定,使得网络无法从训练数据中得到很好的学习,最好的结果是网络不能在长输入数据序列上学习。 3. 原因何在? 让我们以一个很简单的例子分析一下,这样便于理解。 如上图,是一个每层只有一个神经元的神经网络,且每一层的激活函数为sigmoid,则有: ( 是sigmoid函数)。 我们根据反向传播算法有: 而sigmoid函数的导数公式为: 它的图形曲线为: 由上可见,sigmoid函数的导数 的最大值为 ,通常我们会将权重初始值 初始化为为小于1的随机值,因此我们可以得到 ,随着层数的增多,那么求导结果 越小,这也就导致了梯度消失问题。 那么如果我们设置初始权重 较大,那么会有 ,造成梯度太大(也就是下降的步伐太大),这也是造成梯度爆炸的原因。 总之,无论是梯度消失还是梯度爆炸,都是源于网络结构太深,造成网络权重不稳定,从本质上来讲是因为梯度反向传播中的连乘效应。 4.

如何确定梯度爆炸和解决梯度爆炸

走远了吗. 提交于 2020-05-05 01:14:49
github博客传送门 csdn博客传送门 如何确定是否出现梯度爆炸? 训练过程中出现梯度爆炸会伴随一些 细微的信号 ,如: 模型无法从训练数据中获得更新(如低损失)。 模型不稳定,导致更新过程中的损失出现显著变化。 训练过程中,模型损失变成 NaN。 如果你发现这些问题,那么你需要仔细查看是否出现梯度爆炸问题。 以下是一些稍微 明显一点的信号 ,有助于确认是否出现梯度爆炸问题。 训练过程中模型梯度快速变大。 训练过程中模型权重变成 NaN 值。 训练过程中,每个节点和层的误差梯度值持续超过 1.0。 解决办法: 重新设计网络模型 在深度神经网络中,梯度爆炸可以通过重新设计层数更少的网络来解决。 使用更小的批尺寸对网络训练也有好处。 在循环神经网络中,训练过程中在更少的先前时间步上进行更新(沿时间的截断反向传播,truncated Backpropagation through time)可以缓解梯度爆炸问题。 使用 ReLU 激活函数 在深度多层感知机神经网络中,梯度爆炸的发生可能是因为激活函数,如之前很流行的 Sigmoid 和 Tanh 函数。 使用 ReLU 激活函数可以减少梯度爆炸。 使用长短期记忆网络 在循环神经网络中,梯度爆炸的发生可能是因为某种网络的训练本身就存在不稳定性,如随时间的反向传播本质上将循环网络转换成深度多层感知机神经网络。 使用长短期记忆(LSTM

卷积神经网络(CNN)

耗尽温柔 提交于 2020-05-02 12:26:04
卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT-CONV-RELU-POOL-FC (1)卷积层:用它来进行特征提取,如下: 输入图像是32*32*3,3是它的深度(即R、G、B),卷积层是一个5*5*3的filter(感受野),这里注意:感受野的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28*28*1的特征图,上图是用了两个filter得到了两个特征图; 我们通常会使用多层卷积层来得到更深层次的特征图。如下: 关于卷积的过程图解如下: 输入图像和filter的对应位置元素相乘再求和,最后再加上b,得到特征图。如图中所示,filter w0的第一层深度和输入图像的蓝色方框中对应元素相乘再求和得到0,其他两个深度得到2,0,则有0+2+0+1=3即图中右边特征图的第一个元素3.,卷积过后输入图像的蓝色方框再滑动,stride=2,如下: 如上图,完成卷积,得到一个3*3*1的特征图;在这里还要注意一点,即zero pad项,即为图像加上一个边界,边界元素均为0.(对原输入无影响)一般有 F=3 => zero pad with 1 F=5 => zero pad with 2 F=7=> zero pad with 3,边界宽度是一个经验值,加上zero

AI:神经网络调参(数据、层数、batch大小,学习率+激活函数+正则化+分类/回归)并进行结果可视化

折月煮酒 提交于 2020-05-01 17:21:49
AI:神经网络调参(数据、层数、batch大小,学习率+激活函数+正则化+分类/回归)并进行结果可视化 目录 神经网络调参(数据、层数、batch大小,学习率+激活函数+正则化+分类/回归)并进行结果可视化 1、复杂数据采用多层多个神经网络,才可以得到更好的分类 神经网络调参(数据、层数、batch大小,学习率+激活函数+正则化+分类/回归)并进行结果可视化 1、复杂数据采用多层多个神经网络,才可以得到更好的分类 MLDL常用小工具集合 Neural Network Browser By Google 来源: oschina 链接: https://my.oschina.net/u/4383081/blog/4261038

12倍端到端加速,陈天奇创业公司OctoML提出克服二值网络瓶颈新方法

主宰稳场 提交于 2020-04-27 10:30:37
去年,TVM 开发团队陈天奇等人创建了 OctoML 公司 ,旨在「让机器学习可以部署在所有硬件上」。前段时间,该公司推出了第一个软件即服务产品 Octimizer ,可以帮助开发者更方便、快捷地将 ML 模型部署到设备上。近日,该公司官方博客又介绍了一种快速端到端二值神经网络——Riptide,使用 TVM 进行优化时可以实现最高 12 倍的端到端加速。该公司机器学习系统工程师 Josh Fromm 在博客中介绍了 Riptide 的细节。 选自medium,作者:Josh Fromm,机器之心编译,机器之心编辑部。 Riptide 是一种新的模型量化方法,可以将模型量化至 1、2 位。研究团队今年三月在 MLSys 上介绍了 Riptide,这篇文章主要讲一下为什么要构建 Riptide,并快速了解它的幕后工作原理。团队计划来年将 Automatic ultra low-bit 功能添加到 Octomizer 中。在此之前,读者可以使用开源 Riptide 项目和 MLSys 论文中的信息来进行模型优化。 论文链接: https:// proceedings.mlsys.org/s tatic/paper_files/mlsys/2020/155-Paper.pdf GitHub 项目: https:// github.com/jwfromm/Ript ide 、 动机及背景