IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【机器学习】李宏毅 - 03 神经网络优化 -> 正文阅读

[人工智能]【机器学习】李宏毅 - 03 神经网络优化

Critical Point

定义:梯度(Gradient)为0的点。

Loss没有办法再下降,可能卡在了Critical Point:局部最小值(local minima)或鞍点(saddle point)。

在这里插入图片描述

局部最小值(local minima)

卡在局部最小,则没有路可以走了。

鞍点(saddle point)

卡在鞍点,则旁边还是有路可以走。

判断标准

考察 θ \theta θ附近损失函数的梯度 → \rightarrow 泰勒展开 → \rightarrow 海塞矩阵 H H H

在这里插入图片描述

概念

第一项中,当 θ \theta θ θ ′ \theta^{'} θ很接近的时候, L ( θ ′ ) L(\theta^{'}) L(θ) L ( θ ) L(\theta) L(θ)很接近。

第二项中, g g g是一个向量,代表梯度(一阶导数),可以弥补 L ( θ ′ ) L(\theta^{'}) L(θ) L ( θ ) L(\theta) L(θ)之间的差距; g g g的第 i i i个component,就是 θ \theta θ的第 i i i个component对 L L L的微分。

第三项中, H H H表示海塞矩阵,是 L L L的二次微分/二阶导。

在Critical Point附近时,需考察 H H H的特征值

第二项为0,需要根据第三项来判断,考察 H H H的特征值。

在这里插入图片描述

  1. 当所有的eigen value都是正的, H H H是正定矩阵(positive definite),此时是局部最小值。
  2. 当所有eigen value都是负的, H H H是negative definite,此时是局部最小值。
  3. 当eigen value有正有负,那就是鞍点。

在这里插入图片描述

实例1

方法一:倒搜所有参数,得到所有loss的值,画出的Error Surface。

在这里插入图片描述

方法二:直接计算出一个点是局部最小还是鞍点。

  1. 一阶导为0 → \rightarrow 确定critical point

    在这里插入图片描述

  2. 计算Hessian矩阵

在这里插入图片描述

  1. 观察 H H H的特征值正负

在这里插入图片描述

卡在鞍点时, g g g为0,可以利用 H H H的特征向量确定参数更新方向

在这里插入图片描述

步骤:

  1. 找出负的特征值(eigen value)。
  2. 找出对应的特征向量(eigen vector) u u u
  3. 把特征向量 u u u加上 θ ′ \theta^{'} θ,即沿着 u u u的方向更新,就可以找到一个新的点 θ \theta θ,这个点的loss比原来还要低。

实例2

在这里插入图片描述
注意:该方法需要算Hessian矩阵,计算量大,实际操作中很少用到。

局部最小值(Local Minima)比鞍点(Saddle Point)少得多

在这里插入图片描述

Loss在一个高维空间中,往往只会遇到鞍点,几乎不会遇到局部最小值点 → \rightarrow 从上图中可见,正特征值的数目最多只占所有特征值的60%,说明剩余40%的维度都仍然“有路可走”,可以让loss下降。

批次(Batch)与动量(Momentun)

总结:Small Batch size and momentum can help escape critical points.

Review:Optimization with Batch (Task2 05)

  • 在更新参数时,我们拿 大B项样本数据 ,计算Loss和Gradient。
  • 所有的Batch看过一遍,叫做一个Epoch。
  • Shuffle:每个Epoch开始前会重新分一次batch,每一个Epoch的batch都不一样。

Small Batch v.s. Large Batch

基本现象

在这里插入图片描述

  • 左边的情况中,必须把20个样本数据遍历一遍后,我们的参数才能更新一次。

    蓄力时间长(是这样吗?学下去!),但是威力比较大

  • 右边的情况中,只需要一个样本数据就能更新一次参数。显而易见,用一个样本计算出的loss,是比较有噪声( Noisy )的,所以更新的方向是曲曲折折的。

    技能冷却时间短(是这样吗?学下去!),但威力不准

时间性能

考虑并行计算(Parallel computing)时,Large Batch花费的时间不一定比较长。除非batch size过于庞大。

在这里插入图片描述

现象

  • Batch Size从1到1000所需时间几乎一致。
  • 增加到10000,乃至60000时,一个Batch所需时间随着Batch Size的增加而增长。

原因

  • GPU可以做并行运算,所以1000个样本数据所需时间,并不是一个样本的1000倍。
  • GPU平行运算能力有极限,当Batch Size真的非常巨大时,GPU跑完一个Batch计算出Gradient所需时间,还是会随Batch Size的增加而增长。

对总时间的影响

因为有平行运算的能力,所以当 Batch Size 小 的时候, 跑完一个Epoch花的时间比大的Batch Size还要多 ;反之, 大的Batch Size情况下,跑完一个Epoch花的时间反而少

那么Large Batch威力大,有了并行计算的加持后,运行时间又少,是不是百利无一害呢?

答案不然。我们看以下两张图,可以发现在Large Batch的情况下,预测精确度会随着Batch Size增大而降低。
在这里插入图片描述

  • Smaller batch size has better performance.
  • “Noisy” update is better for traning.
  • What’s wrong with large batch size? Optimization issue.

结论

结论1: 使用较小的Batch Size,在更新参数时会有Noisy → \rightarrow 有利于训练

? 使用Small Batch时,不同的Batch求得的Loss略有差异,当L1落入局部最小值卡住时,L2可以继续训练。

在这里插入图片描述

结论2:使用较小的Batch Size,可以避免Overfitting → \rightarrow 有利于测试(Testing)

[On Large-Batch Training For Deep Learning,Generalization Gap And Sharp Minima] (https://arxiv.org/abs/1609.04836) 这篇 Paper 的实验结果

Training的时候都很好,Testing的时候,大的Batch对应的Testing结果差 ,代表 Overfitting

一种解释(尚待研究)

在这里插入图片描述

一个“峡谷里”的Local Minima是坏的极小值,而“平原上的”Local Minima是好的极小值。

把Training的Loss往右平移,对于一个在 平原上的minima 来说,它在Training和Testing上面的结果不会 差太多 ;对于在 峡谷里的minima 来说, 差别甚远

Large Batch会倾向于走入峡谷极小值,而Small Batch会倾向于走入平原极小值。

Large Batch顺着规定的方向更新参数,很有可能走入比较小的峡谷里。而Small Batch有多个Loss Function,每次更新方向不一样,如果峡谷很窄,可能会跳出这个峡谷最小值。

结论 3: BatchSize是一个需要调整的参数,它会影响训练速度与优化效果。
在这里插入图片描述

案例:综合考虑Large Batch的“高速”优势,和“较差”的优化结果。(鱼与熊掌)

动量(Momentum)

在这里插入图片描述

物理世界的动量,小球会有惯性越过critical point。

Vanilla Gradient Descent(一般的梯度下降):只考虑梯度的方向,向反方向移动。

Gradient Descent + Momentum

理解:Momentum是一种改进梯度下降方向的策略,防止落入局部最小值。

综合梯度方向+前一步的方向
在这里插入图片描述

不是只看gradient的方向,而是会结合之前移动的方向来调整参数,相当于考虑之前所有梯度的总和。
在这里插入图片描述
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:33:42  更:2022-10-17 12:37:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:17:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码