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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 网络设计技巧(李宏毅深度学习 task 5) -> 正文阅读

[人工智能]网络设计技巧(李宏毅深度学习 task 5)

1. 局部最小值与鞍点

1.1 相关定义:

  1. critical point:梯度(gradient)为零的点
  2. local minima(局部最小值)
  3. saddle point(鞍点):一个不是局部最小值的驻点(一阶导数为0的点)
    在这里插入图片描述

1.2 梯队逼近为0的原因

可能是因为卡在了critical point上。但我们知道,这里面有两种情况

  1. 卡在了local minima。此时没有路可以走
  2. 卡在了saddle point。此时还有路可以走,可以是loss更低
    所以,我们需要对critical point的情况进行分析

情况的判断

  1. 将loss函数通过泰勒展开式写成以下形式:
    在这里插入图片描述
  2. 判断:此时可以通过在 θ ′ \theta^{'} θ处error surface的形式的分析,可以判断出此时的 θ ′ \theta^{'} θ是处于local minima还是saddle point
    如果走到了一个critical point,意味着gradient为0,即绿色的一项为0,只剩下红色的一项
    在这里插入图片描述
    判断:通过hessian矩阵的特征值来判断
    1. 特征值都为正的,则为local minima
    2. 特征值都为负的,则为local maxima
    3. 特征值一正一负,则为saddle point
      在这里插入图片描述
      若判断为saddle point,根据hessian矩阵进而看出更新的方向(负的特征值的方向),顺着方向走就可以让loss变小
      在这里插入图片描述

local minima和saddle point哪个更常见?

  1. 结论:saddle point更常见
  2. 原因:在当前维度的角度下是一个local minima,但放到更高维度的空间中有可能是一个saddle point
  3. 举例:在一维空间中都是local minima,但把它放到二维空间中它很可能是一个saddle point
    在这里插入图片描述

2. 批次(batch)与动量(momentum)

2.1 批次(batch)

2.1.1 概述:

拿一个batch的资料拿出来算loss,所有的batch 看过一遍叫一个epoch
shuffle(洗牌) 有很多不同的做法,常见的做法是在每一次epoch开始之前会分一次batch,每一个epoch的batch都不一样。
在这里插入图片描述

2.1.2 为什么要用batch

在这里插入图片描述

  1. 左边(未用batch):看过所有的资料之后才能update一次
    1. 优点:稳妥
    2. 缺点:时间长
  2. 右边(使用batch,batch size = 1):看一个资料更新一次
    1. 优点:时间短
    2. 缺点:不稳妥

2.1.3 神奇之处:

1.noisy的gradient 反而 可以帮助training

  1. 当你用大的batch size时,你的optimization可能会有问题。(model 一样,不是model bias的问题)
    在这里插入图片描述
  2. 原因(一种解释):假设你是full batch 你在update你的参数的时候,就是沿着一个loss function来update参数,当走到一个local minima 显然就停下来了
    但是假如是small batch 的话,因为我们是每次挑一个batch出来算它的 loss 。等于是你每次update 你的参数的时候,你用的loss function都是略有差异的。选到第一个batch的时候是用L1来算你的gradient ,选到第二个batch的时候是用L2来算你的gradient ,假设你用L1算 gradient 的时候发现是0卡住了,但L2它的function与L1又不一样,L1卡住了,L2不一定会卡住啊,所以L1卡住没关系,换下一个batch来 L2再算gradient,你还是有办法training你的model,还是有办法让你的loss变小。
    在这里插入图片描述

2. 小的batch也对testing有帮助

在这里插入图片描述
原因:在training loss上可能有很多个local minima,但local minima有好有坏,我们认为如果一个localminima 在一个峡谷里面,他就是一个坏的;在一个平原上,他就是一个好的。

因为training 和testing 之间会有差距,对“平原minima”来说,两者差的不会太多。“峡谷minima”就会差很多。
在这里插入图片描述
small batch or big batch
在这里插入图片描述

2.2 动量(momentum)

2.2.1 一般的gradient descent

有一个初始的参数 θ 0 \theta_{0} θ0?计算该点gradient ,计算完之后往gradient的反方向去update参数,一直继续下去
在这里插入图片描述

2.2.2 加上momentum

找一个初始参数,计算 g 0 g_0 g0?下一步是gradient的方向加上前一步的方向
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 自动调整学习率(Adaptive Learning Rate)

3.1 问题的引进

学过之前的东西,当loss不再发生变化的时候,你是否会认为此时一定到达critical point?你是否忘记了之前我们讨论学习率的时候那个学习率设置过大的后果?
在这里插入图片描述

  1. 当学习率过大的时候,它为什么无法得到最优解呢?答案是:因为振荡
  2. 当学习滤过小的时候,因为步长过短,需要耗费的时间过长
    在这里插入图片描述
    为了解决这个现象,我们来进行调整

3.2 修改学习率

  1. 原则:在坡度较大的地方,我们希望我们的步长小一点,此时我们应减小Learning Rate;在坡度较小的地方,我们希望我们的步长大一点,此时我们应增加Learning Rate
  2. 由原则的思想我们是否想到了之前谈论的进行学习率调整的adagrad算法,这个也就不在阐述。
    在这里,我们要学会一个新的思路,那就是就算是同一个参数,他需要的学习率也会随时间而改变

RMS Prop

  1. 新增一个hyper parameter: α \alpha α
    在这里插入图片描述
  2. 通过对 α \alpha α的调整来调整 g i 1 g_i^{1} gi1?的影响力大小。
    1. α \alpha α趋于0,则 g i 1 g_i^{1} gi1?比较重要
    2. α \alpha α趋于1,则 g i 1 g_i^{1} gi1?比较不重要,之前计算的gradient更加重要

在这里插入图片描述
但可能会导致暴走的问题
3. 解决暴走的方法:
1. Learning Rate Scheduling:让 η \eta η与时间有关。随着时间的增加而让 η \eta η减小

在这里插入图片描述
2. warm up
在这里插入图片描述

4. 损失函数也有影响

在做分类问题时,较多的把Class用独热向量来表示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了更好的使 y ^ \hat{y} y^? y ′ y^{'} y接近,利用softmax来做处理:将 y y y中的值normallize移动到0-1,计算与label的相似度
在这里插入图片描述
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:10:48  更:2021-07-22 14:12:17 
 
开发: 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年12日历 -2024/12/22 9:55:15-

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