梯度爆炸,消失,以及常用函数。

梯度爆炸,梯度消失

让我们假设输入网络的顺序是一个20字的句子:“I grew up in France,……… I speak French fluently.”
从上面的示例可以看出,RNN要预测序列末尾的“French”一词,就需要来自“Frence”一词的信息,该信息出现在句子的开头。序列数据之间的这种依赖关系称为长期依赖关系,因为相关信息“Frence”与进行预测“French”所需的点之间的距离非常宽。不幸的是,实际上,随着距离的增加,RNN很难学习这些依赖关系,因为它遇到了消失的或爆炸性的梯度问题。

这些问题是在训练深度网络时出现的,这些梯度会一直传播到整个初始层。由于链条规则的缘故,来自较深层的梯度必须经过连续的矩阵乘法,并且当它们接近较早的层时,如果它们的值较小(<1),它们将呈指数收缩直到消失并使其不可能。要学习的模型,这是消失的梯度问题。另一方面,如果它们的值较大(> 1),它们会变大并最终炸毁并使模型崩溃,这是爆炸梯度问题。

激活函数

激活函数位于神经网络层内部,并在将其接收到的数据传递到下一层之前对其进行修改。激活函数使神经网络具有强大的功能-允许它们对复杂的非线性关系建模。通过使用非线性函数修改输入,神经网络可以对特征之间的高度复杂关系进行建模。流行的激活功能包括relu和Sigmoid。

激活功能通常具有以下属性:
非线性-在线性回归中,我们仅限于看起来像直线的预测方程式。这对于在输入和输出之间具有一对一关系的简单数据集来说是很好的,但是如果我们的数据集中的模式是非线性的,该怎么办? 为了对这些关系建模,我们需要一个非线性预测方程。¹激活函数提供了这种非线性。

连续可微-为了改进带有梯度下降的模型,我们需要输出具有良好的斜率,以便可以计算权重的误差导数。如果我们的神经元改为输出0或1(感知器),我们将不知道朝哪个方向更新权重以减少错误。固定范围激活功能通常会将输入数据压缩到一个狭窄的范围内,从而使训练模型更加稳定和有效。

损失函数

损失函数或成本函数是模型预测函数的包装,它告诉我们模型对给定参数集进行预测的“良好程度”。 损失函数具有自己的曲线和自己的导数。 该曲线的斜率告诉我们如何更改参数以使模型更准确! 我们使用该模型进行预测。 我们使用成本函数来更新我们的参数。 我们的成本函数可以采用多种形式,因为有许多不同的成本函数可用。

常用函数

首先第一个方法是我们可以采用与训练模型,假设我们现在在做图像识别的问题。
在计算机视觉中,通常通过使用预训练的模型来表达转移学习。 预训练模型是在大型基准数据集上训练的模型,用于解决与我们要解决的问题类似的问题。 因此,由于训练此类模型的计算成本,通常的做法是从已发表的文献(例如VGG,Inception,MobileNet)中导入和使用模型。 Canziani等人对使用ImageNet(Deng等人,2009年)挑战的数据对经过预训练的模型在计算机视觉问题上的性能进行了全面回顾。 (2016)。

当您根据自己的需要重新使用经过预先训练的模型时,首先要删除原始分类器,然后添加适合您目的的新分类器,最后您必须根据以下三种策略之一对模型进行微调:
1.训练整个模型。在这种情况下,您将使用预训练模型的体系结构,并根据数据集对其进行训练。您正在从头开始学习模型,因此您将需要一个大型数据集(以及大量的计算能力)。
2.训练一些图层,并使其他图层保持冻结状态。您还记得,较低的层是指一般功能(与问题无关),而较高的层是指特定功能(与问题有关)。在这里,我们通过选择想要调整网络权重的方式来进行二分法(冻结层在训练过程中不会改变)。通常,如果您的数据集较小且参数众多,则会冻结更多的图层,以免过度拟合。相反,如果数据集很大且参数数量很少,则可以通过训练更多层以适应新任务来改进模型,因为过拟合不是问题。
3.冻结卷积基数。这种情况对应于冻结权衡的极端情况。主要思想是使卷积基数保持其原始形式,然后使用其输出来填充分类器。您正在使用预训练模型作为固定的特征提取机制,如果您缺乏计算能力,数据集很小和/或预训练模型解决的问题与您所解决的问题非常相似,则该方法很有用要解决。

与应用简单的策略3不同,策略1和策略2要求您注意卷积部分中使用的学习率。 学习速率是一个超参数,它控制您调整网络权重的程度。 当您使用基于CNN的预训练模型时,明智的选择是使用较小的学习率,因为较高的学习率会增加失去先前知识的风险。 假设预先训练的模型已经过良好的训练(这是一个合理的假设),则保持较低的学习率将确保您不会过多或过多地扭曲CNN权重。

relu leaky relu elu

Elu
指数线性单位或其广泛使用的名称ELU是一种函数,它倾向于将成本更快地收敛到零并产生更准确的结果。 与其他激活功能不同,ELU具有一个额外的alpha常数,该常数应为正数。

除了负输入外,ELU与RELU非常相似。 它们都是非负输入的身份函数形式。 另一方面,ELU缓慢变平滑,直到其输出等于-α,而RELU急剧变平滑。

优点

ELU缓慢变平滑直到其输出等于-α,而RELU急剧变平滑。
ELU是ReLU的强大替代品。
与ReLU不同,ELU可以产生负输出。

缺点

当x> 0时,它会以[0,inf]的输出范围使激活无效。
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200430012000419.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05vbmVfUGFu,size_16,color_FFFFFF,t_70

Relu
代表整流线性单元的最新发明。该公式看似简单:𝑚𝑎𝑥(0,𝑧)尽管它的名称和外观,但它不是线性的,具有与Sigmoid相同的优点,但性能更高。

优点

它避免并纠正了消失的梯度问题。
ReLu在计算上比tanh和Sigmoid便宜,因为它涉及更简单的数学运算。

缺点

其局限性之一是只能在神经网络模型的隐藏层内使用。
一些渐变在训练过程中可能会很脆弱,甚至会消失。它可能导致权重更新,从而使其永远不会再在任何数据点上激活。简而言之,ReLu可能导致神经元死亡。换句话说,对于ReLu区域(x <0)中的激活,梯度将为0,因此在下降过程中权重将不会被调整。这意味着,进入该状态的那些神经元将停止对错误/输入的变化做出响应(仅因为渐变为0,什么都不会改变)。这称为垂死的ReLu问题。ReLu的范围是[0,inf)。这意味着它可以炸毁。在这里插入图片描述

LeakyReLU
LeakyRelu是ReLU的变体。 𝑧<0时不是0
泄漏的ReLU允许一个小的,非零的恒定梯度𝛼(通常𝛼 = 0.01)。 但是,目前尚不清楚各个任务的收益是否一致。

优点

ReLU泄漏是通过使负斜率较小(约0.01左右)来解决“ReLU”问题的一种尝试。

缺点

由于具有线性,因此无法用于复杂的分类。 在某些用例中,它落后于Sigmoid和Tanh。

在这里插入图片描述

Sigmoid
Sigmoid以实数值作为输入,并输出另一个介于0和1之间的值。它易于使用,并且具有激活函数的所有出色特性:它是非线性的,连续可微的,单调的,并且具有固定的输出范围。

优点

它本质上是非线性的。此功能的组合也是非线性的。
与step function不同,它将提供模拟激活。
它也具有平滑的渐变。
这对分类器很有用。
与线性函数的(-inf,inf)相比,激活函数的输出始终在(0,1)范围内。因此,我们将激活范围限制在一个范围内。它不会破坏激活过程。

缺点

朝向S形函数的任一端,Y值往往对X的变化的响应非常小。
这就产生了“消失梯度”的问题。
它的输出不是以零为中心。这会使梯度更新在不同方向上走得太远。 0 <output <1,这会使优化更加困难。
网络拒绝进一步学习或速度非常慢(取决于使用情况,直到梯度/计算受到浮点值限制的影响)。

在这里插入图片描述

Tanh
Tanh将实数值压缩到[-1,1]范围内。 它是非线性的。 但是与Sigmoid不同,它的输出是零中心的。 因此,在实际中,tanh非线性总是比S形非线性更好。

优点

tanh的梯度比S形梯度强(导数更陡峭)。
缺点

Tanh还具有消失的梯度问题。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值