您的位置:首页 > 其它

TensorFlow-tf.clip_by_global_norm函数原理

2017-08-15 15:49 351 查看
Gradient Clipping的引入是为了处理gradient explosion(不是gradients vanishing)的问题。当在一次迭代中权重的更新过于迅猛的话,很容易导致loss
divergence。Gradient Clipping的直观作用就是让权重的更新限制在一个合适的范围。

Gradient Clipping的具体细节是 

1.在solver中先设置一个
clip_gradient
 

2.在前向传播与反向传播之后,我们会得到每个权重的梯度
diff
,这时不像通常那样直接使用这些梯度进行权重更新,而是先求所有权重梯度的平方和
sumsq_diff
,如果
sumsq_diff
 > 
clip_gradient
,则求缩放因子
scale_factor
 = 
clip_gradient
 / 
sumsq_diff
。这个
scale_factor
在(0,1)之间。如果权重梯度的平方和
sumsq_diff
越大,那缩放因子将越小。 

3.最后将所有的权重梯度乘以这个缩放因子,这时得到的梯度才是最后的梯度信息。

这样就保证了在一次迭代更新中,所有权重的梯度的平方和在一个设定范围以内,这个范围就是clip_gradient.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: