梯度裁剪Grandient Clipping
生活随笔
收集整理的這篇文章主要介紹了
梯度裁剪Grandient Clipping
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
神經(jīng)網(wǎng)絡(luò)是通過梯度下降來學(xué)習(xí)的。
梯度爆炸問題一般會隨著網(wǎng)絡(luò)層數(shù)的增加而變得越來越明顯。如果發(fā)生梯度爆炸,那么就是學(xué)過了,會直接跳過最優(yōu)解。因此需要梯度裁剪,避免模型越過最優(yōu)點。
梯度裁剪有兩種方法
- 確定一個范圍,參數(shù)的gradient超過,直接裁剪。比較直接,對應(yīng)于pytorch中的nn.utils.clip_grad_value(parameters, clip_value). 將所有的參數(shù)剪裁到 [ -clip_value, clip_value]
- 根據(jù)若干參數(shù)的gradient組成的vector的L2 Norm進(jìn)行裁剪。更常見,對應(yīng)于pytorch中clip_grad_norm_(parameters, max_norm, norm_type=2)。 如果所有參數(shù)的gradient組成的向量的L2 norm 大于max norm,那么需要根據(jù)L2 norm/max_norm 進(jìn)行縮放。從而使得L2 norm 小于預(yù)設(shè)的 clip_norm
梯度裁剪使用位置
在backward得到梯度之后,step()更新之前,使用梯度剪裁,在完成計算完梯度后,進(jìn)行裁剪,然后進(jìn)行網(wǎng)絡(luò)更新的過程。
總結(jié)
以上是生活随笔為你收集整理的梯度裁剪Grandient Clipping的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 自定义View 实例2_
- 下一篇: Cesium,ClippingPlane