谷歌推出新优化器Lion:优化算法的符号发现

news2024/11/13 9:54:46

文章目录

  • 谷歌推出新优化器Lion:优化算法的符号发现
    • Lion VS AdamW
    • 论文实验
      • 1.图像分类
      • 2.视觉语言对比学习
      • 3.扩散模型
      • 4.语言建模和微调
      • 5.与其他流行优化器的比较
    • 超参数设置
    • 小结

谷歌推出新优化器Lion:优化算法的符号发现

优化器即优化算法,优化器怎么选对模型的好坏起着重要的作用。优化器对梯度进行优化更新,不仅使模型找到最优点,而且能大大提升模型收敛速度。当然不同的优化器找到的最优点可能不同,有可能是局部最优点,有可能是全局最优点,这个是决定模型好坏的重要因素之一。

近年来提出了很多不同的优化算法,分别利用不同的公式来更新模型的参数。Adam(Kingma and Ba,2015)自从2015年被推出后,一直到今天仍然是最常用的优化算法之一。这表明从机器学习从业者的角度来看,深度学习的优化的最好的方法在很大程度上并没有多大改变。

然而,今年已经产生了一些新的想法来改进深度学习的优化方法,这可能会成为未来我们模型的优化方式。来自谷歌、 UCLA 的研究者提出了一种通过程序搜索发现深度神经网络训练的优化算法,来自论文《Symbolic Discovery of Optimization Algorithms》。通过数千TPU小时的算力搜索并结合人工干预,得到一个更省显存且速度更快的优化器 Lion(EvoLved Sign Momentum),其在图像分类、图文匹配、扩散模型、语言模型预训练和微调等诸多任务上做了充分的实验,多数任务都显示 Lion 比目前主流的 AdamW 等优化器有着更好的效果。

论文:Symbolic Discovery of Optimization Algorithms
组织:Google, UCLA
作者:Xiangning Chen, Chen Liang, Da Huang, Esteban Real, Kaiyuan Wang, Yao Liu, Hieu Pham, Xuanyi Dong, Thang Luong, Cho-Jui Hsieh, Yifeng Lu, Quoc V. Le
论文地址:https://arxiv.org/abs/2302.06675
代码地址:https://github.com/google/automl/tree/master/lion

关于常见的优化器Optimizer/优化算法的介绍,可以查看之前的文章:
传送门:各种优化器SGD,AdaGrad,Adam,AdamW,LBFGS都做了什么?

Lion VS AdamW

先来看看优化器本身,Lion 的更新过程:
L i o n : = { μ t = sign ( β 1 m t − 1 + ( 1 − β 1 ) g t ) + λ t θ t − 1 θ t = θ t − 1 − η t μ t m t = β 2 m t − 1 + ( 1 − β 2 ) g t Lion:= \begin{cases} \mu_t=\text{sign}(\beta_1 m_{t-1}+(1-\beta_1)g_t) + \lambda_t \theta_{t-1}\\ \theta_t = \theta_{t-1} - \eta_t \mu_t\\ m_t = \beta_2 m_{t-1} + (1-\beta_2)g_t \end{cases} Lion= μt=sign(β1mt1+(1β1)gt)+λtθt1θt=θt1ηtμtmt=β2mt1+(1β2)gt

对比主流优化器 AdamW 的更新过程:
A d a m W : = { m t = β 1 m t − 1 + ( 1 − β 1 ) g t ν = β 2 ν t − 1 + ( 1 − β 2 ) g t 2 m ^ t = m t / ( 1 − β 1 t ) ν ^ t = ν t / ( 1 − β 2 t ) μ t = m ^ t / ( ν ^ t + ϵ ) + λ t θ t − 1 θ t = θ t − 1 − η t μ t AdamW:= \begin{cases} m_t =\beta_1 m_{t-1} + (1-\beta_1)g_t \\ \nu = \beta_2 \nu_{t-1} + (1-\beta_2)g_t^2 \\ \hat{m}_t= m_t / (1-\beta_1^t)\\ \hat{\nu}_t= \nu_t / (1-\beta_2^t)\\ \mu_t=\hat{m}_t / (\sqrt{\hat{\nu}_t}+\epsilon) +\lambda_t\theta_{t-1} \\ \theta_t = \theta_{t-1} - \eta_t \mu_t \end{cases} AdamW= mt=β1mt1+(1β1)gtν=β2νt1+(1β2)gt2m^t=mt/(1β1t)ν^t=νt/(1β2t)μt=m^t/(ν^t +ϵ)+λtθt1θt=θt1ηtμt

两者对比,可以发现 Lion 比 AdamW 参数更少:

  • Lion 少了一个 ϵ \epsilon ϵ,少缓存一组参数 ν \nu ν,所以更省显存;
  • Lion 去掉了 AdamW 更新过程中计算量最大的除法和开根号运算,所以速度更快;

另外,值得注意的是 Lion 更新规则有所不同,Lion 使用符号函数sign处理更新量,尤其是动量的更新放在了变量的更新之后,并且在充分的实验中显示出了它在效果上的优势。

在这里插入图片描述

与 AdamW 和各种自适应优化器(这些优化器需要同时保存一阶和二阶矩)相比,Lion 只需要动量并利用符号操作来计算更新,并且将额外的内存占用减半。这在训练大模型或大批量时很有用。例如,AdamW 需要至少 16 个 TPU V4 来训练图像大小为 224、批大小为 4096 的 ViT-B/16,而 Lion 只需要 8 个。另一个实际好处是,由于 Lion 的简单性,Lion 在实验中具有更快的运行时间(steps /sec),通常比 AdamW 和 Adafactor 提速 2-15%,具体取决于任务、代码库和硬件。

论文实验

论文将 Lion 与广泛使用的优化器(如Adam和Adafactor)进行比较,以训练不同任务的各种模型。

1.图像分类

在图像分类方面,Lion 将 ImageNet上 的ViT精度提高了2%,并将JFT上的预训练计算节省了5倍。

研究者在 ImageNet 上从头开始训练,在更大的数据集 ImageNet-21K 和 JFT 上进行预训练。图片大小默认为 224。如下表 2 所示,Lion 在各种架构上显著优于 AdamW,即使训练集扩大 10 倍,Lion 仍然优于 AdamW。下图4显示了 JFT-300M 上不同预训练预算下三种 ViT 模型(ViT-B/16、ViT-L/16 和 ViT-H/14)的准确率。Lion 使 ViT-L/16 能够与 AdamW 在 ImageNet 和 ImageNet V2 上训练的 ViT-H/14 性能相匹配,但预训练成本降低了 3 倍。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.视觉语言对比学习

在视觉语言对比学习方面,Lion 在ImageNet上实现了88.3%的零样本和91.1%的微调精度,分别超过了SOTA 2%和0.1%。

在 CLIP 风格的视觉语言对比训练上,研究者没有从头开始学习所有参数,而是使用强大的预训练模型初始化图像编码器。

对于锁定图像文本调整 (LiT) ,研究者通过使用相同的 frozen 预训练 ViT 以对比方式训练文本编码器,进而在 LiT 上对 Lion 和 AdamW 进行比较。下表 4 显示了 3 种模型尺度上的零样本图像分类结果,Lion 展示出了对 AdamW 的持续改进。下图 5(左)展示了 LiT-B/16-B 的示例零样本学习曲线,并在其他两个数据集上得到了类似的结果。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.扩散模型

在扩散模型上,Lion 通过获得更好的FID分数和将训练计算减少2.3倍而优于Adam。

因为扩散模型在图像生成上的成功出圈(如DALL-E 2),研究者测试了 Lion 在无条件图像合成(Image synthesis on ImageNet)和多模式文本到图像生成(Text-to-image generation)方面的表现。

研究者在 ImageNet 上执行 64x64、128x128、256x256图像生成。如上图 5(中和右)所示,Lion 可以在 FID 分数上实现更好的质量和更快的收敛速度。

在文本到图像生成上,下图 6 展示了学习曲线。虽然 64 × 64 base 模型没有明显改进,但 Lion 在文本条件超分辨率模型上优于 AdamW。与 AdamW 相比,Lion 获得了更高的 CLIP 分数并且具有更小的噪声 FID 指标。
在这里插入图片描述

4.语言建模和微调

对于自回归、掩码语言建模和微调,Lion 表现出与 Adam 相似或更好的性能。

研究者重点关注 Lion 在语言建模和微调的性能表现,特别地,在纯语言任务上,研究者发现调整 β_1 和 β_2 可以提高 AdamW 和 Lion 的质量。

对于自回归语言建模(Autoregressive language modeling),下图7展示了 Wiki-40B 的 token 级困惑度(Perplexity)和 PG-19 的 word 级困惑度。Lion 始终实现比 AdamW 更低的验证困惑度。在 Wiki-40B 和 PG-19 上训练中型模型时,它分别实现了 1.6 倍和 1.5 倍的加速。当模型增加到大尺寸时,PG-19 进一步实现了 2 倍加速。

在这里插入图片描述

对于掩蔽语言建模(Masked language modeling),研究者还在 C4 数据集上执行 BERT 训练,其中 Lion 在验证困惑度方面的表现略好于 AdamW,如下图 11(左)所示。右图是 ImageNet 上的训练曲线, Lion 尽管验证集效果更好,但训练集上的效果未必会优于AdamW。

在这里插入图片描述

对于微调(Fine-tuning),研究者在 GLUE 基准上微调 Base(220M)、Large(770M)和最大的 11B T5 模型。下表 6 显示了 GLUE 开发集上的结果,平均而言,Lion 在所有 3 个模型规模上都击败了 AdamW。

在这里插入图片描述

5.与其他流行优化器的比较

论文中还将 Lion 与四种流行的优化器 RAdam、NAdam、AdaBelief 和 AMSGrad 进行比较,分别在 ImageNet 上训练 ViT-S/16 和 ViT-B/16(使用 RandAug 和 Mixup)。如下表 7 所示,Lion 仍然是表现最好的。

在这里插入图片描述

超参数设置

通过对 Lion 的分析表明,它的性能增益随着训练批量的增加而增加。它还需要比Adam更小的学习率,因为符号函数产生的更新范数更大。

论文就 Lion 优化器推导出来一些“炼丹策略”:一些超参数的组合设置,比如关键的学习率 η \eta η和权重衰减率 λ \lambda λ,参数 β 1 \beta_1 β1 β 2 \beta_2 β2。具体的细节可以看原论文。

优化器的另一个潜在限制——批量大小(batch size)。通过实验,论文指出 Lion 在小batch_size(小于64)的时候效果不如AdamW。如图8(左)所示,AdamW的最佳批量大小为256,而Lion的最佳批量为4096。这表明 Lion 适合更大的batch_size,但即使在batch_size=64的情况下,其性能仍保持稳定。此外,当批量大小扩大到32K(导致仅包含11K个训练步骤)时,Lion 比 AdamW 获得了显著的2.5%的准确率增益(77.9%对75.4%),这证明 Lion 在大批量训练环境中的有效性。

在这里插入图片描述

Lion 只保存动量,比 AdamW 等流行的自适应优化器占用的内存更小,这在训练大模型和 / 或使用大批量时非常有用。

小结

Google 新提出的一个简单有效的优化算法 Lion,利用高效的搜索技术来探索无限且稀疏的程序空间。相比主流的 AdamW,Lion 有着速度更快且更省内存的特点;Lion 还能够取得更好的泛化性能。该研究采用了一系列技术,包括具有热启动和重启的进化搜索、抽象执行、funnel 选择和程序简化策略。

参考:
https://arxiv.org/abs/2302.06675
https://github.com/google/automl/tree/master/lion
https://www.163.com/dy/article/HTUKVDAG0542QSJ0.html
https://spaces.ac.cn/archives/9473
https://www.jianshu.com/p/a2ce9a117f0a

欢迎各位关注我的个人公众号:HsuDan,我将分享更多自己的学习心得、避坑总结、面试经验、AI最新技术资讯。

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

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

相关文章

加入蓝精灵协会的快速指南

了解使用蓝精灵协会应用程序所需的所有要点。 什么是蓝精灵协会? 蓝精灵协会是唯一一个由蓝精灵官方品牌支持的 PFP 项目。 我们目前正处于这个交互式项目的第二阶段,重点是通过游戏化的 Web3 体验建立一个大型社区。下面是参与游戏的基本步骤&#xff0…

C++进阶:二叉搜索树

文章目录1 二叉搜索树概念2 二叉搜索树的实现2.1 结点的定义2.2 二叉搜索树的插入2.2 二叉搜索树的查找2.3 二叉搜索树的删除2.4 二叉搜索树的默认成员函数2.4.1 拷贝构造2.4.2 析构函数2.4.3 赋值重载3 二叉搜索树的应用3.1 k模型3.2 kv模型4 二叉搜索树的性能分析1 二叉搜索树…

【字典转模型 Objective-C语言】

一、点按钮,弹出的这个效果,这实际上是个Label, 这实际上是一个Label,点按钮弹出的这个效果, 设置一个Label的背景色、前景色、透明度、等等, 让它加进来,然后通过动画让它隐藏掉, 这就是,这个效果的实现思路, 咱们这个效果,先稍微往后放一放, 这个并不是重点…

匈牙利算法学习笔记

匈牙利算法学习笔记1. 前言1.1 二分图1.2 二分图匹配2. 匈牙利算法(Hungarian Algorithm)2.1 基础概念2.2 实现步骤参考链接:1. 14-4:匈牙利算法 Hungarian Algorithm1. 前言 1.1 二分图 二分图通常针对无向图问题。假设G(V,E)G(V,E)G(V,E)是一个无向图…

Linux搭建gitlab服务器

第一步:切换到root用户 sudo root或者 sudo -i第二步:执行以下命令 yum install curl openssh-server openssh-clients postfix cronie -y​systemctl start postfix.servicechkconfig postfix onlokkit -s http -s ssh第三步:添加Gitlab&…

如何理解 Python 的赋值逻辑

摘要: 如果你学过 C 语言,那么当你初见 Python 时可能会觉得 Python 的赋值方式略有诡异:好像差不多,但又好像哪里有点不太对劲。 本文比较并解释了这种赋值逻辑上的差异。回答了为什么需要这种赋值逻辑以及如何使用这种赋值逻辑…

Acer新蜂鸟Swift3电脑开机总是蓝屏错误怎么办?

Acer新蜂鸟Swift3电脑开机总是蓝屏错误怎么办?有用户使用的Acer新蜂鸟Swift3电脑一开机的时候,没过几秒电脑桌面就变成了蓝屏的了,通过强制重启之后依然会重复这个问题,那么这个问题要怎么去进行解决了,今天将你怎么重…

Android 反序列化漏洞攻防史话

Java 在历史上出现过许多反序列化的漏洞,但大部分出自 J2EE 的组件。即便是 FastJSON 这种漏洞,似乎也很少看到在 Android 中被实际的触发和利用。本文即为对历史上曾出现过的 Android Java 反序列化漏洞的分析和研究记录。 序列化和反序列化是指将内存数…

k8s-kubectl命令

文章目录一、kubectl 基本命令1、陈述式资源管理方法:2、声明式资源管理办法二、基本信息查看三、项目的生命周期创建kubectl run命令四、金丝雀发布(Canary Release)——陈述式管理方法五、声明式管理方法kubectl create 和 kubectl apply区别一、kubectl 基本命令 1、陈述式…

交叉验证 | 机器学习

1、交叉验证 1.1概念 交叉验证的核心思想:对数据集进行多次划分,对多次评估的结果取平均,从而消除单次划分时数据划分得不平衡而造成的不良影响。因为这种不良影响在小规模数据集上更容易出现,所以交叉验证方法在小规模数据集上更…

Profinet转ModbusTCP网关连接昆仑通态触摸屏配置案例

本案例是模拟将Modbus TCP 设备数据接入到西门子PROFINET 网络中。 使用设备为西门子 S7-1500 型 PLC, Profinet转ModbusTCP网关。MODBUS 从站昆仑通态触摸屏。 配置方法: 打开博图,新建项目并添加站点。 添加1513PLC。 设置好IP并处于联网状态 导入Pr…

【前端】小程序开发入门:安装开发工具、目录结构与项目配置

文章目录前期准备目录结构app.jsonpageswindow其他前期准备 开发小程序要先申请一个对应的AppID:微信小程序 (qq.com) 微信官方小程序开发文档:微信开放文档 (qq.com) 然后安装一个小程序开发工具: 选择稳定版: 安装后打开&…

组合由于继承

目录 前言: 1.什么是继承? 2.继承的劣势、问题? 3.组合相比继承有哪些优势? 4、如何判断该用组合还是继承? 参考资料 前言: 我们在平时日常开发设计的过程中,经常会有人提到一条经典的设…

音视频基础之封装格式与音视频同步

封装格式的概念 封装格式(也叫容器)就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。 一般来说,视频文件的后缀名就是它的封装格式。 封装的格式不一样,后缀名也就不一样。 比如&a…

MMPBSA结合自由能计算原理

MMPBSA结合自由能计算原理 计算结合自由能的方法有很多,例如,热力学积分(Thermodynamic Integration,TI)、自由能微扰(Free Energy Perturbation,FEP)、MM/PB(GB)SA、线性相互作用能…

安科瑞消防应急照明和疏散指示系统在城市隧道的应用分析

【摘要】:随着城市的发展,交通量越来越大,交通状况越来越复杂,城市隧道的修建也随之变多。当隧道照明正常时,隧道内路面有足够的照度,隧道中快速行驶的汽车,大部分司机不用打开车灯或只需打开车…

Swift 周报 第二十三期

前言 本期是 Swift 编辑组自主整理周报的第十四期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。 欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。 勇敢是即便知道好结局不会每每降临在…

项目中异常信息的统一处理以及JSR03校验

在项目中,我们经常会对前端传过来的数据判断是否有一些错误,比如:id是否为空,传过来的名称是否合格,如果不符合我们通常会抛出异常,那么小的项目可能每次抛出异常也不是很麻烦,但是对于一个大型…

详解HashMap

目录 1.hash code 2.数据结构 3.初始化 4.存取 4.1.put 4.2.get 5.迭代 6.扩容 7.JDK1.7版本存在的问题 7.1.性能跌落 7.2.循环链表 8.散列运算 9.扰动函数 1.hash code hash code是使用hash函数运算得到的一个值,是对象的身份证号码,用于…

将项目从 SVN 迁移到 GIT

场景 项目开发中,项目原本是用的SVN,已经用了一年了,现在公司要抛弃SVN用Git,要求把SVN的代码直接搬过去Git,并保留之前的历史提交记录。 操作步骤 找到已经被svn管理的项目的根目录 WinFarm,右键 Git Ba…