神经网络:优化器和全连接层

news2024/9/20 16:51:21

SGD(随机梯度下降)

随机梯度下降的优化算法在科研和工业界是很常用的。

很多理论和工程问题都能转化成对目标函数进行最小化的数学问题。

举个例子:梯度下降(Gradient Descent)就好比一个人想从高山上奔跑到山谷最低点,用最快的方式奔向最低的位置。

SGD的公式:

动量(Momentum)公式:

基本的mini-batch SGD优化算法在深度学习取得很多不错的成绩。然而也存在一些问题需解决:

  1. 选择恰当的初始学习率很困难。
  2. 学习率调整策略受限于预先指定的调整规则。
  3. 相同的学习率被应用于各个参数。
  4. 高度非凸的误差函数的优化过程,如何避免陷入大量的局部次优解或鞍点。

AdaGrad(自适应梯度)

AdaGrad优化算法(Adaptive Gradient,自适应梯度),它能够对每个不同的参数调整不同的学习率,对频繁变化的参数以更小的步长进行更新,而稀疏的参数以更大的步长进行更新。

AdaGrad公式:

g t , i g_{t,i} gt,i 表示t时刻的 θ i \theta_{i} θi 梯度。

G t , i i G_{t,ii} Gt,ii 表示t时刻参数 θ i \theta_{i} θi 的梯度平方和。

与SGD的核心区别在于计算更新步长时,增加了分母:梯度平方累积和的平方根。此项能够累积各个参数 θ i \theta_{i} θi 的历史梯度平方,频繁更新的梯度,则累积的分母逐渐偏大,那么更新的步长相对就会变小,而稀疏的梯度,则导致累积的分母项中对应值比较小,那么更新的步长则相对比较大。

AdaGrad能够自动为不同参数适应不同的学习率(平方根的分母项相当于对学习率α进进行了自动调整,然后再乘以本次梯度),大多数的框架实现采用默认学习率α=0.01即可完成比较好的收敛。

优势: 在数据分布稀疏的场景,能更好利用稀疏梯度的信息,比标准的SGD算法更有效地收敛。

缺点: 主要缺陷来自分母项的对梯度平方不断累积,随时间的增加,分母项越来越大,最终导致学习率收缩到太小无法进行有效更新。

RMSProp

RMSProp结合梯度平方的指数移动平均数来调节学习率的变化。能够在不稳定的目标函数情况下进行很好地收敛。

计算t时刻的梯度:

计算梯度平方的指数移动平均数(Exponential Moving Average), γ \gamma γ 是遗忘因子(或称为指数衰减率),依据经验,默认设置为0.9。

梯度更新的时候,与AdaGrad类似,只是更新的梯度平方的期望(指数移动均值),其中 ε = 1 0 − 8 \varepsilon = 10^{-8} ε=108 ,避免除数为0。默认学习率 α = 0.001 \alpha = 0.001 α=0.001

优势: 能够克服AdaGrad梯度急剧减小的问题,在很多应用中都展示出优秀的学习率自适应能力。尤其在不稳定(Non-Stationary)的目标函数下,比基本的SGD、Momentum、AdaGrad表现更良好。

Adam

Adam优化器结合了AdaGrad和RMSProp两种优化算法的优点。对梯度的一阶矩估计(First Moment Estimation,即梯度的均值)和二阶矩估计(Second Moment Estimation,即梯度的未中心化的方差)进行综合考虑,计算出更新步长。

Adam的优势:

  1. 实现简单,计算高效,对内存需求少。
  2. 参数的更新不受梯度的伸缩变换影响。
  3. 超参数具有很好的解释性,且通常无需调整或仅需很少的微调。
  4. 更新的步长能够被限制在大致的范围内(初始学习率)。
  5. 能自然地实现步长退火过程(自动调整学习率)。
  6. 很适合应用于大规模的数据及参数的场景。
  7. 适用于不稳定目标函数。
  8. 适用于梯度稀疏或梯度存在很大噪声的问题。

Adam的实现原理:

计算t时刻的梯度:

然后计算梯度的指数移动平均数, m 0 m_{0} m0 初始化为0。

类似于Momentum算法,综合考虑之前累积的梯度动量。

β 1 \beta_{1} β1 系数为指数衰减率,控制动量和当前梯度的权重分配,通常取接近于1的值。默认为0.9。

接着,计算梯度平方的指数移动平均数, v 0 v_{0} v0 初始化为0。

β 2 \beta_{2} β2 系数为指数衰减率,控制之前的梯度平方的影响情况。默认为0.999。

类似于RMSProp算法,对梯度平方进行加权均值。

由于 m 0 m_{0} m0 初始化为0,会导致 m t m_{t} mt偏向于0,尤其在训练初期阶段。

所以,此处需要对梯度均值 m t m_{t} mt进行偏差纠正,降低偏差对训练初期的影响。

同时 v 0 v_{0} v0 也要进行偏差纠正:

最后总的公式如下所示:

其中默认学习率 α = 0.001 \alpha = 0.001 α=0.001 ε = 1 0 − 8 \varepsilon = 10^{-8} ε=108 避免除数变为0。

从表达式中可以看出,对更新的步长计算,能够从梯度均值和梯度平方两个角度进行自适应地调节,而不是直接由当前梯度决定。

Adam的不足:

虽然Adam算法目前成为主流的优化算法,不过在很多领域里(如计算机视觉的图像识别、NLP中的机器翻译)的最佳成果仍然是使用带动量(Momentum)的SGD来获取到的。

全连接层的作用

全连接层将卷积学习到的高维特征映射到label空间,可以作为整个网络的分类器模块。

虽然全连接层参数存在冗余的情况,但是在模型进行迁移学习时,其能保持较大的模型capacity。

目前很多模型使用全局平均池化(GAP)取代全连接层以减小模型参数,并且依然能达到SOTA的性能。

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

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

相关文章

提升数据处理技巧:Python正则表达式的高级应用

提升数据处理技巧:Python正则表达式的高级应用 引言:探索正则表达式的高级应用高级匹配技巧使用正则表达式处理复杂数据正则表达式的性能优化正则表达式的局限和替代方案 引言:探索正则表达式的高级应用 在数据驱动的世界里,有效…

机器学习笔记:支持向量机回归SVR

1 主要思想 主要思路类似于机器学习笔记:支持向量机SVM_支撑向量学习-CSDN博客 和SVM的区别主要有 解法和SVM区别不大,也是KKT 2 和线性回归的区别 对SVR,如果f(x)和y之间的差距小于阈值ε【也即落在两条间隔带之间】,则不计算…

华为交换配置OSPF与BFD联动

实验拓扑 组网需求 如图所示,SW1、SW2和SW3之间运行OSPF,SW1和SW2之间的交换机仅作透传功能。现在需要SW1和SW2能够快速感应它们之间的链路状态,当链路SW1-SW2发生故障时,业务能快速切换到备份链路SW1-SW3-SW2上 配置思路 采用…

QT isDirty函数

参考:QSqlTableModel 类 |Qt SQL 6.6.1

LeetCode 19 删除链表的倒数第 N 个结点

题目描述 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1…

Flink cdc3.0同步实例(动态变更表结构、分库分表同步)

文章目录 前言准备flink环境docker构建mysql、doris环境数据准备 通过 FlinkCDC cli 提交任务整库同步同步变更路由变更路由表结构不一致无法同步 结尾 前言 最近Flink CDC 3.0发布, 不仅提供基础的数据同步能力。schema 变更自动同步、整库同步、分库分表等增强功…

开发知识点-HTML/JavaScript

HTML/JavaScript xlinksvgviewBoxuse基础预热与语法基础知识js 如何运行页面适用js 及输出 面向对象抽奖功能 json 支持 字符串转数组数组转字符串数组元素删除长度0位添加一个元素// 表示在下标为1处添加一项tttarray.splice(1,0,ttt)//[123,ttt,456]// 数组是否包含某个元素a…

天猫数据分析(天猫查数据工具):2023年天猫平台假发行业市场销售数据分析报告

如今,由于人们工作和生活的压力较大,居民脱发问题严重,且脱发群体倾向于80后和90后,逐渐向低龄化发展。除脱发外,在颜值经济的背景下,人们越来越注重外貌和形象,假发作为一种改善发型的工具&…

MyBatis——MyBatis的原始Dao开发(了解)

MyBatis的原始Dao开发-了解 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方式和Mapper接口代理开发方式。而现在主流的开发方式是接口代理开发方式,这种方式总体上更加简便。在之前的文章已经给大家介绍了基于代理方式的dao开发&#x…

Javascript 开发html网页读写IC卡源码

本示例使用设备&#xff1a; Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">…

OSPF面试总结

OSPF 基本特点 属于IGP、LS支持无类域间路由没有环路&#xff08;区域内运行LS、区域间是DV,所以所有的区域要和区域0相连&#xff09;收敛速度快使用组播发送数据 224.0.0.5、224.0.0.6 什么时候用224.0.0.5&#xff1f;支持多条等价路由支持协议报文认证 OSPF路由的计算过程…

嵌入式热门发展方向有哪些?

嵌入式热门发展方向有哪些? 由于嵌入式的薪资待遇和发展前景都非常不错&#xff0c;现在越来越多的学生从计算机、电子、通信、自动化等相关专业跨行学习嵌入式技术&#xff0c;并将嵌入式开发作为未来职业发展的方向。 嵌入式系统设计是电子产品设计的重要组成部分&#xff0…

短视频账号矩阵系统3年独立开发正规接口源码搭建部署开发

一、矩阵系统源码主要有三种框架&#xff1a; 短视频账号矩阵源码的框架有很多种&#xff0c;以下列举其中几种&#xff1a; 1. **星图矩阵**&#xff1a;星图矩阵是抖音官方向商家提供的短视频广告推广平台&#xff0c;是抖音官方的赚钱工具。商家可利用星图矩阵进行广告推广…

【疑问】学前端是不是已经找不到工作了?深度回复“前端已死论”。

随着人工智能和低代码的崛起&#xff0c;“前端已死”的声音逐渐兴起。前端已死&#xff1f;尊嘟假嘟&#xff1f;快来发表你的看法吧&#xff01; 文章目录 一、为什么会出现“前端已死”的言论技术发展框架和工具的泛滥市场饱和全栈开发的兴起 二、你如何看待“前端已死”技术…

7.CentOS7修改主机名

Centos7修改主机名 hostnamectl set-hostname test0[roothostname ~]#hostnamectl set-hostname test[roottest ~]# ← 重新登录后显示hostnamectl 或者hostnamectl status 显示当前主机名设置,查询内核版本&#xff0c;操作系统等信息 hostname有三种状态 transient&…

从 ECMAScript 6 角度谈谈执行上下文

大家好&#xff0c;我是归思君 起因是最近了解JS执行上下文的时候&#xff0c;发现很多书籍和资料&#xff0c;包括《JavaScript高级程序设计》、《JavaScript权威指南》和网上的一些博客专栏&#xff0c;都是从 ES3 角度来谈执行上下文&#xff0c;用ES6规范解读的比较少&…

linux 驱动——私有数据

文章目录 linux 驱动中的私有数据container_of驱动程序数据结构定义 应用程序模块使用 linux 驱动中的私有数据 前面的程序中&#xff0c;都只申请了一个从设备号&#xff0c;这里使用 alloc_chrdev_region 分配两个设备号&#xff0c;这两个设备共用 ops 方法。 所以需要在 …

获投1050万欧元!德国量子公司Kipu Quantum成功研发特定压缩算法

​&#xff08;图片来源&#xff1a;网络&#xff09; 近日&#xff0c;德国量子软件公司Kipu Quantum宣布成功完成种子轮融资&#xff0c;融资总额达1050万欧元&#xff08;约合8000万人民币&#xff09;。该初创公司目前已开发出运行高性能量子计算机所需的压缩算法。该算法…

MyBatis-Flex 尝鲜

MyBatis-Flex 官网&#xff1a;官网地址 快速上手&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://maven.apache.org/POM/4.0.0"xsi:…

如何让公司高层理解和支持IPD?从这几个方面进行培训和研讨

前几天&#xff0c;华研荟介绍了基于BLM模型的战略规划研讨会如何开&#xff0c;详细说明了每一个步骤的主要活动、相关表单和注意事项。感兴趣的话可以看我主页的历史文章。 在规划战略的时候&#xff0c;新产品开发一定是一项重要战略之一&#xff0c;那么如何提高开发的效率…