optimization问题的解决

news2024/11/25 12:34:27

目录

  • 临界点critical point
    • 基本介绍
    • 临界点两种情况的区分
      • g和H的举例介绍
      • 根据H区分Saddle Point和local minima
  • 批次Batch
    • batch大小的比较
      • 时间的开销
      • 训练集和测试集的效果
        • 训练集效果
        • 测试集效果
  • 动量Momentum
    • 一般的Gradient Descent
    • 带有动量的Gradient Descent

2021 - 类神经网络训练不起来怎么办(一) 局部最小值 (local minima) 与鞍点 (saddle point)

临界点critical point

基本介绍

导致更复杂的model并没有充分发挥它的作用造成训练集loss较大的原因主要是训练过程中过早地出现偏导gradient=0(因为参数更新的公式为$
w_{i+1}=w_i-\eta \times \frac{\partial loss}{\partial w}|_{w=w^0}
$)。而偏导gradient=0的情况既有遇到了局部最优解local minima也有遇到了鞍点saddle
point
。这两种情况统称为遇到了**临界点critical point.**local
minima时没有可选的更新路径。而saddle point仍有另外方向的更新路径
,如下图。

在这里插入图片描述

临界点两种情况的区分

利用泰勒级数逼近(函数在某一点的泰勒展开)的方法

在这里插入图片描述
函数在某一点x0的泰勒展开的公式为: f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 + … … f(x)=f(x_0)+f'(x_0)(x-x_0)+\frac 1 2f''(x_0)(x-x_0)^2+…… f(x)=f(x0)+f(x0)(xx0)+21f′′(x0)(xx0)2+……
则Loss在某一点θ0附近的泰勒展开公式为

L o s s ( θ ) = L o s s ( θ 0 ) + ( θ − θ 0 ) × g + 1 2 ( θ − θ 0 ) T H ( θ − θ 0 ) , g = L o s s 对每个参数的一阶导向量 , H 为 L o s s 的黑塞 H e s s i a n 矩阵 Loss(\theta)=Loss(\theta_0)+(\theta-\theta_0) \times g+\frac 1 2 (\theta-\theta_0)^TH(\theta-\theta_0), g=Loss对每个参数的一阶导向量,H为Loss的黑塞Hessian矩阵 Loss(θ)=Loss(θ0)+(θθ0)×g+21(θθ0)TH(θθ0),g=Loss对每个参数的一阶导向量,HLoss的黑塞Hessian矩阵

g和H的举例介绍

以Loss(w,b)为例,则g和H见下

g = [ ∂ L o s s ∂ w , ∂ L o s s ∂ b ] , H = ( ∂ 2 L o s s ∂ w 2 ∂ 2 L o s s ∂ w ∂ b ∂ 2 L o s s ∂ b ∂ w ∂ 2 L o s s ∂ b 2 ) g=[\frac{\partial Loss}{\partial w},\frac{\partial Loss}{\partial b}],H=\left( \begin{array} {cc} \frac{\partial ^2 Loss}{\partial w^2} & \frac{\partial ^2 Loss}{\partial w \partial b} \\ \frac{\partial ^2 Loss}{\partial b \partial w} & \frac{\partial ^2 Loss}{\partial b^2} \\ \end{array} \right) g=[wLoss,bLoss],H=(w22Lossbw2Losswb2Lossb22Loss)

根据H区分Saddle Point和local minima

特征值的求法:矩阵A的特征值:|λE-A|=0的λ解
特征向量:将求出来的每个特征值λ代入(A-λE)x=0,解出所有的x即为特征向量

临界点的gradient为0,即g为0。故Loss的泰勒逼近函数只剩下了H项,函数如下。若对于θ0附近的所有θ:

L o s s ( θ ) = L o s s ( θ 0 ) + 1 2 ( θ − θ 0 ) T H ( θ − θ 0 ) , H 为 L o s s 的黑塞 H e s s i a n 矩阵 Loss(\theta)=Loss(\theta_0)+\frac 1 2 (\theta-\theta_0)^TH(\theta-\theta_0),H为Loss的黑塞Hessian矩阵 Loss(θ)=Loss(θ0)+21(θθ0)TH(θθ0),HLoss的黑塞Hessian矩阵

  • **(θ-θ0)TH(θ-θ0)>0** **,则对于任意附近的θ 有Loss(θ)>Loss(θ0),θ0为Local Minima。此时H的特征值均为正——正定矩阵**

  • **(θ-θ0)TH(θ-θ0)<0** ,则对于任意附近的θ 有Loss(θ)<Loss(θ0),θ0为Local Maxima。此时H的特征值均为负

  • **(θ-θ0)TH(θ-θ0)>0与(θ-θ0)TH(θ-θ0)<0同时存在** ,则θ0为saddle point,此时H的特征值有正有负

    **此时可根据负根的特征向量往更小的地方更新参数,原理如下:**设x=θ-θ0,若x为特征向量,则xTHx=xT(Hx)=xT(λx)=λ(xTx)=λ|x||x|。此时若λ为负,则Loss(θ)<Loss(θ0)实现了Loss的减少,而θ=θ0+x
    θ = θ 0 + x \theta=\theta_0+x θ=θ0+x

在这里插入图片描述

实际上不会用H去区分,因为计算量大 低维度的local minima很多都是高纬度的saddle point,因此日常训练中saddle point更为常见

批次Batch

在这里插入图片描述

一个batch内有一定量的样本,每个batch内样本数相同。batch内的所有样本计算一次loss,用于更新模型内参数。所有的batch全计算过一遍后称为一次迭代epoch。每次epoch前都需要随机选择参数初始值,随机划分batch

batch大小的比较

batch内的大小决定了一次epoch内更新参数的次数也决定了batch内所有样本计算loss的时间开销

时间的开销

在这里插入图片描述

在这里插入图片描述

不采用GPU并行计算,则batch内样本数量越多花费时间越多否则花费时间越少。若采用GPU并行计算,则batch内样本在一定大数内计算花费时间是几乎一样的

在一次epoch内batch内样本数量越多,batch的数量越少,一次epoch花费的时间越少,参数的更新也越相对稳定。而batch内样本数量越少,batch的数量越多,一次epoch花费的时间越多,参数的更新越noise。

📌从花费时间上来说,大的batch size更好

训练集和测试集的效果

训练集效果

在这里插入图片描述

在这里插入图片描述

小的batch size的noise更有利于训练,大的batch size反而会导致optimization的问题 原因:小的batch size会有更多的batch
num
。因为不同的batch的Loss函数不同,从而使得临界点不同,从而能够更多次地更新参数,比大的batch
size更能避免gradient=0的情况

测试集效果

在这里插入图片描述

在这里插入图片描述

原因:小的batch
size会产生更有容错的model(盆地)
,从而会使结果与实际结果相差较小。而大的batch
size会有较低的容错可能(峡谷),从而与实际结果相差较大

小的batch更有利于训练集的训练和测试集的预测

在这里插入图片描述

动量Momentum

在这里插入图片描述

动量的定义是给模型一个动力,让其在gradient=0的local minima仍能走出

一般的Gradient Descent

w i + 1 = w i − η × ∂ l o s s ∂ w ∣ w = w 0 w_{i+1}=w_i-\eta \times \frac{\partial loss}{\partial w}|_{w=w^0} wi+1=wiη×wlossw=w0

在这里插入图片描述

带有动量的Gradient Descent

带有动量的Gradient Descent每次更新时更新的量是上一次的更新量*λ减去这一次的η*gradient

θ 0 , m 0 = 0 , θ 1 = θ 0 + m 1 , m 1 = λ m 0 − η g 0 , θ 2 = θ 1 + m 2 , m 2 = λ m 1 − η g 1 \theta^0,m^0=0, \theta^1=\theta^0+m^1,m^1=\lambda m^0-\eta g^0, \theta^2=\theta^1+m^2,m^2=\lambda m^1-\eta g^1 θ0,m0=0,θ1=θ0+m1,m1=λm0ηg0,θ2=θ1+m2,m2=λm1ηg1

总结公式如下:

θ i = θ i − 1 − η λ i − 1 g 0 − η λ i − 2 g 1 − … … − η g i − 1 , 初始时为 θ 0 , 且后续不重复 \theta^i=\theta^{i-1}-\eta \lambda ^{i-1}g^0-\eta \lambda ^{i-2}g^1-……-\eta g^{i-1},初始时为\theta^0,且后续不重复 θi=θi1ηλi1g0ηλi2g1……ηgi1,初始时为θ0,且后续不重复

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

异步通信技术AJAX | 原理剖析、发送Ajax请求四步

目录 一&#xff1a;快速搞定AJAX&#xff08;第一篇&#xff09; 1、传统请求及缺点 2、AJAX请求原理剖析 3、AJAX概述 4、XMLHttpRequest对象 5、AJAX GET请求 6、AJAX GET请求提交数据 7、AJAX GET请求的缓存问题 8、AJAX POST请求及模拟表单提交数据 9、经典案例…

C语言基础--数组

文章目录一维数组一、一维数组的创建和初始化&#xff08;1&#xff09;一维数组的创建&#xff08;2&#xff09;一维数组的初始化1&#xff09;整形数组初始化2&#xff09;字符数组初始化3&#xff09;sizeof与strlen4&#xff09;总结二、一维数组的使用三、一维数组在内存…

基于C++实现(控制台)职工信息管理系统【100010060】

职工信息管理系统 一、实验内容 ​ 设计一个职工信息管理案例&#xff0c;实现不同类别职工的工资数据。职工的种类包括&#xff1a;正式职工和临时工。定义一个基本的职工类&#xff0c;基本信息包括&#xff1a;编号、姓名、性别、年龄、家庭住址、基本职务工资。派生出正式…

Quarkus实现第一个Hello World

Quarkus介绍 Quarkus 是一个为 Java 虚拟机&#xff08;JVM&#xff09;和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架&#xff0c;用于专门针对容器优化 Java&#xff0c;并使其成为无服务器、云和 Kubernetes 环境的高效平台。 Quarkus 可与常用 Java 标准、框架和库…

php正则匹配反斜杠问题

php正则匹配反斜杠问题&#xff1a; 之前做了一道题&#xff0c;发现php中正则匹配反斜杠好像有点问题。 我们先看下面代码&#xff1a; <?php$cmd "\\";echo $cmd.PHP_EOL;if(preg_match("/\\\\|\\/",$cmd)) {echo "yes";} else {echo …

springdata-jpa-hibernate-03

springdata-jpa-hibernate-03 多表关联操作 首先加上这个lombok依赖,可以使代码更加简洁 一对一 account类 customerRepository接口 测试 一对多 message类 测试 多对一 在上面一对多的基础上加上这句代码就行 MessageRepository接口 测试&#xff1a; 多对多…

Mybatis-Plus快速入门

入门案例 MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在简化开发、提高效率开发方式基于MyBatis使用MyBatisPlus基于Spring使用MyBatisPlus基于SpringBoot使用MyBatisPlusSpringBoot整合MyBatis开发过程&#xff08;复习&#xff09;创建Spring…

DSP-Z变换

目录 Z变换的定义: Z变换的收敛域: 收敛域的定义: 收敛条件&#xff1a; Z变换收敛域的形状&#xff1a; 阿贝尔定理&#xff1a; 对于有限长序列的收敛域&#xff1a; Z变换的性质: 线性&#xff1a; 收敛域取交集&#xff1a; 时移&#xff1a; 指数相乘&#xf…

Java和Web前端哪个有发展前景?

Java和Web前端都是当今技术行业里的热门岗位&#xff0c;岗位招聘需求量大&#xff0c;人才竞争度高&#xff0c;同学们掌握这两个岗位里其中任何一个的相关主流技术&#xff0c;都可以找到一份不错的职位。下面请允许笔者做一个简要的分析阐述&#xff1a; 一、Web前端 Web前…

5 Redis

5.1 Redis 5.1.1 前言 前面使用到的mysql数据库会出现以下问题 由于用户量增大&#xff0c;请求数量也随之增大&#xff0c;数据压力过大 多台服务器之间数据不同步 多台服务器之间的锁&#xff0c;已经不存在互斥性了。 5.1.2 Redis 5.1.2.1 什么是Redis Redis&#x…

GO语言基础-05-循环和语句-select语句

文章目录1. 概述1.1 作用1.2 和switch比较1.3 执行过程2. 语法示例3. 完整示例1. 概述 1.1 作用 监听channel的数据流动 1.2 和switch比较 相同 开始的一个新的选择块&#xff0c;每个选择条件由case语句来描述。 不同 switch语句&#xff1a;可以选择任何使用相等比较的…

SpringCloud 协同开发方案

相比Springboot开发&#xff0c;SpringCloud开发要复杂的多&#xff0c;因为涉及服务的注册发现&#xff0c;多个微服务模块间的调用等。 最简单的解决方案是每个开发者都在本地启动一套完整的开发环境&#xff0c;包括网关、nacos等各个组成微服务的模块&#xff0c;如果系统…

Hive 学习Demo

背景介绍 陌陌作为聊天平台每天都会有大量用户在线&#xff0c;会出现大量的聊天数据&#xff0c;通过对聊天数据分析&#xff0c;可以更好的构建精确的用户画像&#xff0c;为用户提供更好的服务以及实现高ROI(投资回报率)的平台运营推广&#xff0c;给公司的发展决策提供精确…

智能网联汽车渗透率变化图显示预计

IDC 于 2020 年最新发布的《全球智能网 联汽车预测报告&#xff08;2020-2024&#xff09;》数据显示&#xff0c;尽管受新冠肺炎疫情冲击&#xff0c;2020 年全球智能网联汽车出货量预计较上一年下滑 10.6%&#xff0c;约为 4440 万辆&#xff0c;但到 2024 年全球智能网联汽车…

广播机制基础知识

广播机制 1.广播机制 1.1概述 1.1.1引入 1.广播的生活案例 记得以前读书的时候&#xff0c;每个班级都会有一个挂在墙上的大喇叭&#xff0c;用来广播一些通知&#xff0c;比如&#xff0c;开学要去搬书&#xff0c;广播&#xff1a; "每个班级找几个同学教务处拿书"…

商业智能BI与业务结构分析

做商业智能BI还必须熟悉行业和业务知识&#xff0c;不结合行业业务知识&#xff0c;商业智能BI的项目是很难落地的。商业智能BI的本质其实是企业的业务和管理思维的落地。企业的高层、业务部门的管理人员为什么要通过商业智能BI去看报表&#xff0c;他们看的是什么&#xff0c;…

深度学习-吴恩达(C3)结构化你的机器学习工程

结构化你的机器学习工程改变了深度学习的错误 比如你分割数据的方法&#xff0c;分割成train&#xff0c;development(dev)或叫valid&#xff0c;test&#xff0c;所以最好的实践方法是什么&#xff1f;了解更多端对端的深度学习&#xff0c;进而了解到你是否需要使用它&#…

Elasticsearch 核心技术(三):Kibana 安装、配置、运行(Windows 版)

❤️ 个人主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、下载 Kibana二、安装 Kibana三、配置 Kibana1. 主机名2. 端口3. Elasticsea…

Spark基础入门----框架概述

Spark Spark 框架概述 Spark 诞生背景 Apache Spark是用于大规模数据处理的统一分析引擎 Spark 最早源于一片论文&#xff0c;该论文是由加州大学柏克莱分校的Matei Zaharia等人发表。论文中提出了一种弹性分布式数据集(RDD)的概念。 总的说&#xff0c;Spark借鉴了Map Red…

Android进阶——sdk开发和apk开发有什么区别?

sdk SDK 就是 Software Development Kit 的缩写&#xff0c;中文意思就是“软件开发工具包”。即辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。 apk APK&#xff08;全称&#xff1a;Android application package&#xff0c;Android应用程序包&#…