【机器学习】随机梯度下降算法以及优化

news2024/11/14 13:38:10

一、概述:

什么是梯度下降?

梯度下降法的基本思想可以类比为一个下山的过程。 假设这样一个场景:一个人被困在山上,需要从山上下来(i.e.找到山的最低点,也就是山谷)。但此时山上 的浓雾很大,导致可视度很低。因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的 路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。具体来说就是,以他当前的所处的位置为 基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,(同理,如果我们的目标是上山, 也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走)。然后每走一段距离,都反复采用同一个方 法,最后就能成功的抵达山谷。

梯度的概念:

梯度是微积分中一个很重要的概念 在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向 这也就说明了为什么我们需要千方百计的求取梯度!我们需要到达山底,就需要在每一步观测到此时最陡 峭的地方,梯度就恰巧告诉了我们这个方向。梯度的方向是函数在给定点上升最快的方向,那么梯度的反 方向就是函数在给定点下降最快的方向,这正是我们所需要的。所以我们只要沿着梯度的反方向一直走, 就能走到局部的最低点。

梯度下降法中注意的点:

α-也就是步长

步长太小,下降太慢

步长太大,容易跳过极小值点

为什么梯度要加负号?

梯度方向是上升最快的方向,负号是下降最快的方向。

迭代次数和停止条件:

  • 需要设置合适的迭代次数和停止条件,避免过度拟合或欠拟合。

  • 停止条件可以设置为达到预设的迭代次数,或者当两次迭代之间的差值小于某个预设的阈值时停止。

初值的选择: 梯度下降法的初值选择会影响最终的结果。 在实际应用中,可以尝试不同的初值来观察结果的差异。

二、常见的梯度下降算法:

1. 全梯度下降算法(FG)

计算训练集所有样本的误差,并对其求和取平均值作为目标函数,然后沿着目标函数的负梯度方向更新参数

通过迭代的方式,不断调整模型参数,使得损失函数的值逐渐减小,从而得到最优解。

权重向量沿其梯度相反的方向移动,从而使当前目标函数减少得最多。

因为在执行每次更新时,我们需要在整个数据集上计算所有的梯度,所以全梯度下降法的速度会很慢,同时,全梯度下降法无法处理超出内存容量限制的数据集。

全梯度下降法同样也不能在线更新模型,即在运行的过程中,不能增加新的样本

其是在整个训练数据集上计算损失函数关于参数θ的梯度:

2. 随机梯度下降算法(SGD)

由于FG每迭代更新一次权重都需要计算所有样本误差,而实际问题中经常有上亿的训练样本,故效率偏低,且容易陷入局部最优解,因此提出了随机梯度下降算法。

随机梯度下降算法在每次迭代中,从训练集中随机选择一个样本来计算梯度,并据此更新模型参数。

其每轮计算的目标函数不再是全体样本误差,而仅是单个样本误差,即每次只代入计算一个样本目标函数的梯度来更新权重,再取下一个样本重复此过程,直到损失函数值停止下降或损失函数值小于某个可以容忍的阈值。

SGD特点:

计算效率高:由于每次迭代只使用一个样本,SGD的计算成本较低,可以处理大规模数据集。

收敛速度快:虽然SGD的收敛过程可能较为震荡,但由于其快速迭代的特点,通常能够在较短时间内达到一个较好的解。

对噪声敏感:由于每次迭代只使用一个样本,SGD对噪声和异常值较为敏感。 可能收敛到局部最优解:与全梯度下降算法相比,SGD更有可能收敛到局部最优解而非全局最优解。

3. 小批量梯度下降算法(Mini-batch Gradient Descent)

是介于全梯度下降算法和随机梯度下降算法之间的一种优化算法,常用于深度学习和其他大规模机器学习问题的训练过程中。,在一定程度上兼顾了以上两种方法的优点。

小批量梯度下降算法在每次迭代中,从训练集中随机选择一小批(mini-batch)样本来计算梯度,并据此更新模型参数。

被抽出的小样本集所含样本点的个数称为batch_size,通常设置为2的幂次方,更有利于GPU加速处理。

特别的,若batch_size=1,则变成了SG;若batch_size=n,则变成了FG.其迭代形式为:

4.随机平均梯度下降算法(SAG)

在SG方法中,虽然避开了运算成本大的问题,但对于大数据训练而言,SG效果常不尽如人意,因为每一轮梯度更新都完全与上一轮的数据和梯度无关。

随机平均梯度算法克服了这个问题,在内存中为每一个样本都维护一个旧的梯度,随机选择第i个样本来更新此样本的梯度,其他样本的梯度保持不变,然后求得所有梯度的平均值,进而更新了参数。

通过随机选择样本来更新梯度和模型参数,但与传统SGD不同的是,SAG利用了数据的重复利用,在每次迭代中都会更新所有样本的梯度,并使用这些梯度的平均值来更新模型参数。这样可以减小每次更新的方差,提高算法的稳定性,收敛速度也比SGD快。

5.算法比较

为了比对四种基本梯度下降算法的性能,我们通过一个逻辑二分类实验来说明。 数据集共有15081条记录,包括“性别”“年龄”“受教育情况”“每周工作时常”等14个特征,数据标记列显示“年薪是否大于50000美元”。我们将数据集的80%作为训练集,剩下的20%作为测试集,使用逻辑回归建立预测模型,根据数据点的14个特征预测其数据标记(收入情况)。

以下6幅图反映了模型优化过程中四种梯度算法的性能差异。

在图1和图2中,横坐标代表有效迭代次数,纵坐标代表平均损失函数值。图1反映了前25次有效迭代过程中平均损失函数值的变化情况,为了便于观察,图2放大了第10次到25次的迭代情况。

从图1中可以看到,四种梯度算法下,平均损失函数值随迭代次数的增加而减少FG的迭代效率始终领先,能在较少的迭代次数下取得较低的平均损失函数值。FG与SAG的图像较平滑,这是因为这两种算法在进行梯度更新时都结合了之前的梯度;SG与mini-batch的图像曲折明显,这是因为这两种算法在每轮更新梯度时都随机抽取一个或若干样本进行计算,并没有考虑到之前的梯度。

从图2中可以看到虽然四条折现的纵坐标虽然都趋近于0,但SG和FG较早,mini-batch最晚。这说明如果想使用mini-batch获得最优参数,必须对其进行较其他三种梯度算法更多频次的迭代。

在图3,4,5,6中,横坐标表示时间,纵坐标表示平均损失函数值。

从图3中可以看出使用四种算法将平均损失函数值从0.7降到0.1最多只需要2.5s,由于本文程序在初始化梯度时将梯度设为了零,故前期的优化效果格外明显。其中SG在前期的表现最好,仅1.75s便将损失函值降到了0.1,虽然SG无法像FG那样达到线性收敛,但在处理大规模机器学习问题时,为了节约时间成本和存储成本,可在训练的一开始先使用SG,后期考虑到收敛性和精度可改用其他算法。

从图4,5,6可以看出,随着平均损失函数值的不断减小,SG的性能逐渐反超FG,FG的优化效率最慢,即达到相同平均损失函数值时FG所需要的时间最久。

综合分析六幅图我们得出以下结论:

(1)FG方法由于它每轮更新都要使用全体数据集,故花费的时间成本最多,内存存储最大。

(2)SAG在训练初期表现不佳,优化速度较慢。这是因为我们常将初始梯度设为0,而SAG每轮梯度更新都结合了上一轮梯度值。

(3)综合考虑迭代次数和运行时间,SG(随机梯度下降,也叫SGD)表现性能都很好,能在训练初期快速摆脱初始梯度值,快速将平均损失函数降到很低。但要注意,在使用SG方法时要慎重选择步长,否则容易错过最优解。

(4)mini-batch结合了SG的“胆大”和FG的“心细”,从6幅图像来看,它的表现也正好居于SG和FG二者之间。在目前的机器学习领域,mini-batch是使用最多的梯度下降算法,正是因为它避开了FG运算效率低成本大和SG收敛效果不稳定的缺点。

三、梯度下降优化算法

以下这些算法主要用于深度学习优化

1.动量法

动量法(Momentum Method)是对传统梯度下降算法的一种改进,旨在解决梯度下降算法中收敛速度慢和容易陷入局部最优解的问题。动量法通过引入一个动量项来加速优化过程,并减少震荡现象。


(v(t) = \beta v(t-1) + (1-\beta) \nabla L(w(t)))

(v(t)) 表示第 (t) 步迭代时的动量。

(\beta) 是动量因子,通常取值在0.9左右。

(\nabla L(w(t))) 是损失函数 (L) 在当前参数 (w(t)) 下的梯度。

(w(t+1) = w(t) - \eta v(t))

(w(t)) 和 (w(t+1)) 分别表示第 (t) 步和第 (t+1) 步迭代时的参数值。

(\eta) 是学习率,控制每一步迭代的步长。

2.Adam算法

原理:

Adam(自适应矩估计)算法的基本思想是在梯度下降算法的基础上,引入两个动量变量来分别保存梯度的一阶矩估计和二阶矩估计,从而实现对学习率的自适应调整。具体来说,一阶矩估计类似于传统动量法中的动量项,用于加速参数更新;二阶矩估计则类似于RMSProp算法中的梯度平方的平均值,用于调整学习率的大小。

优化步骤:

1.计算梯度:  

     使用训练数据进行前向传播。  

     计算损失函数对模型参数的梯度。

2.更新动量:  

     一阶矩估计(动量项):记录历史梯度的加权平均,用于平滑梯度更新。  

     二阶矩估计(梯度平方的平均值):记录梯度平方的加权平均,用于调整学习率的大小。

3.偏差修正:  

     由于初始时动量值为0,Adam算法引入偏差修正来避免初期偏差。  

     对一阶矩估计和二阶矩估计进行修正。

4.参数更新:  

     使用修正后的一阶矩估计(动量项)和二阶矩估计(梯度平方的平均值)来更新模型的参数。  

     公式中的学习率、小常数和当前迭代步数等因素共同决定了参数更新的幅度和方向。

Adam优化算法对内存的需求很小,它结合了动量项,有效减少了训练过程中的震荡,并通过计算一阶和二阶矩估计自适应地调整每个参数的学习率。这种灵活性使得Adam能够针对不同参数设置最适合的学习步长,从而提高训练效率和模型性能。因此,Adam算法在各种深度学习任务中都表现出色,成为当今深度学习领域最受欢迎的优化算法之一。

四、总结

全梯度下降算法稳定但计算量大,适用于小数据集;随机梯度下降算法速度快,适用于大数据集但更新不稳定;小批量梯度下降则在这两者间找到了平衡。动量法通过引入动量项加速收敛并减少震荡,而Adam算法则通过自适应调整学习率实现高效计算,是目前广泛应用的优化算法,但其性能对参数选择较为敏感。

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

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

相关文章

全球伦敦金交易时间每天都一样吗?

伦敦金市场是一个全球化的市场,它全天的交易盘面由亚洲、欧洲和北美市场无缝地连接而成,无论来自世界上什么地方的投资者参与其中,都可以得到全天接近24个小时的交易行情,只要有足够的精力,根本不用担心没有交易获利的…

ResNet残差网络的学习【概念+翻译】

基于何明凯前辈论文的学习 1.主要内容(背景) 1、首先提了一个base:神经网络的深度越深,越难以训练。 2、原因:因为随着神经网络层数的增加,通常会遇到梯度消失或梯度爆炸等问题,这会导致训练变…

小预算大效果:揭秘品牌如何用创新方法实现低成本传播

说到品牌,我们都知道,没钱是真的难搞。 品牌建设就像跑马拉松,得慢慢来,持续投入,一点一滴积累声誉,这样才能培养出忠实的粉丝团。 但别急,就算资金紧张,我们也有办法让品牌慢慢站…

for循环绑定id,更新html页面的文字内容

需求&#xff1a;将方法中内容对齐 实现方式 给for循环中每个方法添加一个动态的id在DOM结果渲染完后&#xff0c;更新页面数据&#xff0c;否则会报错&#xff0c;找不到对应节点或对应节点为空 <view v-for"(item, index) in itemList" :key"index"…

Linux学习(十二)-- 用户管理与用户组管理、su与exit命令、sudo命令

目录 1. 用户管理 注&#xff1a; 以下命令需root用户执行 1.1 创建用户 1.2 删除用户 1.3 查看用户所属组 1.4 修改用户所属组 2.用户组管理 注&#xff1a; 以下命令需root用户执行 2.1 创建用户组 2.2 删除用户组 拓展&#xff1a; 3. su命令与exit命令 4. sudo…

计算机网路概述

目录 计算机网络的概念 计算机网络的定义&#xff1a; 计算机网络的组成&#xff1a; 终端系统/资源子网 通信子网 计算机网络的类型 按照拓扑分类​编辑 按照范国分类&#xff1a; 按传输方式进行分类 计算机网络体系结构 传输方式 按照传输方向区分 按照传输对象…

移动应用平台—WorkPlus企业级移动应用平台解决方案

在当今数字化和移动化的时代&#xff0c;企业需要一个强大的、灵活性高的企业级移动应用平台来连接员工、提高工作效率和创新能力。企业级移动应用平台是一种专门为企业构建和管理移动应用的解决方案&#xff0c;为企业提供了强大的功能和高度可定制的移动应用开发工具。 一、…

USB外设管理软件是什么?有哪些特别好用的USB管理软件

USB外设管理软件是什么&#xff1f;有哪些特别好用的USB管理软件 USB外设管理软件是一种专门用于监控和管理计算机上连接的USB设备的软件工具。这类软件通常提供多种功能&#xff0c;以便用户或管理员能够更好地控制和管理USB设备&#xff0c;从而提高计算机系统的安全性和工作…

HubSpot企业商机管理和销售自动化:提升业务效率的利器

在当今数字化时代&#xff0c;企业出海已成为拓展市场、增加营收的重要途径。然而&#xff0c;如何高效地管理商机和实现销售自动化&#xff0c;成为许多企业面临的挑战。HubSpot作为一款强大的营销、销售和服务自动化平台&#xff0c;为企业提供了全方位的解决方案。今天运营坛…

【数据结构】图解红黑树以及代码实现

目录 一、相关概念 性质 二、图解 1、插入操作 2、parent在左边情况1&#xff1a;cur为红色节点parent也是红色节点、uncle也为红色节点 3、parent在左边情况2&#xff1a;cur为红色节点parent也是红色节点、uncle为黑色或者是空&#xff0c;cur是parent的left 4、parent…

边缘计算网关的市场价格趋势-天拓四方

在数字化转型的大潮中&#xff0c;边缘计算网关作为连接云端与终端设备的核心节点&#xff0c;其重要性日益凸显。然而&#xff0c;面对市场上琳琅满目的边缘计算网关产品&#xff0c;对于许多企业和个人用户来说&#xff0c;边缘计算网关的价格成为选择产品时的重要考量因素。…

wordpress主题 ACG美化插件v3.4.2支持zibll主题7b2主题美化

独具一格的二次元风格&#xff0c;打造全新的子比美化方向 大部分代码均为CSS、JS做成插件只是为了方便懒人小白站长 后台全功能一览&#xff0c;大部分美化均为网上通用流传&#xff0c;

数据集006:中药材识别数据集(含数据集下载链接)

数据集简介&#xff1a; 中药材共5类 900张图片 分别是百合 枸杞 党参 槐花 金银花 部分代码&#xff1a; def get_data_list(target_path,train_list_path,eval_list_path):生成数据列表#存放所有类别的信息class_detail []#获取所有类别保存的文件夹名称data_list_pat…

磁盘管理以及文件系统08

1、为什么要对磁盘进行分区&#xff1f; 业务层面&#xff1a;为满足一定的需求所是做的特定操作。 2、硬盘是什么&#xff0c;以及硬盘的作用 硬盘&#xff1a;计算机的存储设备&#xff0c;一个或者多个带磁性的盘组成的&#xff0c;可以在盘片上进行数据的读写。硬盘的最…

全方位质量保障!龙蜥在内核、软件包、容器镜像、三方模块的 CI 工程实践

编者按&#xff1a;在海量的代码测试和构建中&#xff0c; CI(Continuous Integration)在代码提交阶段&#xff0c;对提高软件质量和开发效率起到了至关重要的作用。2023 龙蜥操作系统大会全面繁荣开发者生态分论坛上&#xff0c;龙蜥社区 QA SIG Maintainer、联通数科 CUlinux…

【UE5.4】猫猫都能看懂的Android打包新版攻略

开发未动&#xff0c;兼容先行&#xff01; 亲妈级攻略&#xff0c;一步一截图&#xff01; 铲除一切奇怪的报错&#xff01; 引言 最近在入坑Unreal Engine&#xff0c;在尝试进行Android打包时遇到了巨大的困难&#xff1b;不管怎么打包都是奇怪的Unknown Error报错&#…

MacBook Air M3游戏无法安装怎么办 MacBook Air可以玩3A游戏吗

在数字化迅速发展的今天&#xff0c;MacBook Air M3凭借其轻薄便携和强大的处理能力&#xff0c;成为了许多消费者的首选MacBook Air M3能够满足日常的工作和学习需求&#xff0c;然而&#xff0c;用户尝试在MacBook Air M3上安装和运行游戏时&#xff0c;经常遇到一些困难&…

如何免费把微信视频号的视频下载下来?电脑手机都可使用

今天&#xff0c;我将为大家分享一个实用的技巧&#xff1a;如何免费将微信视频号的视频下载下来。 微信视频号作为一个流行的短视频平台&#xff0c;拥有大量优质内容。然而&#xff0c;由于平台政策限制&#xff0c;我们无法直接下载视频。不过&#xff0c;别担心&#xff0…

nvm安装教程及使用nvm管理多个node版本

文章目录 前言一、nvm 安装教程温馨提示macOS/LinuxWindows 二、安装 node 前言 工作中&#xff0c;你可能会遇到以下场景&#xff1a; 我想使用 pnpm 命令安装依赖&#xff0c;但是在使用 pnpm 命令时提示如下 $ pnpm -v ERROR: This version of pnpm requires at least No…

满帮集团 Eureka 和 ZooKeeper 的上云实践

作者&#xff1a;胡安祥 满帮集团&#xff0c;作为“互联网物流”的平台型企业&#xff0c;一端承接托运人运货需求&#xff0c;另一端对接货车司机&#xff0c;提升货运物流效率。2021 年美股上市&#xff0c;成为数字货运平台上市第一股。根据公司年报&#xff0c;2021 年&a…