首页 > 其他分享 >TensorFlow11.4 循环神经网络-梯度弥散与梯度爆炸

TensorFlow11.4 循环神经网络-梯度弥散与梯度爆炸

时间:2023-06-25 23:11:29浏览次数:42  
标签:TensorFlow11.4 clip 梯度 l2norm 神经网络 threshold norm

RNN并没有我们想象中的那么完美,虽然它的参数会比卷积神经网络少,但是它长时间的Training可能会出现Training非常困难的情况。
image
我们知道在卷积神经网络中我们层数堆叠的越多的时候会出现很多问题,这个RNN中也是这样的如果我们在时间的维度上拓展的很深的话,也会出现一个梯度爆炸或者梯度弥散的情况。
image
为什么会出现这种情况呢?
image
我们发现这个求梯度的时候会出现\(W_{hh}^k\),我们发现他又一个K次方。
image
在我们求梯度的时候我们的\(W_{hh}\)>1的时候,他的k次方很可能会->\(+\infty\),如果这个\(W_{hh}\)<1的时候他很有可能会->0。

1.Geadient Exploding怎么解决

image
这里一个解决方法就是我们首先设置一个threshold,如果我们的grad大于这个threshold的时候我们立即用threshold*\(\frac{g}{||g||}\),其中这个\(\frac{g}{||g||}\)相当于他的一个方向向量,就是把他的模变为1,但是它还保留这他的方向,在乘threshold,就可以把他的数值保存在threshold之内。
就是保留他的方向,然后控制到threshold之间
这种方法虽然没有从根本上解决,但是还是比较有效的解决这个问题。
image

其中

tf.clip_by_norm(
t, clip_norm, axes=None, name=None
)
t: 输入tensor,也可以是list
clip_norm: 一个具体的数,如果l2norm(t) ≤ clip_norm, 则t不变化;否则t=t∗clip_norm / l2norm(t)
axes:指定计算l2norm的维度,如果不指定,利用t中所有元素计算l2norm,对于一维tensor没有影响,对于二维tensor会有影响
这个函数就是将t还是按照他的方向进行放缩,使其里面的数全都小于clip_norm

image

这个clip_by_norm比较常用于解决梯度爆炸。

2.Geadient Vanishing怎么解决

image

这个很好的解决方法就是LSTM

标签:TensorFlow11.4,clip,梯度,l2norm,神经网络,threshold,norm
From: https://www.cnblogs.com/lipu123/p/17504158.html

相关文章

  • TensorFlow11.3 循环神经网络RNN-情感分类实战
    这个就是好评和差评的一个分类。这个输入一般\(h_0\)全为0.要想实现这个结构有两种方案:SimpleRNNCell(这个更接近原理)singlelayermulti-layersRNNCell(这个方便使用)1.加载数据(x_train,y_train),(x_test,y_test)=keras.datasets.imdb.load_data(num_words=1000)#......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我们......
  • 深入理解神经网络之逻辑回归
    本文摘自《深入理解神经网络:从逻辑回归到CNN》......
  • TensorFlow11.2 循环神经网络RNN-循环神经网络、RNN-layer实现
    循环神经网络SentimentAnalysis(情感分析)类似于淘宝的好评还是差评,我们比较直观的一个方法就是:这里不好的是:Downsides:1.Longsentence100+wordstoomuchparameters[w,b]。就是比如说我们有100个单词,会产生很多个w,b,参数太多了。2.Nocontextinformation(没有语......
  • TensorFlow11.1 循环神经网络RNN01-序列表达方法
    在自然界中除了位置相关的信息(图片)以外,还用一种存在非常广泛的类型,就是时间轴上的数据,比如说序列信号,语音信号,聊天文字。就是有先后顺序。对于下面这个:不如说我们输入有10个句子,每个句子都有4个单词,然后我们怎么把这些句子转化为具体的数值呢。如果一个表示方法能够很好的表示这......
  • TensorFlow10.4 卷积神经网络-ResNet与DenseNet及ResNet实战
    1ResNet我们是实验发现在我们堆叠更多的网络结构的时候,我们并不能又一个很好的结果,就是它网络层次变多了之后他会产生一个多层的loss的堆叠,使得梯度爆炸,或者梯度弥散。然后我们想了一个办法,就是我们比如说设置了一个30层的神经网络,我们在差也不能比22层的差。就是我们设置了一......
  • 深度卷积神经网络(AlexNet)
    1.AlexNet\(2012\)年,\(AlexNet\)横空出世。使用\(8\)层卷积神经网络,赢得\(ImageNet\2012\)图像识别挑战赛。\(AlexNet\) 网络结构:1.1第一个卷积层卷积运算:原始数据为\(227\times227\times3\)的图像。卷积核尺寸\(11\times11\times3\),步长\(4\),每次......
  • U-Net: 专注生物医学分割的卷积神经网络(翻译)
    原文链接:https://arxiv.org/pdf/1505.04597.pdf摘要:普遍认为,优秀的深度神经网络离不开数千个标注训练样本。在本文中,我们提出了一种网络和训练策略:该策略通过使用大量数据增强,从而充分利用带标注的训练样本;该网络结构包括了用于捕获上下文的收缩路径和用于实现精确定位的对称扩......
  • TensorFlow10.4 卷积神经网络-batchnorm
    我们发现这个sigmoid函数在小于-4或者大于4的时候他的导数趋近于0。然后我们送进去的input的值在[-100,100]之间,这样很容易引起梯度弥散的现象。所以我们一般情况下使用ReLU函数,但是我们有时候又不得不使用sigmoid函数。这个时候我们在送到下一层的时候我们应该先经过Normalizatio......