深度学习:梯度裁剪的理解

深度学习:梯度裁剪的理解

  • 梯度裁剪简介
    • 设置范围值裁剪
    • 通过 L2 范数裁剪

在深度学习领域,梯度裁剪是一个常用的技巧,用于防止梯度过小或过大。下面简单介绍一下 梯度裁剪的原理与方法。

梯度裁剪简介

在深度学习模型的训练过程中,通过梯度下降算法更新网络参数。一般地,梯度下降算法分为前向传播和反向更新两个阶段。
在前向传播阶段,输入向量通过各层神经元的计算,得到输出向量,假设网络可以用一个抽象函数 f f f表示,则公式为:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ y = f(x) \end{…
在计算出网络的估计值后,使用类似均方误差的方法,计算出真值和估计值之间的差距,即损失函数loss:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ loss = \frac{1…
在反向更新阶段,调整网络参数 θ \theta θ包括权重 W W W和偏差 b b b。为了更新网络参数,首先要计算损失函数对于参数的梯度 ∂ l o s s ∂ θ \frac{\partial loss}{\partial \theta} θloss,然后使用某种梯度更新算法,执行一步梯度下降,以减小损失函数值。如下式:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \theta_{t+1} =…
注意:从上式可以看出有时候,减小学习率和梯度裁剪是等效的。
在上述训练过程中,可能出现梯度值变得特别小或者特别大甚至溢出的情况,这就是所谓的“梯度消失”和“梯度爆炸”,这时候训练很难收敛 。梯度爆炸一般出现在由初始权重计算的损失特别大的情况,大的梯度值会导致参数更新量过大,最终梯度下降将发散,无法收敛到全局最优。此外, 随着网络层数的增加,"梯度爆炸"的问题可能会越来越明显。考虑具有三层隐藏层网络的链式法则公式,如果每一层的输出相对输入的偏导 > 1,随着网络层数的增加,梯度会越来越大,则有可能发生 “梯度爆炸”。
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \frac{\partial…

当出现下列情形时,可以认为发生了梯度爆炸:两次迭代间的参数变化剧烈,或者模型参数和损失函数值变为 NaN

如果发生了 “梯度爆炸”,在网络学习过程中会直接跳过最优解,甚至可能会发散(无法收敛),所以有必要进行梯度裁剪,防止网络在学习过程中越过最优解。梯度裁剪方式:设置范围值裁剪和通过 L2 范数裁剪。

设置范围值裁剪

设置范围值裁剪方法简单,将参数的梯度限定在一个范围内,如果超出这个范围,则进行裁剪(大于阈值为上限阈值 max ⁡ \max max;小于阈值为下限阈值 min ⁡ \min min),但是阈值通常较难确定一个合适的。
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ y=\left\{ \beg…

通过 L2 范数裁剪

通过 L2 范数裁剪是用阈值限制梯度向量的 L2 范数,从而对梯度进行裁剪。

KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ y=\left\{ \beg…

在模型训练时出现报错:

ValueError: matrix contains invalid numeric entries

通过print对应报错位置的变量可以发现出现nan值:

tensor([[nan, nan, nan,  ..., nan, nan, nan],[nan, nan, nan,  ..., nan, nan, nan],[nan, nan, nan,  ..., nan, nan, nan],...,[nan, nan, nan,  ..., nan, nan, nan],[nan, nan, nan,  ..., nan, nan, nan],[nan, nan, nan,  ..., nan, nan, nan]], device='cuda:0',

出现此问题的原因:
(1)梯度爆炸
(2)不当的输入
(3)不当的模型设计
解决方法:
(1)降低学习率;
(2)加入归一化Norm;
(3)加入梯度裁剪gradient clipping;
(4)数据存在脏数据,需要清洗;
(5)检查网络设计是否存在错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录springboot在k8s下无法读取文件问题

//加载配置文件 File file ResourceUtils.getFile("classpath:/template/job.yaml"); /对象映射 V1Job v1Job (V1Job) Yaml.load(file); 开发的时候使用上面的方法可以读取文件数据,但是部署到k8s容器中之后,读取文件出现报错&#xff0c…

[游戏数值] 常用刷新次数钻石消耗的设计

需满足要求 以一定规律增加能够在较少次数内增加到较大数值平滑增长 设计思路 增加值INT((当前序号-1)/X)*YZ X2,表示希望几个一组,通过INT()取整可获得0、0、1、1、2、2…这样的序列Y10,表示基础值,将上述序列变为0、0、10、1…

微信小程序插件 painter 生成海报、二维码

GitHub 地址&#xff1a;https://github.com/Kujiale-Mobile/Painter 一、引入 将 components/painter 整个文件放到自己项目的 components 中&#xff1b;以组件的形式在页面的 json 文件中引入&#xff1b; 二、使用 <view class"container"><image s…

REST API的基础:HTTP

在本文中&#xff0c;我们将深入探讨万维网数据通信的基础 - HTTP。 什么是超文本&#xff1f; HTTP&#xff08;超文本传输协议&#xff09;的命名源于“超文本”。 那么&#xff0c;什么是超文本&#xff1f; 想象一下由超链接组成的文本、图像和视频的混合物。这些链接充当我…

Restful的详细介绍~

RESTFUL简介&#xff1a; Restful是我们看待服务器的一种方式&#xff0c;我们都知道Java一切皆对象&#xff0c;因此在Java中&#xff0c;我们可以将所有的内容都看成对象&#xff0c;而在这里&#xff0c;RESTFUL是我们看待服务器的一种方式&#xff0c;我们可将服务器中的所…

C语言的链表操作

C语言中可以使用结构体和指针实现链表操作。链表是一种动态数据结构,由节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。以下是一个简单的示例: #include <stdio.h> #include <stdlib.h>// 定义链表节点结构体 struct Node {int data;struct No…

【C++】多态的实现及其底层原理

个人主页&#xff1a;&#x1f35d;在肯德基吃麻辣烫 我的gitee&#xff1a;gitee仓库 分享一句喜欢的话&#xff1a;热烈的火焰&#xff0c;冰封在最沉默的火山深处。 文章目录 前言一、什么是多态&#xff1f;二、多态的构成条件2.1什么是虚函数&#xff1f;2.2虚函数的重写2…

pycharm 远程连接服务器并且debug, 支持torch.distributed.launch debug

未经允许&#xff0c;本文不得转载&#xff0c;vx&#xff1a;837007389 文章目录 step1&#xff1a;下载专业版本的pycharmstep2 配置自动同步文件夹&#xff0c;即远程的工程文件和本地同步2.1 Tools -> Deployment -> configuration2.2 设置同步文件夹2.3 同步服务器…

【深度学习】WaveMix: A Resource-efficient Neural Network for Image Analysis 论文

论文&#xff1a;https://arxiv.org/abs/2205.14375 代码&#xff1a;https://github.com/pranavphoenix/WaveMix 文章目录 ABSTRACTIntroductionBackground and Related WorksWaveMix Architectural FrameworkOverall architectureWaveMix block Experiments and ResultsTasks…

机器学习深度学习——Dropout

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——权重衰减 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮助 Drop…

ffmpeg常用功能博客导航

FFmpeg 是一个处理视频和音频内容的开源工具库&#xff0c;可以实现编码、解码、转码、流媒体和后处理等服务。 推荐博客&#xff1a; 常见命令和使用案例 用ffmpeg转mov为mp4格式 FFmpeg 常用命令 FFmpeg 常用命令编辑音/视频&#xff08;转换格式、压缩、裁剪、截图、切分合…

centos7安装nginx

一、下载安装包 方式一&#xff1a;官网下载 到nginx官网下载 然后上传到linux 服务器 方式二: wget 下载 wget http://nginx.org/download/nginx-1.22.0.tar.gz二、安装nginx 先安装相关依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 创建…

什么是 ASP.NET Core SignalR?

所有连接了 Internet 的应用程序都由服务器和客户端组成。 客户端依赖于服务器获取数据&#xff0c;而它们获取数据的主要机制是通过发出超文本传输协议 (HTTP) 请求来进行的。 某些客户端应用程序需要经常更改的数据。 ASP.NET Core SignalR 提供了一个 API&#xff0c;用于创…

(三)4. 深度生成模型-扩散模型(基于扩散的生成模型与分数匹配的变分视角)

“基于扩散的生成模型”与“分数匹配”的变分视角 1. 介绍1.1. 变分自动编码器1.2. 基于扩散的建模1.3. 主要内容2. 基于得分的随机微分方程生成建模基于离散时间扩散的生成模型和分数匹配方法在高维图像数据建模方面显示出了良好的效果。 最近,Song等人(2021)表明,通过学…

(Python):元类(metaclass), Type类,类实例,dataclass

文章目录 类实例类成员变量与成员变量的区别 Type类MetaclassABCMeta dataclass 类实例 在python中&#xff0c;所有的类都是一个实例&#xff0c;也就是说&#xff0c;所有的类其实都是由自己的属性和方法的。 这里就需要区分清楚一件事&#xff0c;类实例和对象。类实例指的…

使用vim-cmd工具给ESXi虚机定期打快照

VMware虚拟化 - 建设篇 第四章 使用vim-cmd工具给ESXi虚机定期打快照 VMware虚拟化 - 建设篇系列文章回顾使用vim-cmd工具给ESXi虚机定期打快照前言前提条件ESXi新增执行快照备份的sh脚本ESXi添加crond任务并使其生效ESXi指定部分虚拟机不执行定期快照(附加)虚拟机自定义属性…

ChatGPT有几个版本,哪个版本最强,如何选择适合自己的?

​ChatGPT就像内容生产界的瑞士军刀。它可以是数学导师、治疗师、职业顾问、编程助手&#xff0c;甚至是旅行指南。只要你知道如何让它做你想做的事&#xff0c;ChatGPT几乎可以提供你要的任何东西。 但重要的是&#xff0c;你知道哪个版本的ChatGPT最能满足你的需求吗&#x…

Windows 11 下 OpenFace 2.2.0 的安装

写在前面 最近需要做关于面部的东西&#xff0c;所以需要使用到OpenFace这个工具&#xff0c;本文仅用来记录本人安装过程以供后续复现&#xff0c;如果可以帮助到读者也是非常荣幸。 安装过程 不编译直接使用 这种方法可以直接从官方下载下来编译好的exe以及gui进行使用&a…

在 “小小容器” WasmEdge 里运行小小羊驼 llama 2

昨天&#xff0c;特斯拉前 AI 总监、OpenAI 联合创始人 Andrej Karpathy 开源了 llama2.c 。 只用 500 行纯 C 语言就能训练和推理 llama 2 模型的框架&#xff0c;没有任何繁杂的 python 依赖。这个项目一推出就受到大家的追捧&#xff0c;24 小时内 GitHub 收获 4000 颗星&am…

Codeforces Round 889 (Div. 2) (C1~C2)

掉大分&#xff0c;C1被sb错误困扰。 提示如果C1会了但不会C2,也应该先将C1解法看一遍 C1 Dual (Easy Version) 题意 给定长度为 n n n 的数组 a a a&#xff0c;&#xff08; n < 20 &#xff0c; − 20 < a i < 20 n<20&#xff0c;-20<a_i<20 n&l…