关于随机梯度下降算法及其改进方向

news2024/10/3 2:16:33

回归与分类等监督学习是机器学习中最常见的一类学习问题, 它提供了包含输入数据和目标数据的训练数据集。为了探讨输入与目标之间的关系,需要先建立含参数的表示模型,再通过最小化所有样本的平均损失函数来获得最优的参数, 此处的优化模型通常为经验风险最小化ERM。梯度下降法是求解ERM模型最常用的方法,也是二阶方法和黎曼优化的重要基础。

传统的梯度下降法在计算目标函数的梯度时, 需计算每个样本对应的梯度, 总计算复杂度线性地依赖于样本数目。随着数据规模的日益增大, 求解所有样本的梯度需要相当大的计算量, 因而传统的梯度下降算法在解决大规模机器学习问题时往往不再奏效。

随机梯度下降算法SGD源于1951年Robbins 和Monro提出的随机逼近, 最初应用于模式识别和神经网络。这种方法在迭代过程中随机选择一个或几个样本的梯度来替代总体梯度, 从而大大降低了计算复杂度。1958 年Rosenblatt研制出的感知机采用了随机梯度下降法的思想, 即每轮随机选取一个误分类样本, 求其对应损失函数的梯度, 再基于给定的步长更新参数。1986年Rumelhart 等分析了多层神经网络的误差反向传播算法, 该算法每次按顺序或随机选取一个样本来更新参数, 它实际上是小批量梯度下降法的一个特例。近年来, 随着深度学习的迅速兴起, 随机梯度下降算法已成为求解大规模机器学习优化问题的一类主流且非常有效的方法。目前, 随机梯度下降算法除了求解逻辑回归、岭回归、Lasso、支持向量机和神经网络等传统的监督机器学习任务外, 还成功地应用于深度神经网络、主成分分析、奇异值分解、典型相关分析、矩阵分解与补全、分组最小角回归、稀疏学习和编码、相位恢复以及条件随机场等其他机器学习任务。

随着大数据的不断普及和对优化算法的深入研究, 衍生出随机梯度下降算法的许多不同版本。这些改进算法在传统的随机梯度下降算法的基础上引入了许多新思想, 从多个方面不同程度地提升了算法性能。搜索方向的选取和步长的确定是梯度下降算法研究的核心,按照搜索方向和步长选取的方式不同, 将随机梯度下降算法的改进策略大致分为动量、方差缩减、增量梯度和自适应学习率等四种类型。其中, 前三类方法主要是校正梯度或搜索方向,适用于逻辑回归、岭回归等凸优化问题; 第四类方法针对参数变量的不同分量自适应地设置步长, 适用于深度神经网络等非凸优化问题。在传统梯度下降算法的基础上添加动量项可以有效避免振荡, 加速逼近最优解. 采用动量更新策略的方法主要包括经典动量算法和Nesterov 加速梯度算法。简单版本的随机梯度下降算法在随机取样的过程中产生了方差并且随着迭代次数的增加而不断累加, 无法保证达到线性收敛。为此研究者们相继提出了一系列基于方差缩减的随机梯度下降算法, 主要包括随机方差缩减梯度算法、近端随机方差缩减梯度算法、Katyusha和MiG等。

随机梯度下降算法如何进一步改进

1) 与二阶算法相比, 随机梯度下降算法的收敛速度相对较慢, 且需要更多的迭代次数。第2代和第3代改进算法虽然有效地提升了收敛速度, 但耗费了较大的时间成本和内存成本。随着数据规模的扩大和模型复杂度的提升, 单线程下的随机梯度下降算法已经不能满足大规模机器学习应用的需求。并行式随机梯度下降算法SimuParallelSGD适合于大规模学习范式和MapReduce 框架;Hogwild 算法对稀疏数据采用无锁异步更新策略, 从而有效地减少了特征更新时的冲突。目前, 研究者们已经实现了SVRG、SAGA 和MiG等改进算法的分布式和并行化版本, 但收敛速度却有待进一步提升。如何根据算法特点、数据对象和应用平台,设计并实现不同改进策略下的随机梯度下降算法的分布式与并行化版本, 使其在实际应用中发挥出较高的性能水平, 这是未来值得探索的问题。

2)随机梯度下降算法在每轮迭代过程中计算复杂度较低, 但只利用了一阶梯度, 忽略了目标函数的二阶信息及曲率, 从而限制了实际性能和收敛速度。如何结合一阶与二阶方法各自的长处,进一步设计迭代效率俱佳的随机梯度下降算法,是未来值得研究的问题。

3) 近年来, 研究者们将目光投向非凸的ERM模型, 并且提出了一些行之有效的解决方案, 其中具有代表性的策略包括添加动量跳出局部最优解、使用方差缩技术减少梯度方差和添加梯度噪声逃离鞍点等。然而, 对于更为一般的非凸、非光滑的优化问题却并未取得太大的突破, 目前仅有Prox-SAGA、Prox-SVRG+等算法, 但性能并不理想。随机梯度下降算法在非凸、非光滑条件下的策略研究, 不仅是当前面临的困局, 也是未来最具有应用价值的研究方向。

4) 对于非凸的优化问题, 梯度下降法通常存在两个缺陷: 易于陷入局部最优、无法逃离鞍点。而演化计算/智能计算无需计算梯度和确定步长, 且往往具有较好的全局收敛性。如何将随机梯度下降算法与演化计算/智能计算方法相结合, 将是一个非常值得关注的研究方向。

 

 

知乎咨询:哥廷根数学学派

擅长现代信号处理(改进小波分析系列,改进变分模态分解,改进经验小波变换,改进辛几何模态分解等等),改进机器学习,改进深度学习,机械故障诊断,改进时间序列分析(金融信号,心电信号,振动信号等)

算法代码地址,浏览器打开:mbd.pub/o/GeBENHAGEN

 

 

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

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

相关文章

【SpringMVC】统一异常处理 前后台协议联调 拦截器

1,统一异常处理 1. 问题描述 在讲解这一部分知识点之前,我们先来演示个效果,修改BookController类的getById方法 GetMapping("/{id}") public Result getById(PathVariable Integer id) {//手动添加一个错误信息if(id1){int i …

那些曾经考过的turtle绘图题(16~20)

【编程实现绘图 -16】 使用turtle绘制如右图1中所示的图形。 上边是一个红色轮廓、黄色填充的边长为300的等边三角形,下边是一个绿色填充、半径为150的半圆。 要求: 1)画布背景为白色,等边三角形为红色轮廓、黄色填充; 2)半圆为绿色填充、且与等边三角形在底边的中点处相…

OpenCV——总结《车牌识别》之《常用的函数介绍》

1. cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))element cv2.getStructuringElement(shape, ksize[, anchor])用于创建形态学操作的结构元素(structuring element)。 参数解释: shape:结构元素的形状,可以…

k近邻算法

文章目录 一、K近邻算法(K Nearest Neighbor algorithm, KNN)1.概念2.流程3.问题——不能用来图像分类1)图像分类2)为什么不能用来图像分类3)数据库样例:CIFAR-10 二、HEU的K近邻算法1.概念2.伪代码3.k近邻算法是非线性分类算法4.…

java项目之教学视频点播系统ssm

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的教学视频点播系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&…

SVM支持向量机理解_KKT条件_拉格朗日对偶_SMO算法代码

目录 一、支持向量机基本型(线性可分) 1.1 问题描述 1.2 参考资料 二、KKT条件 2.1 KKT条件的几个部分 2.1.1 原始条件 2.1.2 梯度条件 2.1.3 松弛互补条件 2.1.4 KKT条件小结 2.2 参考资料 三、对偶形式 3.1 由原始问题到对偶问题 3.2 对偶…

ubuntu双系统安装

1. 下载系统 国内镜像 http://mirrors.ustc.edu.cn/ubuntu-releases/2. U盘启动盘 Rufus 软件 制作U盘启动盘 Rufus 链接 https://rufus.en.softonic.com/3. 磁盘中准备一定未分配磁盘 我准备了100G 4. BIOS启动项选择为usb启动(每个品牌进BIOS不同&#xff0…

win下 Nginx.conf 路径配置注意事项(win)

win下 Nginx.conf 路径配置注意事项 文章目录 可使用win绝对路径路径不能包含中文路径不能包含空格路径中的"\n"会被识别成换行贴一段正确配置的Nginx.conf代码 可使用win绝对路径 网上有种说法是win下Nginx不能设置绝对路径,但我在Nginx-1.24.0下是设置…

在Windows11中安装WSL2(Ubuntu20.04)并配置Anaconda环境

在Windows11中安装WSL2(Ubuntu20.04)并配置Anaconda环境 文章目录 在Windows11中安装WSL2(Ubuntu20.04)并配置Anaconda环境说在前面1. 检查开启CPU虚拟化和虚拟机平台2. 安装Ubuntu20.043. Vscode连接WSL2(Ubuntu20.04)4. Anaconda开发环境的搭建5. Vscode 访问 notebook结尾 说…

高效视觉识别的动态感知器

文章目录 Dynamic Perceiver for Efficient Visual Recognition摘要本文方法实验结果 Dynamic Perceiver for Efficient Visual Recognition 摘要 Early exiting已成为提高深度网络推理效率的一种很有前途的方法。通过构建具有多个分类器(出口)的模型,可以在较早的…

佩戴舒适的蓝牙耳机有哪些?公认佩戴舒适性不错的蓝牙耳机推荐

​都2023年了,不会还有人没有一款蓝牙耳机吧?随着蓝牙耳机的增长,越来越多人不知道如何挑选蓝牙耳机了,蓝牙耳机除了音质表现要好之外,还有就是佩戴舒适性不能差,防水性能要有,接下来&#xff0…

WPF 的几种模板概念

WPF中有三大模板ControlTemplate,ItemsPanelTemplate,DataTemplate.其中ControlTemplate和ItemsPanelTemplate是控件模板,DataTemplate是数据模板,他们都派生自FrameworkTemplate抽象类。 看看如下继承图: ControlTemplate <Style TargetType="Button">&…

MiniGPT-4 模型学习与实战

1 前言 MiniGPT-4 是一个冻结的视觉编码器(Q-Former&ViT)与一个冻结的 文本生成大模型&#xff08;Vicuna&#xff0c;江湖人称&#xff1a;小羊驼&#xff09; 进行对齐造出来的。 MiniGPT-4 具有许多类似于 GPT-4 的能力, 图像描述生成、从手写草稿创建网站等MiniGPT-4…

bitbucket 配置 SSH keys

目录 问题 配置方法 生成SSH key 添加SSH key至SSH Agent 添加公钥至Bitbucket 执行Git clone 问题 拉取bitbucket上的代码需要配置SSH key Configure SSH and two-step verification | Bitbucket Cloud | Atlassian Support 以Linux为例&#xff1a; Set up persona…

WebSocket 的介绍及基本使用

websocket 什么是 websocket ? https://websocket.org/ 是一种网络通信协议&#xff0c;和 HTTP 协议 一样。 为什么需要websocket ? 因为 HTTP 协议有一个缺陷&#xff1a;通信只能由客户端发起。 了解 websocket api含义 基于原生的 websocket 完成服务端和客户端的通…

使用指针突破类的private限制

使用指针突破类的private限制 继承的内存模型使用指针再子类中访问父类的私有变量 继承的内存模型 创建派生类对象时只会申请一次内存&#xff0c;派生类对象包含了基类对象的内存空间&#xff0c;this指针相同的。创建派生类对象时&#xff0c;先初始化基类对象&#xff0c;再…

Oracle数据库安全评估工具(DBSAT)

目录&#xff1a; 工具概述&#xff1a;先决条件&#xff1a;一、支持的操作系统及DB版本&#xff1a;1.支持的操作系统2.支持的数据库版本 二、评估工具的前提条件&#xff1a;1.所需安装包及工具2.Collector的先决条件3.Reporter的先决条件4.Discoverer的先决条件 工具下载&a…

23vue3铺垫知识——ES6模块化与异步编程高级用法

文章目录 一、ES6模块化1、回顾:nodejs中如何实现模块化2、前端模块化规范的分类3、什么是ES6模块化规范4、在nodeis中体验ES6模块化5、ES6模块化的基本语法5.1 默认导出与默认导入5.2 按需导出与按需导入5.3直接导入并执行模块中的代码 二、Promise1、回调地狱1.1 如何解决回调…

iptables 限制转发

概述 可以通过设置内核参数来启动或停止内核的转发 sysctl -w net.ipv4.ip_forward1当开启了Linux内核转发 cat /proc/sys/net/ipv4/ip_forward开启内核转发后&#xff0c;当Linux主机收到不属于自己IP的数据包时&#xff0c;将会根据主机上配置的路由表进行转发&#xff0c…

kubernetes的二进制安装

二进制搭建 Kubernetes v1.20 k8s集群master01&#xff1a;192.168.232.37 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02&#xff1a;192.168.232.7 k8s集群node01&#xff1a;192.168.232.47 kubelet kube-proxy docker k8s集群node…