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

视频链接

如果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.mzph.cn/diannao/30917.shtml

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

相关文章

南京邮电大学计算机网络实验一(网络操作系统的安装与配置)

文章目录 一、 实验目的和要求二、 实验环境(实验设备)三、 实验原理和步骤四、 实验小结&#xff08;包括问题和解决方法、心得体会、意见与建议等&#xff09;&#xff08;一&#xff09;问题和解决方法&#xff08;二&#xff09;心得体会&#xff08;三&#xff09;意见与建…

Sip协议(三)- 通话接听流程

Sip协议(三)- 通话接听流程 本文主要记录下sip通信下接听的流程. 一: 接听流程 agent接听电话远端在未接听情况下主动挂断电话. 接听流程涉及到的请求有: INVITE,CANCEL,ACK,BYE 具体的过程如下: 二: sip过程 agent收到INVITE INVITE sip:100010.0.0.1:10000;transporttc…

爬山算法优点

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

【stm32单片机应用】基于I2C协议的OLED显示(利用U82G库)

一、U8g2库 &#xff08;一&#xff09;U8g2简介 U8g2 是一个用于单色和彩色显示的嵌入式图形库&#xff0c;特别适用于单色OLED、LCD显示屏的驱动。它是对早期U8g库的扩展和改进&#xff0c;提供了更多功能和更广泛的硬件支持。U8g2作为一款强大而灵活的嵌入式图形库&#x…

JAVA语言开发的一套(智慧工地监管系统源码)让工地变得更加“聪明”

JAVA语言开发的一套&#xff08;智慧工地监管系统源码&#xff09;让工地变得更加“聪明” 数字智慧工地是指利用物联网、大数据、云计算、人工智能等先进技术&#xff0c;对工地进行全面数字化改造和智能化升级&#xff0c;实现工地管理的精细化、高效化和智能化。它通过实时…

Windows上PyTorch3D安装踩坑记录

直入正题&#xff0c;打开命令行&#xff0c;直接通过 pip 安装 PyTorch3D : (python11) F:\study\2021-07\python>pip install pytorch3d Looking in indexes: http://mirrors.aliyun.com/pypi/simple/ ERROR: Could not find a version that satisfies the requirement p…

聚焦AIoT最后一公里:EasyCVR+AI视频技术在各领域的创新应用

随着5G、AI、边缘计算、物联网&#xff08;IoT&#xff09;、云计算等技术的快速发展&#xff0c;万物互联已经从概念逐渐转变为现实&#xff0c;全新的行业生态AIoT正在开启新时代。巨大的市场潜力与AI等新兴技术不断融合形成的庞大市场缺口&#xff0c;深度场景化应用落地诉求…

恭喜!W医生斩获加拿大多伦多大学访问学者邀请函

➡️【院校介绍】 多伦多大学(University of Toronto)&#xff0c;位于加拿大安大略省多伦多市&#xff0c;成立于1827年&#xff0c;今年&#xff0c;因多大在各学科领域中成就卓著&#xff0c;再一次重回加拿大大学排名第一&#xff0c;QS世界排名第21的位置。 ➡️【W医生…

生产环境OpenLDAP主从集群

1、背景 在很多组织中&#xff0c;需要对用户和系统进行统一的身份认证和授权管理。为了实现这一目标&#xff0c;通常会使用LDAP&#xff08;轻量级目录访问协议&#xff09;来构建集中化的身份认证和授权服务。而在生产环境中&#xff0c;为了保证高可用性和可扩展性&#x…

Ubuntu server 24 (Linux) 安装lua + 卸载软件

1 apt 安装 # sudo apt update #查看可安装的lua版本 sudo apt-get install luaversion # sudo apt-get install lua5.3 #查看版本 testiZbp1g7fmjea77vsqc5hmmZ:/data/soft$ lua -v Lua 5.3.6 Copyright (C) 1994-2020 Lua.org, PUC-Rio2 Ubuntu卸载软件 #查找lua已安装…

python安装包中的.dist-info作用

在使用pip install 包名 进行python第三方库的时候&#xff0c;安装完库之后通常会出现一个库名&#xff0c;还有一个.dist-info的文件&#xff0c;以安装yolov8所依赖的框架ultralytics为例&#xff0c;成功安装后会出现以下文件夹&#xff1a; 第一个ultralytics是概该框架包…

for循环 绘制Echarts图表之后,点击 添加图表向前插入图表遇到实例未更新

一、问题及预期 for循环 绘制图表之后&#xff0c;点击 添加图表&#xff0c; 应该展示空表的初始状态&#xff0c;但是展示的是上一个图表正常有数据的图表 二、复盘 采用index 作为下标去渲染图表实例导致点击【添加图表】按钮的时候向前添加的下标为0 &#xff0c;和原来…

【Gin框架基础使用附带各种小案例和简易登录模块的实现】

Gin框架基础使用附带各种小案例和整个登录模块的实现 前言&#xff1a; Gin框架介绍使用示例安装Gin框架使用代码接收参数的方法 简易登录模块Gin的边角料 前言&#xff1a; Gin框架介绍 Gin框架功能&#xff1a; 在介绍Gin框架之前我们要先明白Gin框架要完成那些功能&#x…

css记录:三维变换之transform

CSS 的 transform 属性用于对元素进行 2D 或 3D 转换。这些转换包括旋转、缩放、倾斜和移动等。在 3D 变换中&#xff0c;我们可以创建更为复杂和动态的效果&#xff0c;让用户体验更为丰富。 transform 属性 transform 是一个简写属性&#xff0c;用于设置以下 2D 和 3D 转换…

【Android】构建 Android Automotive OS:适合初学者的指南

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

vue脚手架 vuex模块化和四大辅助函数的结合使用

目录 01 四大辅助函数结合vuex模块化的使用 02 event-bus事件总线的使用 01 四大辅助函数结合vuex模块化的使用 mapState 在映射模块化带有命名空间的使用步骤: 方式一:(重要) ...mapState(模块名1,[该模块的变量1,该模块的变量2....]) ...mapState(模块名2,[该模块的变量1,该…

深入探究RTOS的IPC机制----邮箱

阅读引言&#xff1a; 因为将来工作需要&#xff0c; 最近在深入学习OS的内部机制&#xff0c;我把我觉得重要的、核心的东西分享出来&#xff0c; 希望对有需要的人有所帮助&#xff0c; 阅读此文需要读友有RTOS基础&#xff0c; 以及一些操作系统的基础知识&#xff0c; 学习…

行列式和矩阵的区别

目录 一、行列式 1. 行列式的定义 2. (全)排列 3. 逆序数 二、矩阵 1. 矩阵的定义 三、行列式和矩阵的区别 四、参考书目 一、行列式 1. 行列式的定义 2. (全)排列 3. 逆序数 二、矩阵 1. 矩阵的定义 三、行列式和矩阵的区别 四、参考书目 同济大学数学系. 工程数学…

【LeetCode面试经典150题】105. 从前序与中序遍历构造二叉树

一、题目 105. 从前序与中序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09;给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 二、思路 …

Dynamics 365 on-premise 隐藏高级查找导出按钮

提示 着急可以直接看结果代码部分 背景 Dynamics 365 on-premise中有个高级查找的功能,查询的结果支持导出,如下图 业务反馈这个有数据安全风险,要修改显示规则。 一开始想着能用RibbonWorkbench改,就很爽快得答应了业务。结果用RibbonWorkbench改不了。 反复尝试 既…