Datawhale X 李宏毅苹果书 AI夏令营(深度学习进阶)taks1

news2024/11/16 7:26:43

深度学习的基础

常见的临界点的种类为局部最小值和鞍点

1.局部最小值

对于任何目标函数f(x),如果在x处对应的f(x)值小于在x附近任意其他点的f(x)值,那么f(x)可能是局部最小值。如果f(x)在x处的值是整个域中目标函数的最小值,那么f(x)是全局最小值。

我们可以看一个例子:

f(x) = x · cos(πx) for − 1.0 ≤ x ≤ 2.0

%matplotlib inline
import numpy as np
import torch
from mpl_toolkits import mplot3d
from d2l import torch as d2l
def f(x):
    return x*torch.cos(np.pi*x)
def g(x):
    return f(x)+0.2*torch.cos(5*np.pi*x)
def annotate(text,xy,xytext): #@save
    d2l.plt.gca().annotate(text,xy=xy,xytext=xytext,arrowprops=dict(arrowstyle='->'))
x=torch.arange(-1.0,2.0,0.01)
d2l.plot(x,[f(x),],'x','f(x)')
annotate('local minimum',(-0.3,-0.25),(-0.77,-1.0))
annotate('global minimum',(1.1,-0.95),(0.6,0.8))

在这个例子中,我们能够很明显的区分出局部最小值和全局最小值

2.鞍点

鞍点(saddle point)是指函数的所有梯度都消失但既不是全局最小值也不是局部最小值的任何位置。

%matplotlib inline
import numpy as np
import torch
from mpl_toolkits import mplot3d
from d2l import torch as d2l
def f(x):
    return x*torch.cos(np.pi*x)
def g(x):
    return f(x)+0.2*torch.cos(5*np.pi*x)
def annotate(text,xy,xytext): #@save
    d2l.plt.gca().annotate(text,xy=xy,xytext=xytext,arrowprops=dict(arrowstyle='->'))
x=torch.arange(-2.0,2.0,0.01)
d2l.plot(x,[x**3],'x','f(x)')
annotate('saddle point',(0,-0.2),(-0.52,-5.0))

怎么判断一个临界点的种类,有什么方法呢?接下来我们一起学习一下:

网络本身很复杂,用复杂网络算出来的损失函数显然也很复杂。虽然无法完整知道整个损失函数的样子,但是如果给定某一组参数,比如 θ′,在 θ′ 附近的损失函数是有办法写出来的——虽然 L(θ) 完整的样子写不出来。θ′ 附近的 L(θ) 可近似为:

                       L(\Theta)\approx L(\Theta ')+(\Theta -\Theta ') ^{T}g+(\Theta -\Theta ') ^{T}H(\Theta -\Theta ') ^{T}

其中,第一项 L(θ)′ 告诉我们,当 θ 跟 θ′ 很近的时候,L(θ) 应该跟 L(θ′) 还蛮靠近的;第二项 θ(\Theta -\Theta ')^{T}g 中,g 代表梯度,它是一个向量,可以弥补 L(θ′) 跟 L(θ) 之间的差距。有时候梯度 g 会写成 ∇L(θ′)。gi 是向量 g 的第 i 个元素,就是 L 关于 θ 的第 i 个元素的微分,即

g_{i}=\frac{\partial L(\Theta ')}{\partial \Theta _{i}}

但是看 g 还是没有办法完整地描述 L(θ),还要的第三项 \frac{1}{2}(\Theta -\Theta ')^{T}H(\Theta -\Theta ')^{T}。第三项跟海森矩阵(Hessian matrix)H 有关。H 里面放的是 L 的二次微分,它第 i 行,第 j 列的值 HiHij 就是把 θ 的第 i 个元素对 L(θ′)作微分,再把 θ 的第 j 个元素对 \frac{\partial L(\Theta ^{'}))}{\partial \Theta _{i}}作微分后的结果,即

                                                    H_{ij}=\frac{\partial^2 }{\partial \Theta _{i}\partial \Theta _{j}}L(\Theta ^{'})

在临界点,梯度 g 为零,因此 \frac{1}{2}(\Theta -\Theta ^{'})^{T}H(\Theta -\Theta ^{'}) 为零。所以在临界点的附近,损失函数可被近似为L(θ) ≈ L(\Theta ^{'})+\frac{1}{2}(\Theta -\Theta ^{'})^{T}H((\Theta -\Theta ^{'})

为了符号简洁,我们用向量 v 来表示 θ − θ′,(\Theta -\Theta ^{'})^{T}H(\Theta -\Theta ^{'})可改写为 v^{T}Hv,有如下三种情况。

(1)如果对所有 v,v^{T}Hv > 0. 这意味着对任意 θ,L(θ) > L(θ′). 只要 θ 在 θ′ 附近,L(θ) 都大于 L(θ′). 这代表 L(θ′) 是附近的一个最低点,所以它是局部极小值。

(2)如果对所有 v,v^{T}Hv < 0. 这意味着对任意 θ,L(θ) < L(θ′),θ′ 是附近最高的一个点,L(θ′) 是局部极大值。

(3)如果对于 v,v^{T}Hv有时候大于零,有时候小于零。这意味着在 θ′ 附近,有时候L(θ) > L(θ′),有时候 L(θ) < L(θ′). 因此在 θ′ 附近,L(θ′) 既不是局部极大值,也不是局部极小值,而是鞍点。

但是我们根据\frac{1}{2}(\Theta -\Theta ^{'})^{T}H(\Theta -\Theta ^{'})来判断临界点的种类,需要带入所有的θ,比较复杂,所以我们使用v^{T}Hv的正负来判断会更简单。算出一个海森矩阵后,不需要把它跟所有的 v 都乘乘看,只要看 H的特征值。若 H 的所有特征值都是正的,H 为正定矩阵,则 v^{T}Hv > 0,临界点是局部极小值。若 H 的所有特征值都是负的,H 为负定矩阵,则 v^{T}Hv < 0,临界点是局部极大值。若 H 的特征值有正有负,临界点是鞍点。

接下来我使用李宏毅老师的ppt来用例子再解释一下:

在深度学习中,判断临界点的种类可以通过以下几种方法进行详细解释:

1. 梯度方法:梯度是指函数在某一点的变化率,对于一个临界点来说,梯度为零。因此,可以通过计算网络参数的梯度来判断是否达到了临界点。如果梯度接近于零,表明参数已经收敛到一个临界点。

2. Hessian矩阵方法:Hessian矩阵是二阶导数矩阵,它可以提供有关函数在某一点的曲率信息。对于一个临界点来说,Hessian矩阵的特征值为零。因此,可以通过计算网络参数的Hessian矩阵来判断是否达到了临界点。如果主特征值接近于零,表明参数已经收敛到一个临界点。

3. 自适应学习率方法:自适应学习率是指根据网络参数的变化情况自动调整学习率的方法。在训练过程中,如果自适应学习率几乎不再变化,说明参数已经收敛到一个临界点。

4. 梯度探索方法:梯度探索是指在训练过程中,通过调整网络参数的初始值、学习率等超参数,反复训练网络,观察网络达到的各个临界点的性能变化。如果在某个临界点的性能变化较小,说明参数已经收敛到该临界点。

这些方法可以帮助判断网络参数是否达到了临界点,但需要注意的是,临界点并不一定是局部最小值,也可能是鞍点或局部最大值。因此,判断网络参数是否收敛到一个理想的临界点还需要结合其他信息和经验。

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

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

相关文章

如何将LaTeX数学公式嵌入到PowerPoint中

如何将LaTeX数学公式嵌入到PowerPoint中 简介 在学术演示或技术报告中&#xff0c;清晰且专业地展示数学公式是至关重要的。PowerPoint虽然提供了一些基本的公式编辑功能&#xff0c;但如果你需要更复杂或格式严格的公式&#xff0c;使用LaTeX生成公式并嵌入到PPT中是一个极佳…

huggingface下载model

0x00 背景 服务器的普通用户&#xff0c;不具有root权限服务器网络不稳定 0x01 解决办法 使用镜像【HF-Mirror】提供的工具hfd 方法三&#xff1a;使用 hfd hfd 是本站开发的 huggingface 专用下载工具&#xff0c;基于成熟工具 gitaria2&#xff0c;可以做到稳定下载不断…

安卓中 onClick(View v) 方法在主线程还是子线程运行

在Android开发中&#xff0c;onClick(View v) 方法通常是在主线程&#xff08;也称为UI线程&#xff09;中运行的。这个方法是在用户与界面元素&#xff08;如按钮&#xff09;进行交互时&#xff0c;由系统框架自动调用的。由于Android的UI操作必须是线程安全的&#xff0c;并…

MySQL 数据库深度解析:安装、语法与高级查询实战

一、引言 在现代软件开发和数据管理领域中&#xff0c;MySQL 数据库凭借其高效性、稳定性、开源性以及广泛的适用性&#xff0c;成为了众多开发者和企业的首选。无论是小型项目还是大型企业级应用&#xff0c;MySQL 都能提供可靠的数据存储和管理解决方案。本文将深入探讨 MyS…

QT Creator UI中文输入跳出英文

笔者用的是QQ拼音输入&#xff0c;发现只要在UI中加入了QTableWidget&#xff0c;输入多几次中文&#xff0c;就会跳入英文。 后面改用搜狗拼音稍微好一些&#xff0c;但是偶尔还是插入了空格。

JavaScript静态方法

介绍 在 JavaScript 中&#xff0c;static 方法是与类本身关联的方法&#xff0c;而不是与类的实例关联。也就是说&#xff0c;static 方法可以通过类直接调用&#xff0c;而不需要创建类的实例。 class PersonCl {constructor(fullName, birthYear) {this.fullName fullNam…

2024湖南自考报考详细流程建议收藏!!

&#x1f4e2;湖南自考报考时间 &#x1f449;新考生入籍时间&#xff1a;8月19日9:00 至 8月28日 12:00 &#x1f449;考生理论课程报考时间&#xff1a;8 月 27日 9:00 至 9月4 日 17:00 &#x1f4e2;湖南自考报考流程 &#x1f449;登录“湖南省高等教育自学考试综合管理平…

《机器学习》 AUC性能测试、回归树、随机森林

目录 一、AUC性能测试 1、什么是AUC 2、什么是AUC-ROC曲线 1&#xff09;TPR、FPR • TPR&#xff1a;真实值为1&#xff0c;预测值为1的概率 • FPR&#xff1a;真实值为0&#xff0c;预测值为1的概率 2&#xff09;如何绘制图示曲线 3、最理想的AUC-ROC曲线图 4、案…

C语言占领游戏

目录 开头程序程序的流程图程序的效果结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <Windows.h> void pri…

C语言 自定义类型-结构体 #结构体类型的声明 #结构体的自引用 #结构体内存对齐 #结构体位段的实现

文章目录 前言 一、结构体类型的声明 1、结构体的基础知识 2、结构体的声明 3、特殊声明 二、结构体的自引用 三、结构体变量的定义和初始化 1、结构体的定义分为两类 2、结构体的初始化 四、结构体内存对齐 1、结构体在内存中是怎样存放的呢&#xff1f; 2、结构体的对齐规则&…

数字卫星:「超实时仿真」实现处理器性能5倍提升

01.数字孪生in卫星 卫星及其附属系统在航天领域具有十分重要的意义。近年来&#xff0c;卫星产业发展迅猛&#xff0c;数字化、网络化、智能化、服务化转型升级需求日益增长。为进一步完善星务软件验证工作、获取在轨卫星模拟数据&#xff0c;“数字卫星”成为当下主流趋势。 …

考研数学快9月了才开始强化,《660》《880》哪本优先?

快9月了&#xff0c;如果你刚开始强化&#xff0c;那要抓点紧了&#xff01; 很多使用660880这两本习题册的同学提问&#xff1a;《660》《880》哪本优先&#xff1f; 其实&#xff0c;不管先做那本&#xff0c;都一样&#xff0c;做题的目的是为了查缺补漏&#xff0c;而不是…

一起学Java(5)-[起步篇]教你掌握本协作项目中的Gralde相关配置文件(下)

接上篇《一起学Java(4)-java-all-in-one协作项目相关文件研究&#xff08;Gradle篇-上&#xff09;》&#xff0c;本文继续研究项目中Gradle相关文件。 全文详见个人独立博客&#xff1a;https://www.coderli.com/java-go-5-project-config-files-intro-gradle-two/ 一起学Ja…

ACCESS 手工注入实战 凡诺靶场

简介 Access数据库注入攻击是一种常见的网络安全&#xff0c;通过注入SQL代码来获取未授权的数据访问权限。这种攻击利用了应用程序与数据库之间的交互漏洞&#xff0c;攻击者通过输入特定的SQL代码片段来操纵数据库查询&#xff0c;从而绕过应用程序的安全机制&#xff0c;获取…

R 语言学习教程,从入门到精通,R 绘图饼图(22)

1、R 绘图 饼图 R 语言提供来大量的库来实现绘图功能。 饼图&#xff0c;或称饼状图&#xff0c;是一个划分为几个扇形的圆形统计图表&#xff0c;用于描述量、频率或百分比之间的相对关系。 R 语言使用 pie() 函数来实现饼图&#xff0c;语法格式如下&#xff1a; pie(x, la…

软件测试——IDEA2023配置assert断言

IDEA2023配置assert断言 vm options输入框 输入以下内容 -ea -Dfile.encodingUTF-8 点击APPLY OK

js 手写图片懒加载插件

一、目标 模仿vue-lazyload插件 只需将img标签的src属性名替换为自定义属性v-lazy&#xff0c;即可实现图片懒加载功能 例如&#xff1a; 二、实现 不清楚图片懒加载原理的参考我的上一篇博客 1.封装自定义插件&#xff1a;暴露一个对象&#xff0c;包含一个install方法 …

咸鱼之王手游内购修复无bug运营版联网架设+后台

今天给大家带来一款单机游戏的架设&#xff1a;咸鱼之王手游。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对是完整可…

在Ubuntu 部署 Grafana且监控MySQL数据

一、安装 打开终端按顺序执行以下命令 1.添加 Grafana 的 APT 仓库&#xff1a; sudo apt-get install -y software-properties-common sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" 2.导入Grafana GPG key&#xff1a; wge…

国产光耦合器的应用和优势浅析

光耦合器&#xff0c;也称为光隔离器&#xff0c;是电子领域的关键元件&#xff0c;为系统的不同部分提供必要的电气隔离。在国内半导体行业&#xff0c;高性能光耦合器的开发已成为一个重点关注领域&#xff0c;因为它们广泛应用于各个领域&#xff0c;包括医疗设备、汽车电子…