Lesson 3 when gradient is small

2024-03-04 13:36
文章标签 small gradient lesson

本文主要是介绍Lesson 3 when gradient is small,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

听课(李宏毅老师的)笔记,方便梳理框架,以作复习之用。本节课主要讲了优化失败的原因,batch大小对训练的影响,使用Momentum方法来解决梯度下降时无法逃离critical point的现象

1. 优化失败的原因

主要有两个

  • local minima
  • saddle point
    大家在学习时通常会忽略第二个,而直接说是因为遇到了local minima,实际上这是很不严谨的。应该统称为critical point,当gradient 为0时,不仅仅可能是local minima,还有可能是saddle point
    theta’是一个critical point
    在这里插入图片描述

2. 如何分辨是local minima还是saddle point?

这部分涉及到数学的证明和推理,看不懂也没关系,反正在实际应用中也不用这个算……
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 看起来存在的local minima在更高维度不一定存在

在这里插入图片描述
在这里插入图片描述
小结
在这里插入图片描述

4. Batch size对训练有影响吗?

4.1 简单回顾

在这里插入图片描述

4.2 一个比较极端的例子

在这里插入图片描述

4.3 大batch速度占优势(但有一定限制)

只要batch size不是特别大,其实大batch在速度上还是占优势的。
在这里插入图片描述

4.4 大batch并非十全十美

在这里插入图片描述
大batch可能会导致optimization fails
在这里插入图片描述

4.5 大batch导致optimization失败的原因

在这里插入图片描述

4.6 为什么小batch在测试集上表现更好?

在这里插入图片描述
下面这张图我来解释一下。
首先,为什么traning loss和testing loss可能不一样?
因为这可能是碰到了mismatch现象,测试集和训练集的数据分布就不太一样。导致两个loss函数不一样
其次,我们认为flat minima比sharp minima好。这是为什么呢,因为看两类minima在两条loss曲线的差别,很明显在sharp minima时得到的testing loss更大。
最后,为什么说small batch更容易走到flat minima?不知道,老师这么说的,说是小峡谷无法困住small batch,就可以跳出来到flat minima了

在这里插入图片描述
在这里插入图片描述
有没有什么办法两全其美一下,就是一种既要又要的追求!

5. Momentum

5.1 引入

考虑到物理世界中小球滚下坡时,带有一定的惯性,即使遇到最低点,也能滚出去

5.2 运动方向的合成

红色虚线和蓝色虚线(代表惯性)合成了蓝色实线,蓝色实线就是实际的运动的方向。
在这里插入图片描述

5.3 数学表达

在这里插入图片描述

这篇关于Lesson 3 when gradient is small的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773337

相关文章

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 (debug笔记)

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 ##一、 缘由及解决方法 把这个pytorch-ddpg|github搬到jupyter notebook上运行时,出现错误Nn criterions don’t compute the gradient w.r.t. targets error。注:我用

INDEX+SMALL+IF+ROW函数组合使用解…

很多人在Excel中用函数公式做查询的时候,都必然会遇到的一个大问题,那就是一对多的查找/查询公式应该怎么写?大多数人都是从VLOOKUP、INDEX+MATCH中入门的,纵然你把全部的多条件查找方法都学会了而且运用娴熟,如VLOOKUP和&、SUMPRODUCT、LOOKUP(1,0/....,但仍然只能对这种一对多的查询望洋兴叹。   这里讲的INDEX+SMALL+IF+ROW的函数组合,

【CSS渐变】背景中的百分比:深入理解`linear-gradient`,进度条填充

在现代网页设计中,CSS渐变是一种非常流行的视觉效果,它为网页背景或元素添加了深度和动态感。linear-gradient函数是实现线性渐变的关键工具,它允许我们创建从一种颜色平滑过渡到另一种颜色的视觉效果。在本篇博客中,我们将深入探讨linear-gradient函数中的百分比值,特别是像#C3002F 50%, #e8e8e8 0这样的用法,以及它们如何影响渐变效果。 什么是linear-g

AI学习指南深度学习篇-随机梯度下降法(Stochastic Gradient Descent,SGD)简介

AI学习指南深度学习篇-随机梯度下降法(Stochastic Gradient Descent,SGD)简介 在深度学习领域,优化算法是至关重要的一部分。其中,随机梯度下降法(Stochastic Gradient Descent,SGD)是最为常用且有效的优化算法之一。本篇将介绍SGD的背景和在深度学习中的重要性,解释SGD相对于传统梯度下降法的优势和适用场景,并提供详细的示例说明。 1.

[数字信号处理][Python] numpy.gradient()函数的算法实现

先看实例 import numpy as npsignal = [3,2,1,3,8,10]grad = np.gradient(signal)print(grad) 输出结果是 [-1. -1. 0.5 3.5 3.5 2. ] 这个结果是怎么来的呢? np.gradient 计算信号的数值梯度,也就是信号值的变化率。它使用中心差分法来计算中间点的梯度,并使用前向差分法和后向差分法

ATextAppearance.AppCompat.Small not found

今天编译的代码的时候,刚才还是好的,后来吃个饭回来,就不行了。 报错如下: AGPBI: {"kind":"error","text":"error: resource style/ATextAppearance.AppCompat.Small (aka com.mci.smagazine:style/ATextAppearance.AppCompat.Small) not found.","

机器学习-有监督学习-集成学习方法(六):Bootstrap->Boosting(提升)方法->LightGBM(Light Gradient Boosting Machine)

机器学习-有监督学习-集成学习方法(六):Bootstrap->Boosting(提升)方法->LightGBM(Light Gradient Boosting Machine) LightGBM 中文文档 https://lightgbm.apachecn.org/ https://zhuanlan.zhihu.com/p/366952043

基于Python的机器学习系列(18):梯度提升分类(Gradient Boosting Classification)

简介         梯度提升(Gradient Boosting)是一种集成学习方法,通过逐步添加新的预测器来改进模型。在回归问题中,我们使用梯度来最小化残差。在分类问题中,我们可以利用梯度提升来进行二分类或多分类任务。与回归不同,分类问题需要使用如softmax这样的概率模型来处理类别标签。 梯度提升分类的工作原理         梯度提升分类的基本步骤与回归类似,但在分类任务中,我们使

Lesson_for_java_day24--java中的GUI

一、GUI详解: GUI -- Graphical User InterfaceAWT (抽象窗口工具集 ) AbstractWindow Toolkit --为简单的applet程序设计 --AWT没有提供足够的桌面端的程序所需的特性--它不适宜用来构建丰富的桌面图形界面Swing--Swing是AWT的扩展和功能加强 --是构建java图形界面标准的APISWT(Standard

Lesson_for_java_day23--java的网络编程练习(登入界面、上传文档、上传图片、通过网络文本转换)

练习一、模拟账户登入界面 服务端: package Exercise;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.n