深度学习基础模型算法原理及编程实现--10.优化方法:从梯度下降到NAdam

2023-11-15

文章列表
1.深度学习基础模型算法原理及编程实现–01.感知机.
2.深度学习基础模型算法原理及编程实现–02.线性单元 .
3.深度学习基础模型算法原理及编程实现–03.全链接 .
4.深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 .
5.深度学习基础模型算法原理及编程实现–05.卷积神经网络.
6.深度学习基础模型算法原理及编程实现–06.循环神经网络.
9.深度学习基础模型算法原理及编程实现–09.自编码网络.
10.深度学习基础模型算法原理及编程实现–10.优化方法:从梯度下降到NAdam.
11.深度学习基础模型算法原理及编程实现–11.构建简化版的tensorflow—MiniFlow【实现MLP对MNIST数据分类】.

[TOC]

深度学习基础模型算法原理及编程实现–10.优化方法:从梯度下降到NAdam

优化算法的出现顺序从前往后依次为:SGD、SGDM、NAG、AdaGrad、AdaDelta、Adam、Nadam,这些优化算法的演变其实都来自一个模型,其演化路径如下图所示:
这里写图片描述
这里写图片描述

1 一阶优化方法(梯度下降)

这里写图片描述

1.1 Jacobi矩阵的性质

Jacobi矩阵给出了优化问题中当前点的最优线性逼近。需要注意的是许多神经网络的jacobi矩阵总是秩亏损的,这导致反向传播算法仅仅得到搜寻方向上的部分信息,从而导致训练时间过长。比如,如果jacobi矩阵是diag([1,0,1,0,0,1,0,1]),那么仅在对角线值元素值为1的维度所对应的参数有更新,对角线元素值为0的维度更新为0。

1.2 Gradient Descent

这里写图片描述

1.3 Noisy gradient descent

这里写图片描述

1.4 Vanilla SGD

这里写图片描述

1.5 SGD with Momentum(缩写SGDM)

这里写图片描述

1.6 NAG(Nesterov Accelerated Gradient)

这里写图片描述

2 学习率退火

如果学习率过高,参数更新量过大,参数就会无规律地跳动,不能够稳定到损失函数更深更窄的凹点中去。如果慢慢减小它,可能在前期的很长时间内看参数无规律的跳动。如果快速减小它,参数更新量可能下降过快,使得学习速度变慢甚至趋于0。常用的学习率退火有3种方式:

2.1 随步数衰减

特定周期个数后就降低学习率。比如每过5或10个周期就将学习率减少一半或更多。或者用固定的学习率来进行训练,每当验证集错误率停止下降,就以一定的系数来降低学习率。

2.2 指数衰减

这里写图片描述

2.3 1/t衰减

这里写图片描述

3 二阶优化方法(牛顿法,又是一阶求跟方法)

一阶方法只使用梯度和函数评估去优化目标。二阶方法比如牛顿方法或者逆牛顿方法使用海塞矩阵或近似。尽管这为优化提供了额外的曲率信息,但精确计算二阶信息还是比较困难的。

3.1 牛顿法原理

3.1.1 牛顿法是一阶求跟方法

这里写图片描述

3.1.2 牛顿法是二阶优化方法

3.1.2.1 二阶泰勒分解求解

这里写图片描述

3.1.2.2 用求f’(x)=0根的方法来求解

这里写图片描述

3.1.3 海塞矩阵的性质

从式(1.9)可以发现,由于Hessian矩阵描述了损失函数的局部曲率,通过乘以Hessian矩阵的逆矩阵,可以在曲率小的时候大步前进,在曲率大的时候小步前进,从而使得参数更高效的更新。
此外,导数为0的点称为稳定点(Stationary points)。稳定点可以是(局部)最小值、(局部)最大值及鞍点。可通过计算Hessian矩阵H来进行判别:
(1)非退化的情况
 若H负定(所有特征值都是负的),这是(局部)最大值.
 若H正定(所有特征值都是正的),这是(局部)最小值.
 若H特征值既有正的,又有负的,那该点是鞍点。(有些方向函数值上升,有些方向函数值下降)。
种非退化的情况下面,我们考虑一个重要的类别,即strict saddle函数.这种函数有这样的特点:对于每个点x
要么x的导数比较大
要么x的Hessian矩阵包含一个负的特征值
要么x已经离某一个(局部)最小值很近了
为什么我们要x满足这三个情况的至少一个呢?因为
(2)退化的情况
 H特征值含0的情况。此时无法判断稳定点的类别,需参照更高维的导数。

3.1.4 海塞矩阵近似计算

3.1.4.1 对角线近似逆矩阵

这里写图片描述

3.1.4.2 Adadelta中的近似方法
3.1.4.2.1 时间加权

这里写图片描述

3.1.4.2.2 利用二阶优化方法的量纲是正确的

这里写图片描述

3.1.4.2.3 近似Hessian方法

这里写图片描述

3.2 AdaGrad

这里写图片描述

3.3 RMSProp

这里写图片描述

3.4 AdaDelta

这里写图片描述

3.5 Adam

这里写图片描述

3.6 Adamax

3.7 Nadam

4 不同优化方法结果比对

4.1 GD

eta1 = 0.1
step: 100 loss: 0.0044979134602375365
这里写图片描述

4.2 Vanilla SGD

eta1 = 0.1
step: 400 loss: 0.001108528235755615
这里写图片描述

4.3 Mini_batch SGD

eta1 = 0.1
step: 500 loss: 0.0062751857700584805
这里写图片描述

4.4 SGDM

eta1 = 0.1
beta1 = 1 - eta1
step: 400 loss: 0.005477318943045696
这里写图片描述

4.5 NAG

alpha = 0.05 #Nestreov项一步向前学习率
eta1 = 0.1
beta1 = 1 - eta1
step: 500 loss: 0.0027062579259504315
这里写图片描述

4.6 Adagrad

eta1 = 0.1
step: 2600 loss: 26.2471475715
这里写图片描述

4.7 RMSProp

eta1 = 0.1
eta2 = 0.1
beta2 = 1 - eta2
step: 500 loss: 0.00855535079012
这里写图片描述

4.8 Adadelta

eta1 = 0.1
beta1 = 1 - eta1
eta2 = 0.1
beta2 = 1 - eta2
step: 100 loss: 0.0170838268612
这里写图片描述

4.9 Adam

eta1 = 0.1
beta1 = 1 - eta1
eta2 = 0.1
beta2 = 1 - eta2
step: 100 loss: 0.0170408324886
这里写图片描述

5 编程实现

python版本:https://pan.baidu.com/s/1qZLJ7Gg

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习基础模型算法原理及编程实现--10.优化方法:从梯度下降到NAdam 的相关文章

  • 一遍看懂面试算法——二叉树

    目录 二叉树的种类 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 二叉树的存储方式 二叉树的遍历方式 二叉树的递归遍历 二叉树的迭代遍历 前序遍历 迭代法 中序遍历 迭代法 后序遍历 迭代法 总结 二叉树的统一迭代法 二叉树层序遍历 以

随机推荐

  • 一文讲解thop库计算FLOPs问题

    问题 计算模型的FLOPs及参数大小 FLOPS是处理器性能的衡量指标 是 每秒所执行的浮点运算次数 的缩写 FLOPs是算法复杂度的衡量指标 是 浮点运算次数 的缩写 s代表的是复数 一般使用thop库来计算 GitHub https g
  • git pull 出错 remote: The project you were looking for could not be found.

    git pull 出错 git pull remote The project you were looking for could not be found fatal repository http 192 168 1 xx xx00
  • TigerGraph图形化界面GraphStudio简单操作

    创建图模型 图模型由若干节点类型 vertex type 和若干边类型 edge type 组成 可以指定边类型的源节点类型 source vertex type 和目标节点类型 target vertex type 图模型是对现实世界的问
  • SDI科普--- SD-SDI/HD-SDI/3G-SDI/12G-SDI

    SDI 数字分量串行接口 HD SDI 高清数字分量串行接口 1 SDI接口分类 高速率可往下兼容 2 SDI各类标准数据 3 概述 1 SD SDI SD SDI 270Mbp SMPTE259M 2 HD SDI 高清数字分量串行接口
  • less样式变量设置透明度、饱和度

    不透明度 background fade blue 20 饱和度 background lighten blue 20
  • JavaScript(null, undefined 和布尔值)

    JavaScript null 和 undefined 概述 用法和含义 布尔值 null 和 undefined 概述 null与undefined都可以表示 没有 含义非常相似 将一个变量赋值为undefined或null 老实说 语法
  • 如何用手机快速精准定位、查看当前详细位置信息

    下载链接 https pan baidu com s 1eu6m8D2tQKs0XyZnzVg79w 提取码 ivu7
  • Chatgpt帮我写程序切分Midjourney生成的图片

    背景 非程序员 只懂VBA 其他语言一概没入门 这两天在尝试MJ在抖音上做图文的玩法 遇到一个问题 如何将MJ生成的一张4宫格图片切分成4张单独的图片 找了一圈 要是用图片处理软件 那太麻烦了 忽然想到chatgpt可以写程序 于是我向ch
  • 瑞芯微迅为iTOP-3399开发板资料更新最新版本为1.3版本

    迅为3399开发板 1 Android底层驱动移植篇新增基于RTL8822CS模块Android7移植WiFi2 Android底层驱动移植篇新增基于RTL8822CS模块Android7移植蓝牙 lt lt lt lt lt lt lt
  • having关键字和where关键字区别

    select语句的基本格式 select 字段列表 from 表 where 表达式 group by 字段 having 表达式 order by 字段 having关键字和where关键字区别 相同点 都是用来过滤数据 不同点 havi
  • 熵在机器学习中的应用

    1 信息量 首先是信息量 假设我们听到了两件事 分别如下 事件A 巴西队进入了2018世界杯决赛圈 事件B 中国队进入了2018世界杯决赛圈 仅凭直觉来说 显而易见事件B的信息量比事件A的信息量要大 究其原因 是因为事件A发生的概率很大 事
  • Unity拓展——Project窗口拓展

    Unity拓展 Project窗口拓展 1 鼠标右键单击面板 Project面板是用来存放整个工程文件信息的 这个窗口也是可以进行用户自定义拓展的 我们单击Project窗口空白的地方 就会弹出一个面板如下 我们再看看Unity菜单栏 打开
  • 基于教学优化算法(TLBO)求解TSP问题 (Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 目录 1 概述 2 运行结果
  • [ 靶场环境篇 ] XSS-labs 靶场环境搭建(特别详细)

    博主介绍 博主介绍 大家好 我是 PowerShell 很高兴认识大家 主攻领域 渗透领域 数据通信 通讯安全 web安全 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 文末有彩蛋 作者水平有限 欢
  • vscode中文注释显示成乱码

    在Ubuntu中用vscode打开代码后发现中文部分出现乱码 搜索了一下方才找到简洁的解决办法 具体如下 1 打开vscode 打开带有中文注释的代码 可以看到中文注释部分为乱码 2 按住ctrl p键 在查找选项框中输入下列的命令 则有下
  • MySQL日志设置及查看

    MySQL有以下几种日志 错误日志 log err 查询日志 log 慢查询日志 log slow queries 更新日志 log update 二进制日志 log bin 默认情况下 所有日志创建于mysqld数据目录中 通过刷新日志
  • 【POJ 2406】 Strings

    Strings Time Limit 3000MS Memory Limit 65536K Total Submissions 35168 Accepted 14543 Description Given two strings a and
  • hosts文件为空白或删除情况修复

    直接输入修改即可 ip baiTab 空格 域名 回车 即可 du如果不放心 复制以下内容zhi修复hosts文件 再修dao改hosts文件 Copyright 1993 1999 Microsoft Corp This is a sam
  • 嵌入式面试题及答案

    我们在找嵌入式方面的工作时 最让我们头疼的恐怕就是技术类的面试题了 因为我们摸不到企业的命题规律 也不知道该怎样去准备 今天华清远见的高级嵌入式讲师将各大企业的面试题进行汇总 分享给大家 希望可以帮到各位小伙伴 下方附有答案哦 一 选择题
  • 深度学习基础模型算法原理及编程实现--10.优化方法:从梯度下降到NAdam

    文章列表 1 深度学习基础模型算法原理及编程实现 01 感知机 2 深度学习基础模型算法原理及编程实现 02 线性单元 3 深度学习基础模型算法原理及编程实现 03 全链接 4 深度学习基础模型算法原理及编程实现 04 改进神经网络的方法