李宏毅深度学习03——神经网络训练不起来怎么办

news2024/10/25 10:26:00

视频链接

如果Optimization失败的时候,怎么把梯度下降做的更好?
只考虑这种情况,不考虑overfitting

局部最小值(local minima)和鞍点(saddle point)

为什么Optimization会失败?

可能是gradient为0,导致梯度下降不继续工作了,即critical point(临界点)为0,原因要么是local minima,要么是saddle point(像马鞍一样的面,所以被称为鞍点)

在这里插入图片描述

数学解释

泰勒展开

使用泰勒级数近似法来逼近某一个复杂函数的近似值

海塞矩阵
在这里插入图片描述

海塞矩阵

由于在临界点的时候,gradient为0,所以我们只需要考虑后面那一项的形状即可知道当前处于什么样的情况
在这里插入图片描述

假设v = θ - θ’
我们可以通过v的值来判断当前值θ’的类型
即如果所有的v都是正的,则L(θ) > L(θ’),则为local minima
如果所有v都是负的,则L(θ) < L(θ’),则为local maxima
如果v有正有负,则为saddle point

但是我们没办法算出所有的v,所以上面的方法是理论上可行
但是有个结论是我们可以通过海塞矩阵H的特征值来判断θ’的类型:
如果所有的特征值为正,则为local minima
所有特征值为负,则为local maxima
特征值有正有负,则为saddle point

如图:
在这里插入图片描述

例子

分别算出g和H,然后算出H的特征值,即可知道某个临界点是属于什么类型
特征值的计算需要学习一下
在这里插入图片描述

如果是saddle point,可以通过海塞矩阵H知道要更新的方向,具体:
通过找到一个能够使海塞矩阵所在项值变小的u,即可确定要更新的方向
其中u是特征向量,通过特征值找出来
在这里插入图片描述
在这里插入图片描述
然而,实际上由于计算海塞矩阵H太过复杂,一般都不适用这种方式来找到更新方向

saddle point和local minima哪个更常见?

结论:在低维度的情况下是local minima,可能在高维度上实际上是saddle point在这里插入图片描述

批次(batch)和动量(Momentum)

batch批次

batch:批次,即把所有的数据分批次
epoch:遍历一次所有的batch
shuffle:遍历一次epoch,打乱一次顺序
在这里插入图片描述

为什么要用batch,使用小的batch Size还是大的batch Size

在这里插入图片描述
然而,考虑到并行运算,实际上遍历大的batch,未必就比小的时间长

在这里插入图片描述

在这里插入图片描述
虽然batch Size越大,所花的时间越少,看上去选择batch Size大的会比较合适。然而实验证明batch Size小的虽然noisy,但是有利于我们的训练,原因是因为大的batch Size可能会有Optimization的问题

在这里插入图片描述

在这里插入图片描述

batch Size 小的在测试数据上表现比大的好吗?

由于batch Size小的对应的Loss曲线更加曲折,而大的对应的曲线更加平缓;
一个直观的想法就是当训练数据和测试数据有一定偏差时,通过训练数据得到的曲线,越平缓,与测试数据的Loss就越小
在这里插入图片描述

结论

batch Size大和小都各自有各自的优点,所以这个就成了一个超参数,通过自己调整来得到更好的训练结果,许多文章都在探讨这个问题
在这里插入图片描述

Momentum动量

在实际的物理世界中,假设一个球从高处滑落,哪怕到达一个局部最低点,因为有动力的缘故,球也有可能翻越这个local minima继续往下走。
由这个想法引申出一个问题——能否将这个概念引入到梯度下降中呢?

只考虑gradient的方向:

在这里插入图片描述
gradient的方向加上movement的方向:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结论

实际上就是考虑了之前运动的方向,与当前算出的gradient做了个角度的修改,从而减少了local minima的概率

自动调整学习率(learning rate)

其实,临界点问题(critical point)并不一定是训练过程中最大的阻碍
在这里插入图片描述
同样一个函数如凸函数,当learning rate设的很大的时候,他会来回震荡导致Loss一直减小不了
当learning rate设的很小时,虽然不会在震荡,但是在平坦的地方下降太过缓慢,导致永远都走不到最小的Loss;所以learning rate必须根据不同的Gradient,调整不同的值
在这里插入图片描述

使用客制化的learning rate

在这里插入图片描述

Root mean square(均方根)

在这里插入图片描述
这个方法被用于Adagrad算法上
当gradient变化比较平缓的时候,算出来的learning rate会更大,当gradient变化比较着急时,算出来的learning rate会比较小
在这里插入图片描述

存在的问题

同个参数,同个方向,均方根算出来的值是固定不变的,但是我们希望的是能够动态调整
在这里插入图片描述

RMSProp

在这里插入图片描述
开始时比较平缓,所以算出来的learning rate很大,对应走的步伐就很大;然后当坡度变陡,则通过调整a,从而使步伐变小;当坡度变缓后,通过调整a,使得步伐又变大
在这里插入图片描述

常用的Optimization策略

Adam:RMSProp + Momentum

在这里插入图片描述

解决开头提出的问题:无法达到最小Loss

在这里插入图片描述

Learning Rate Scheduling

解决上述突然喷射的问题的一种方式叫Learning rate scheduling
常见的Learning rate scheduling有Learning Decay和Warm up
其中Learning Decay指的是随着时间的推移,逐渐减小n,使得Learning rate也逐渐减小,类似于踩刹车

在这里插入图片描述
另一种方式Warm up则是指通过修改n先提高Learning rate的速度,再减小,类似于先加速再减速
在这里插入图片描述
Warm up是一个黑科技,很多论文都有用到
在这里插入图片描述

总结

在这里插入图片描述

损失函数Loss对Optimization也有影响

假设将分类问题按照回归问题来做
即假设class对应着数字1,2,3,
有时候可行,有时候不可行。
比如假设根据身高体重预测是几年级,由于年级之间有联系,所以可行
但是如果这几个class之间没有联系,则不可行

在这里插入图片描述

one-hot vector

为了解决class之间没有联系的问题,我们可以使用one-hot vector
在这里插入图片描述
由原来的一个value推广至多个value

在这里插入图片描述

softmax(归一化)

在这里插入图片描述

在这里插入图片描述
上述是多个class的情况,如果是2个class,一般直接使用sigmoid,但是实际上这两个是等价的

Loss of classfication(分类的Loss)

分类中常用的Loss方法是Cross-entropy
在这里插入图片描述
通过下面的例子我们可以看出,MSE在可能会在较大Loss的情况下卡主,而Cross-entropy则不没有问题,也侧面说明了不同的Loss定义对于优化的影响也不同
在这里插入图片描述

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

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

相关文章

用AI帮助设计师提升工作效率?

在创意设计的世界里&#xff0c;效率往往意味着灵感与时间的完美结合。设计师们时常面临各种挑战&#xff0c;如何在保证作品质量的同时&#xff0c;又能提升工作效率&#xff1f;这不仅是设计师们思考的问题&#xff0c;也是AI技术正在积极解决的问题。那么&#xff0c;用AI帮…

Unity 工具 之 Azure 微软 【GPT4o】HttpClient 异步流式请求的简单封装

Unity 工具 之 Azure 微软 【GPT4o】HttpClient 异步流式请求的简单封装 目录 Unity 工具 之 Azure 微软 【GPT4o】HttpClient 异步流式请求的简单封装 一、简单介绍 二、实现原理 三、注意实现 四、简单效果预览 五、案例简单实现步骤 六、关键代码 一、简单介绍 Unit…

Spring系统学习 - FactoryBean和基于XML的自动装配

Factory Bean Spring的FactoryBean是一个特殊的Bean&#xff0c;用于创建其他Bean实例。FactoryBean接口定义了一个工厂Bean&#xff0c;该Bean可以用来生成其他Bean的实例。通过实现FactoryBean接口&#xff0c;开发人员可以自定义Bean的创建逻辑&#xff0c;实现更灵活的Bea…

动态竞拍与寄售模式:引领企业增长的新引擎

在当今日新月异的商业环境中&#xff0c;企业的生存与发展不仅需要卓越的产品和服务&#xff0c;更需要紧跟市场脉搏&#xff0c;勇于创新。接下来&#xff0c;我将为您详细介绍一种引领行业新风尚的商业模式——动态竞拍与寄售相结合的模式。这一模式凭借其灵活性和创新性&…

图像处理与视觉感知复习--频率域图像增强图像变换

文章目录 图像变换与信号分解正弦信号与傅里叶级数傅里叶变换离散傅里叶变换(DFT)频率域滤波 图像变换与信号分解 空间域&#xff1a;就是像素域&#xff0c;在空间域的处理是在像素级的处理&#xff0c;如像素级的叠加。 频率域&#xff1a;任何一个波形都可以分解用多个正弦…

【类型转换】C++中char、char*、int、string相互转换函数及string转不同进制数函数

参考资料&#xff1a;cplusplus官方资料strtol 函数用法 总结&#xff1a; 1、这些在做编程题处理输入数据时常用&#xff0c;需要牢记。

【CT】LeetCode手撕—23. 合并 K 个升序链表

目录 题目1- 思路2- 实现⭐23. 合并 K 个升序链表——题解思路 3- ACM 实现 题目 原题连接&#xff1a;23. 合并 K 个升序链表 1- 思路 模式识别&#xff1a;合并 K 个链表 ——> 优先队列 思路 借助优先队列&#xff0c;每次从 k 个链表中&#xff0c;各取一个元素&…

前 OpenAI 首席科学家建「安全超级智能」实验室;Meta 重组元宇宙团队丨 RTE 开发者日报 Vol.228

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

Cytoscape之操作界面介绍

Cytoscape 简介 Cytoscape是一个专注于开源网络可视化和分析的软件。软件的核心部分提供了网络显示、布局、查询等方面的基本功能。软件的核心可以通过插件架构进行扩展&#xff0c;这样就能快速地开发出新的功能。 Cytoscape 源自系统生物学&#xff0c;用于将生物分子交互网…

springboot+vue+mysql+mybatis 二手交易平台

springbootvuemysqlmybatis 二手交易平台 相关技术 javaspringbootmybatismysqlvueelementui

Jenkins For Windows编译构建C#项目环境搭建(完整版)

安装Jenkins 下载Windows安装包 官方下载地址 选择稳定版&#xff0c;这里下载的是最新版&#xff0c;如需下载指定版本点击 以前的发行版 配置java环境 下载 java jdk 17 jdk17官方下载链接 这里下载的是msi版本的安装包 安装jdk17 双击运行安装包&#xff0c;一直下…

企业微信内嵌H5项目接入聊天功能

产品需求是,在列表中把符合条件的列表接入聊天功能,以下是详细步骤: 1.引入企业微信 <script src"https://res.wx.qq.com/wwopen/js/jsapi/jweixin-1.0.0.js"></script> 2.获取wx签名(必须要) /*** 获取wx签名**/ export function getWxJsApi(data) {r…

通过Socket通信实现局域网下Amov无人机连接与数据传输

1.局域网下的通信 1.1 局域网 厂家提供的方式是通过Homer图数传工具(硬件)构建的amov局域网实现通信连接. 好处是通信距离足够长,支持150m;坏处是"局部",无法访问互联网. &#xff3b;&#xff29;&#xff2d;&#xff21;&#xff27;&#xff25;&#xff1a;…

使用Python进行音频处理和机器学习

使用Python进行音频处理和机器学习的简介 从高层次上讲&#xff0c;任何机器学习问题都可以分为三种任务&#xff1a;数据任务&#xff08;数据收集&#xff0c;数据清理和特征形成&#xff09;&#xff0c;培训&#xff08;使用数据特征构建机器学习模型&#xff09;和评估&am…

学习新语言方法总结(一)

随着工作时间越长&#xff0c;单一语言越来越难找工作了&#xff0c;需要不停地学习新语言来适应&#xff0c;总结一下自己学习新语言的方法&#xff0c;这次以GO为例&#xff0c;原来主语言是PHP &#xff0c;自学GO 了解语言特性&#xff0c;知道他是干嘛的 go语言&#xff0…

Pikachu靶场--XSS

参考借鉴 Pikachu靶场之XSS漏洞详解_pikachu xss-CSDN博客 一个视频讲清楚XSS跨站脚本&#xff08;CTF教程&#xff0c;Web安全渗透测试入门&#xff09;_bilibili 反射型xss(get) 输入payload&#xff1a;<script>alert(123)</script> 解决一&#xff1a;在URL框内…

安装MySQL5.7版本步骤遇到问题

方法一&#xff1a;下载zip版本&#xff08;我用的这个&#xff09; 参考视频&#xff08;已收藏&#xff09;&#xff1a;windows安装MySQL5.7_哔哩哔哩_bilibili 下载zip压缩包的MySQL的网址&#xff1a;上面这个视频中有哦。 my.ini文件内容如下&#xff1a; [client] p…

动手学自然语言处理:解读大模型背后的核心技术

自从 ChatGPT 横空出世以来&#xff0c;自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09; 研究领域就出现了一种消极的声音&#xff0c;认为大模型技术导致 NLP “死了”。在某乎上就有一条热门问答&#xff0c;大家热烈地讨论了这个问题。 有…

部署RAC到单实例ADG(11G)

服务器信息 主库RAC环境信息 主库RAC基本环境 节点1 节点2 OS centos 7.9 centos 7.9 数据库版本 11.2.0.4 11.2.0.4 规格 1C4G 1C4G 主机名 racdb01 racdb02 public ip 192.168.40.135 192.168.40.145 vip 192.168.40.13 192.168.40.14 private ip 192…

Pikachu靶场--文件上传

参考借鉴 Pikachu靶场之文件上传漏洞详解_皮卡丘文件上传漏洞-CSDN博客 文件上传漏洞&#xff1a;pikachu靶场中的文件上传漏洞通关_pikachu文件上传通关-CSDN博客 client check 在桌面新建一个文件夹&#xff0c;准备一个hello.php文件&#xff0c;文件写入如下代码 <?p…