梯度爆炸的解决办法
- 良好的参数初始化策略也能缓解梯度爆炸问题(权重正则化)https://blog.csdn.net/qq_35290785/article/details/93917405
- 使用线性整流激活函数,如 ReLU 等
- 梯度截断(gradient clipping)——如果梯度超过某个阈值,就对其进行限制
梯度截断策略(gradient clipping)
梯度爆炸是深度学习中十分常见的现象,有时会导致寻优过程不收敛,或者算出来的结果干脆直接溢出,例如在Python里都是Nan,使迭代无法继续下去。TensorFlow里提供了一系列简单可行的梯度裁剪函数,方便我们对超过阈值的梯度值进行规约,使优化算法相对更加数值稳定。
TensorFlow里提供的几个Gradient Clipping函数都是以clip_by开头
https://blog.csdn.net/jetFlow/article/details/80161354
下面是 Tensorflow 提供的几种方法:
-
tf.clip_by_value(t, clip_value_min, clip_value_max)
-
tf.clip_by_norm(t, clip_norm)
-
tf.clip_by_average_norm(t, clip_norm)
-
tf.clip_by_global_norm(t_list, clip_norm)