深入解析ENAS中的共享权重机制

深入解析ENAS中的共享权重机制

在神经网络架构搜索(NAS)领域,ENAS(Efficient Neural Architecture Search)通过引入共享权重机制(Weight Sharing),大幅降低了计算开销,使得在有限资源下的神经网络搜索成为可能。本文将围绕ENAS共享权重的更新过程时间节约机制损失函数设计进行全面解析。


1. ENAS中的共享权重机制

ENAS提出了共享权重的概念:在庞大的搜索空间中,所有候选子模型(子网络)共享一个超级网络(Supernet)的参数。这一设计使得每个子模型不需要独立训练,而是直接继承超级网络的权重进行评估。

核心思想
  1. 超级网络的定义:超级网络包含了搜索空间中的所有可能架构,其节点代表计算操作(如卷积、池化),边表示数据流的连接。
  2. 共享权重的意义:每次训练一个子模型时,其优化的权重会被共享到超级网络中,其他子模型可以复用这些权重,避免从零开始训练。

2. 权重的更新过程

ENAS通过交替优化的方式,训练共享权重和控制器的参数:

(1)共享权重 ω \omega ω 的更新
  • 固定控制器参数 θ \theta θ,采样出子模型架构。
  • 使用采样出的子模型在训练数据集上计算损失并通过反向传播更新共享权重 ω \omega ω
  • 每次训练只更新采样子模型相关的部分权重,未采样部分的权重保持不变。

具体步骤

  1. 控制器生成一个子模型。
  2. 在当前批次训练数据上前向传播计算损失。
  3. 反向传播更新 ω \omega ω 中与该子模型相关的参数。
  4. 重复上述过程,逐步优化整个超级网络的权重。
(2)控制器参数 θ \theta θ 的更新
  • 固定共享权重 ω \omega ω,通过强化学习训练控制器。
  • 控制器根据当前采样架构的性能调整采样概率,使其倾向采样高性能子模型。
  • 损失函数采用策略梯度方法(Policy Gradient),目标是最大化子模型在验证集上的性能。

通过上述交替优化,ENAS实现了共享权重 ω \omega ω 和控制器 θ \theta θ 的协同进步。


3. 节约时间的核心机制

传统的NAS需要为每个候选架构从零开始训练,这会带来巨大的计算开销。ENAS的共享权重机制通过以下方式显著节约时间:

(1)避免重复训练子模型
  • 在传统NAS中,每个架构都需要单独训练多个 epoch 才能进行性能评估。ENAS通过共享权重,子模型可以直接继承超级网络的参数进行评估,无需从头训练。
  • 示例
    • 若搜索空间中有 1000 个架构,传统NAS需要训练 1000 次,而ENAS仅需训练一个超级网络。
(2)增量式权重更新
  • 每次采样的子模型仅更新共享权重中与其相关的部分,未采样部分的权重保持不变。这种局部优化显著减少了计算量。
  • 效果:减少了全模型梯度计算的次数,使得每次训练更高效。
(3)控制器的强化学习优化
  • 控制器逐渐倾向采样高性能架构,避免了大量无效的随机采样过程。
  • 传统NAS:依赖随机搜索或穷举,时间复杂度高。
  • ENAS:强化学习让采样逐渐聚焦于潜在优质架构,加速搜索过程。
(4)权重共享的“迁移学习”特性
  • 当一个子模型训练时,其优化的权重能够被其他子模型复用。这种跨模型的权重共享类似于迁移学习,使得未被直接训练的模型也能快速适应任务。

4. 损失函数设计

ENAS的损失函数由两个部分组成:共享权重的损失控制器的损失

(1)共享权重的损失

共享权重的损失直接来源于采样的子模型在训练集上的性能。

  • 子模型损失:
    L shared = 1 N ∑ i = 1 N L ( f ( x i ; ω ) , y i ) L_{\text{shared}} = \frac{1}{N} \sum_{i=1}^N \mathcal{L}(f(x_i; \omega), y_i) Lshared=N1i=1NL(f(xi;ω),yi)
    其中:
    • x i , y i x_i, y_i xi,yi:训练样本及其标签。
    • L \mathcal{L} L:常用的交叉熵或均方误差损失。
    • ω \omega ω:超级网络的共享权重。
(2)控制器的损失

控制器通过强化学习优化,其目标是最大化采样子模型在验证集上的性能。损失函数基于策略梯度方法:
L controller = − E P ( m ; θ ) [ R ( m ) ] L_{\text{controller}} = -\mathbb{E}_{P(m; \theta)} \left[ R(m) \right] Lcontroller=EP(m;θ)[R(m)]
其中:

  • P ( m ; θ ) P(m; \theta) P(m;θ):控制器采样架构 m m m 的概率分布。
  • R ( m ) R(m) R(m):子模型 m m m 的奖励函数,通常由验证集上的准确率给出。

通过策略梯度方法优化 θ \theta θ,控制器能够逐步采样出更高性能的子模型。


5. 总结与展望

ENAS通过共享权重机制,实现了在庞大搜索空间中的高效搜索,显著降低了计算成本。其成功的关键在于:

  1. 通过共享权重,避免重复训练候选架构
  2. 权重优化过程高效,支持多子模型的协同训练
  3. 强化学习控制器进一步减少无效搜索,提升时间效率

尽管ENAS的共享权重机制解决了传统NAS中的时间开销问题,但也引入了一些新的挑战,例如共享权重可能对某些特定子模型评估不准确。未来的研究可以在共享权重的公平性和鲁棒性上进一步优化,从而提升搜索性能。

通过ENAS的探索,NAS算法的高效性得到了巨大的提升,也为神经网络搜索在实际应用中的落地提供了可能性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软路由系统 --- VMware安装与配置OpenWRT

目录: OpenWrt安装与配置 一、下载OpenWRT映像二、img转换vmdk格式三、创建虚拟机(OpenWRT)四、启动系统(OpenWRT)五、配置网络信息(LAN、WAN)六、登录OpenWRT后台管理界面 一、下载OpenWRT映像 OpenWrt映…

利用notepad++删除特定关键字所在的行

1、按组合键Ctrl H,查找模式选择 ‘正则表达式’,不选 ‘.匹配新行’ 2、查找目标输入 : ^.*关键字.*\r\n (不保留空行) ^.*关键字.*$ (保留空行)3、替换为:(空) 配置界面参考下图: ​​…

Moretl开箱即用日志采集

永久免费: 至Gitee下载 使用教程: Moretl使用说明 使用咨询: 用途 定时全量或增量采集工控机,电脑文件或日志. 优势 开箱即用: 解压直接运行.不需额外下载.管理设备: 后台统一管理客户端.无人值守: 客户端自启动,自更新.稳定安全: 架构简单,兼容性好,通过授权控制访问. 架…

Java中的全局异常捕获与处理

引言 Java编程中,异常情况是不可避免的,优秀的异常处理机制是保证程序稳定性和可靠性的重要因素,当程序出现异常的时候,如果没有进行适当的处理,可能导致程序崩溃,丢失数据等严重问题。全局异常捕获与处理可…

基于Spring Boot的小区车辆管理系统

一、系统背景与目的 随着城市化进程的加快,小区内的车辆数量急剧增加,车辆管理问题日益凸显。传统的车辆管理方式存在效率低、易出错、信息不透明等问题。为了解决这些问题,基于Spring Boot的小区车辆管理系统应运而生。该系统旨在通过信息化…

Mapbox-GL 的源码解读的一般步骤

Mapbox-GL 是一个非常优秀的二三维地理引擎,随着智能驾驶时代的到来,应用也会越来越广泛,关于mapbox-gl和其他地理引擎的详细对比(比如CesiumJS),后续有时间会加更。地理首先理解 Mapbox-GL 的源码是一项复…

【计算机网络课程设计】校园网规划与设计

摘要 在科学技术飞速发展的时代,网络互联技术显示出了它蓬勃发展的生命力,它逐渐进入了人们的家居生活,使得当今社会的智能化和网络化越来越来明显。由于Internet的信息和服务内容不断的扩大,使得用户对网络的需求急剧增加。家庭…

单元测试-Unittest框架实践

文章目录 1.Unittest简介1.1 自动化测试用例编写步骤1.2 相关概念1.3 用例编写规则1.4 断言方法 2.示例2.1 业务代码2.2 编写测试用例2.3 生成报告2.3.1 方法12.3.2 方法2 1.Unittest简介 Unittest是Python自带的单元测试框架,适用于:单元测试、Web自动…

【数字化】华为数字化转型架构蓝图

导读:华为的数字化转型规划团队在2016年年底基于对愿景的系统诠释,整合出了数字化转型架构蓝图。该蓝图共分为5层,旨在通过数字化转型实现客户交互方式的转变、作战方式的转变、公司各平台业务能力的数字化、服务化以及运营模式的转变。 目录…

【射频仿真技巧学习笔记】Cadence修改图表背景、曲线颜色

很多初始设置的Cadence仿真出来的曲线是长下面这样的,背景是黑色,而且曲线是Dot点状fine细线,这样查看图像会很不方便 如果一条一条去改曲线的性质会很不方便, 这里我介绍一种方法,只需要输入几行代码就可以自动更改所…

数据结构-排序(来自于王道)

排序的基本概念 插入排序 在这个算法中,除了输入的数组本身,没有使用额外的数据结构来存储数据,所有的操作都是在原数组上进行的。因此,无论输入数组的大小 n 是多少,算法执行过程中所占用的额外空间是固定的&#xff…

zlmediakit搭建直播推流服务

参考连接 夏楚/ZLMediaKit gitee仓库(基于C开发的高性能流媒体服务器) ZLMediaKit 文档(官方文档) zlm wiki 维基 ZLMediaKit配置文件详解 ZLMediaKit播放url规则 resultful api web hook EasyPlayer.js 播放器 aizuda/z…

【ELK】Filebeat采集Docker容器日志

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 介绍filebeat是如何工作的 使用部署filebeat 介绍 Filebeat 是一个用于转发和集中日志数据的轻量级传送器。 Filebeat 作为agent安装在服务器上,监视指…

大数据-252 离线数仓 - Airflow 任务调度 Crontab简介 任务集成部署 入门案例

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! 目前开始更新 MyBatis,一起深入浅出! 目前已经更新到了: Hadoop&#xff0…

鸿蒙快速切换签名配置

鸿蒙快速切换签名配置 参考文档 根据官方签名文档完成签名之后。会在Signing Configs里边生成一个签名项目。 但是因为发布打包这个配置项目是需要手动配置的。那不能开发的时候用自动测试签名,上线的时候还需要手动配置一遍这个吧。想想这么弄就很麻烦。 这个时…

解决git clone时报错“authentication failed for huggingface repository”

问题1: 已经获取了模型的授权,但是git clone时,弹出弹窗 输入huggingface的用户名和密码后,报错如下 解决方式1: 阅读红框标注的说明,“password authentication in git is no longer supported.”&#…

python小课堂(一)

基础语法 1 常量和表达式2 变量和类型2.1 变量是什么2.2 变量语法 3 变量的类型3.1 动态类型特性 4 注释4.1注释是什么 5 输入输出5.1 print的介绍5.2 input 6 运算符6.1 算术运算符在这里插入图片描述6.2 关系运算符6.3 逻辑运算符6.4赋值运算符 1 常量和表达式 在print()中可…

php面对对象的基础知识

php面对对象的基础知识 程序开发:面向过程vs面向对象 面向过程面向过程是一种以“整体事件”为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。 面向对…

es 开启slowlog

在 Elasticsearch 中,slowlog(慢日志)是用来记录查询和索引操作的性能数据,帮助你诊断性能瓶颈。你可以为查询 (search slowlog) 和索引 (index slowlog) 配置慢日志。 数据准备 POST /products/_doc/1 {"product_name&quo…

CANape使用之新建工程

基本概念 CANape有两个基本概念:“工程”和“配置”,控制着CANape中进行的所有工作。 “工程”是指硬件设置,可能是连接到ECU或车辆总线上的Vector网络接口卡,或者连接到ECU或ADAS传感器(如雷达)上的高速ECU内存接口(VX1000)&am…