梯度消失和梯度爆炸的原因

梯度消失和梯度爆炸

梯度爆炸和梯度消失本质上是因为梯度反向传播中的连乘效应。

梯度下降算法

举一个简单的例子,函数表达式为loss = 2w^2 + 4w,如下图

                                ​​​​​​​        ​​​​​​​        

为了求得w的最优值,使得loss最小,从上图很容易看出来当w = -1时,loss最小,也就是当loss函数的导数为0时。

对w1随机取一个值,比如w1 = 0.5,此时

        loss = 2 * 0.5^2 + 4 * 0.5 = 2.5,          loss' = 4 * w1 + 4 = 4 * 0.5 + 4 = 6

如果我们把w1减少0.1,即w2 = 0.4,那么loss就会缩小0.1的5倍多不到6倍,此时

        loss = 2 * 0.4^2 + 4 * 0.4 = 1.92,        loss' = 4 * w2 + 4 = 4 * 0.4 + 4 = 5.6

于是经过多次迭代,当wn = -1,loss降到最小值,loss函数的导数此时也为0了

        loss = -2,                                             loss' = 4 * wn + 4 = 4 * -1 + 4 = 0

由此可见当我们缩小w的值,loss也会缩小,最终取得最优值,这就是梯度下降的目的。

复合函数

在深度学习训练中,实际问题往往不是一个简单的函数能够表达的,而是需要复合函数来作为映射方法。即已知函数y = f(u),当u表示为u = g(x)时,y作为x的函数就可以表示为y = f(g(x))这样的嵌套结构,这种嵌套结构的函数,就称为f(u),g(x)的复合函数。

例子:函数y = (2 - x)^2 是函数u = 2 - x 和函数y = u^2的复合函数

链式法则

已知函数y = f(u),函数u = g(x),复合函数y = f(g(x))的导函数可以表示为y' = dy/dx = (dy/du)*(du/dx)

在多层神经网络中,输入x,最后一层输出y4,损失函数为C,激活函数为S,可以列出

                y1 = S(z1) = S(w1x + b1)

                y2 = S(z2) = S(w2x + b2) = S(w2y1 + b2)        (上一层的输出是这一层的输入)

                y3 = S(z3) = S(w3x + b3) = S(w3y2 + b2)        (同上)

                y4 = S(z4) = S(w4x + b4) = S(w4y3 + b2)        (同上)

根据链式法则,对b1求导得

dC/db1 = (dC/dy4)*(dy4/dz4)*(dz4/dy3)*(dy3/dz3)*(dz3/dy2)*(dy2/dz2)*(dz2/dy1)*(dy1/dz1)*(dz1/db1) = (dC/dy4)*S(z4)'*w4*S(z3)'*w3*S(z2)'*w2*S(z1)'*1

如果激活函数S为Sigmoid,则S'的函数曲线如下

可以看到S'值域区间为[0,0.25],以最大值0.25代入上述例子,

即dC/db1 = (dC/dy4)*0.25*0.25*0.25*0.25*1

再代入梯度下降算法更新公式θ = θ0 - η*▽f(θ0),

即b1 = b1 - η*(dC/dy4)*0.25*w4*0.25*w3*0.25*w2*0.25*1

当神经网络层数足够多时,η*▽f(θ0)将会变得非常小,θ会更新得非常慢,即梯度消失。

又有如果初始权值w大于1甚至更大,导致θ更新过大,即梯度爆炸。

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

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

相关文章

服务器数据恢复—EMC存储pool上数据卷被误删的数据恢复案例

服务器数据恢复环境: EMC Unity某型号存储,连接了2台硬盘柜。2台硬盘柜上创建2组互相独立的POOL,2组POOL共有21块520字节硬盘。21块硬盘组建了2组RAID6,1号RAID6有11块硬盘. 2号RAID6有10块硬盘。 服务器故障&检测&#xff1…

【MySQL】 索引(上)

文章目录 1. 索引的概念2. MySQL与磁盘 的交互基本单位3. 建立共识4. 现象与结论如何理解mysql中page概念为什么 要采用page的方案 进行交互 而不是用多少加载多少? 5. 页目录为什么要引入 页目录概念单页情况多页情况使用B树 构建索引为什么不用其他数据结构为什么…

Classifier-Free Guidance

1.为什么需要分类引导 顾名思义,在原来扩散模型的基础上加上一个引导,让扩散模型朝着我们想要的方向去生成图像 从上图可以了解到生成下一张图像是有分类器参与的 无分类器就是这种形式要参与下一张图像的生成

SQL server数据库端口访问法

最近数据库连接&#xff0c;也是无意中发现了这个问题&#xff0c;数据库可根据端口来连接 网址:yii666.com< 我用的是sql2014测试的&#xff0c;在安装其他程序是默认安装了sql(sql的tcp/ip端口为xxx)&#xff0c;服务也不相同&#xff0c;但是由于比较不全&#xff0c;我…

ElementUI 自定义 Tree 树形控件背景

在 template 中 <div class"container"><el-tree :data"treeList" :props"defaultProps" accordion node-click"handleNodeClick" /> </div> 在 script 中 treeList: [{ id: "-1", label: "区域选…

oracle (8)Managing Tablespace Data File

目录 一、基础知识 1、表空间和数据文件 2、存储层次结构摘要 3、表空间的类型 4、表空间中的空间管理 5、临时表空间 6、Default Temporary TS 默认临时TS 二、常用实操 1、Creating Tablespaces创建表空间 2、Dictionary-Managed TS 字典管理的表空间 3、Locally …

uniapp 关于 video 组件的缩放比例问题

在 container 样式的 padding-bottom 设置比例值 9/16 比例值&#xff1a;56.25% 3/4 比例值&#xff1a;75% <view class"container"><video class"video-box" src"xxx.mp4" /> </view> .container {position: relative;wid…

与AI对话的艺术:如何优化Prompt以获得更好的响应反馈

前言 在当今数字化时代&#xff0c;人工智能系统已经成为我们生活的一部分。我们可以在智能助手、聊天机器人、搜索引擎等各种场合与AI进行对话。然而&#xff0c;要获得有益的回应&#xff0c;我们需要学会与AI进行有效的沟通&#xff0c;这就涉及到如何编写好的Prompt。 与…

设计模式之观察者模式

文章目录 一、介绍二、实现思路三、基本角色四、案例1. 不使用观察者模式2. 使用观察者模式 五、java中的观察者模式六、spring中的观察者模式七、优缺点 一、介绍 观察者模式(Observer Pattern)&#xff0c;又称监听器模式(Listener Pattern) 或 发布-订阅模式(Publish-Subsc…

OpenFeign的简单介绍和功能实操

前言 本文主要做一下OpenFeign的简单介绍和功能实操&#xff0c;实操主要是OpenFeign的超时和重试&#xff0c;在阅读本文章前&#xff0c;请完成《Nacos 注册中心介绍与实操》内的Nacos多模块生产消费者项目 什么是OpenFeign OpenFeign全名Spring Cloud OpenFeign&#xff…

树结构及其算法-二叉查找树

目录 树结构及其算法-二叉查找树 C代码 树结构及其算法-二叉查找树 二叉树在建立的过程中是根据“左子树 < 树根 < 右子树”的原则建立的&#xff0c;因此只需从树根出发比较键值即可&#xff0c;如果比树根大就往右&#xff0c;否则往左而下&#xff0c;直到相等就找…

基于OR-Tools的装箱问题模型求解(PythonAPI)

装箱问题 一、背包问题&#xff08;Knapsack problem&#xff09;1.1 0-1背包模型基于OR-Tools的0-1背包问题求解&#xff08;PythonAPI&#xff09;导入pywraplp库数据准备声明MIP求解器初始化决策变量初始化约束条件目标函数调用求解器打印结果 1.2 多重背包问题&#xff08;…

diffusers-Load pipelines,models,and schedulers

https://huggingface.co/docs/diffusers/using-diffusers/loadinghttps://huggingface.co/docs/diffusers/using-diffusers/loading 有一种简便的方法用于推理是至关重要的。扩散系统通常由多个组件组成&#xff0c;如parameterized model、tokenizers和schedulers&#xff0c…

SpringBoot整合自签名SSL证书,转变HTTPS安全访问(单向认证服务端)

前言 HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面&#xff0c;事物皆具两面性&#xff0c;它也是有不足之处的。例如&#xff1a; 通信使用明文&#xff08;不加密&#xff09;&#xff0c;内容可能会被窃听。不验证通信方的身份&#xff0c;因此有可能会遭遇…

多线程锁的升级原理是什么

在 Java 中&#xff0c;锁共有 4 种状态&#xff0c;级别从低到高依次为&#xff1a;无状态锁&#xff0c;偏向锁&#xff0c;轻量级锁和重量级锁状态&#xff0c;这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级。 多线程锁锁升级过程 如下图所示 多线程锁的升级过程…

Ha-NeRF源码解读 train_mask_grid_sample

目录 背景&#xff1a; &#xff08;1&#xff09;Ha_NeRF论文解读 &#xff08;2&#xff09;Ha_NeRF源码复现 &#xff08;3&#xff09;train_mask_grid_sample.py 运行 train_mask_grid_sample.py解读 1 NeRFSystem 模块 2 forward()详解 3 模型训练tranining_st…

windows和docker环境下springboot整合gdal3.x

链接: gdal官网地址 gdal gdal的一个用c语言编写的库&#xff0c;用于处理地理信息相关的数据包括转换&#xff0c;识别数据&#xff0c;格式化数据以及解析 同时提供第三方语言的SDK包括python&#xff0c;java上述需要编译后使用 java是需要使用jni接口调用实现方法在wind…

SAR 系统基本原理

目录 1.真实孔径雷达 2.合成孔径雷达 本文由CSDN点云侠原创&#xff0c;爬虫网站请自重。 1.真实孔径雷达 RADAR 中文名称雷达&#xff0c;是 Radio Detection And Ranging&#xff08;无线电探测与定位&#xff09;的缩写。雷达发射机产生足够的电磁能量&#xff0c;经过收发…

人工智能-多层感知机

隐藏层 该模型通过单个仿射变换将我们的输入直接映射到输出&#xff0c;然后进行softmax操作。 如果我们的标签通过仿射变换后确实与我们的输入数据相关&#xff0c;那么这种方法确实足够了。 但是&#xff0c;仿射变换中的线性是一个很强的假设。 线性模型可能会出错 例如&…

MySQL8.0安装

安装过程 一.官网下载离线tar包二.安装MySQL三.验证 一.官网下载离线tar包 点击此处下载 链接&#xff1a;https://pan.baidu.com/s/1_p2esJax95Ow39wfgM_paw 提取码&#xff1a;g415 –来自百度网盘超级会员V2的分享 二.安装MySQL 1.上传到/usr/local目录下 2.解压安装包…