3.4 梯度优化搜索


文档摘要

3.4 梯度优化搜索 本节摘要:梯度优化把离散架构搜索变成连续优化问题。本节讲清连续松弛、超网络、双层优化三大支柱,拆解 DARTS 的具体做法(softmax 松弛 + 验证集损失对架构参数求梯度)与其退化问题,再对比 SNAS(Gumbel-Softmax 随机采样)、ENAS(RNN 控制器+权重共享)、ProxylessNAS(路径二值化)三套修补方案,最后讨论效率与可微性约束的代价。

3.4 梯度优化搜索

本节摘要:梯度优化把离散架构搜索变成连续优化问题。本节讲清连续松弛、超网络、双层优化三大支柱,拆解 DARTS 的具体做法(softmax 松弛 + 验证集损失对架构参数求梯度)与其退化问题,再对比 SNAS(Gumbel-Softmax 随机采样)、ENAS(RNN 控制器+权重共享)、ProxylessNAS(路径二值化)三套修补方案,最后讨论效率与可微性约束的代价。

学习目标

阅读完本节,你应当能够:

  1. 解释连续松弛的含义,以及 softmax 如何把离散操作选择变连续
  2. 说出超网络(Supernet)的两种构建方式与共享权重的作用
  3. 描述 DARTS 的双层优化流程,并指出它的退化问题
  4. 对比 SNAS、ENAS、ProxylessNAS 各自修补了 DARTS 的哪个短板

一、问题与直觉:把"搜索"变成"优化"

进化算法和强化学习有一个共同的尴尬:它们把 NAS 当"黑箱搜索"——生成架构、评估、反馈,完全不利用梯度信息。可神经网络训练本身就是梯度优化的天下,架构搜索却对梯度敬而远之,这不合理。

梯度优化 NAS 的野心就是打破这堵墙:让架构参数也参与梯度下降。做法听起来反直觉——离散的"选卷积还是池化"怎么求导?答案是连续松弛:不直接选,而是给每个候选操作一个权重(softmax 后的概率),让输出变成所有操作结果的加权和。搜索期间所有操作都跑,权重决定谁的贡献大;搜索结束,权重最大的操作胜出,网络离散化。把"二选一"变成"按概率混合",梯度就有了,架构参数就能跟网络权重一起训练了。

这个转变的代价也必须说清。第一,可微性约束了搜索空间——空间必须能被连续表示,不是所有空间都行。第二,连续参数与最终离散架构之间有 gap——softmax 加权的结果不等于选中最优操作的结果。第三,权重共享(所有操作塞进一个超网络)带来相互干扰。这三个代价催生了 SNAS、ProxylessNAS 等一串修补方案。

二、核心原理:三大支柱与四个代表算法

支柱一:连续松弛。以搜卷积核大小为例,候选 {3x3, 5x5, 7x7}。离散搜索直接选一个;连续松弛引入三个架构参数 a3x3、a5x5、a7x7,softmax 后变成概率分布,网络输出是三个卷积结果的概率加权和。优化目标变成"找一组架构参数,使验证集性能最好"——这是标准可微优化问题。

支柱二:超网络(Supernet)。所有候选架构"塞进"一个大网络里共享权重。两种构建方式:共享权重超网络——所有操作是共享权重的模块,架构参数控制各操作的贡献程度;路径级超网络——把超网络看成 DAG,每个节点是计算层,每条边是候选操作,架构参数控制边的激活概率,不同路径构成不同子网络。超网络的价值是"一次训练,评估所有子网"——这正是第 4 章权重共享评估的源头。

支柱三:双层优化。架构参数与网络权重互相依赖,用交替优化处理:固定架构参数,训练网络权重(最小化训练集损失);固定网络权重,优化架构参数(最大化验证集性能,或最小化验证集损失)。循环交替到收敛。这个"内外层"结构让 DARTS 的每次迭代都要同时处理训练集和验证集。

DARTS。搜索空间是节点-边 DAG,每条边挂一组候选操作,用 softmax 松弛成连续权重。超网络共享权重,双层优化:外层用验证集损失优化架构参数,内层用训练集损失优化网络权重。搜索完每条边取概率最高的操作离散化,再从头训练最终架构。DARTS 的高效是划时代的——搜索在单卡上几天就能完成,而 NASNet 需要数百 GPU 天。但 DARTS 有两个著名毛病:退化(某些边收敛到只靠 Identity 或池化,结构过于简单)和性能 gap(连续搜索的架构与离散重训后性能对不上)。

SNAS。目标是治 DARTS 的架构参数偏差。用 Gumbel-Softmax 技巧做随机采样——不是取"概率最高的操作",而是按概率分布"抽"一个操作,且抽样过程可微。DARTS 是确定性松弛,SNAS 是随机性松弛,随机性能减少对梯度的过度依赖。SNAS 还把网络权重和架构参数放进同一个优化器联合优化,简化了双层循环。

ENAS。用 RNN 控制器生成架构(强化学习味道),但评估用权重共享——所有子网络共享超网络权重,避免每个架构从头训。ENAS 的贡献其实在评估侧:它证明"权重共享 + 搜索"能大幅降成本,让搜索空间可以更大、搜索轮数可以更多。

ProxylessNAS。核心批评是"权重共享让子网互相干扰,搜索结果不准"。对策是路径二值化:训练时不是所有路径都激活,而是用架构参数采一条路径、只更新这条路径的权重。把"所有操作一起跑"变成"一次只跑一条路",避免干扰。代价是每个路径权重独立,训练多个子网络,计算成本上升。ProxylessNAS 还直接在目标硬件上测延迟当约束,是硬件感知 NAS 的代表。

算法 松弛方式 优化 修补的短板
DARTS softmax 连续权重 双层交替优化 效率(基线)
SNAS Gumbel-Softmax 随机采样 单优化器联合 DARTS 的架构参数偏差
ENAS RNN 控制器生成 强化学习 + 权重共享 搜索成本
ProxylessNAS 路径二值化 单路径梯度更新 权重共享干扰

三、工程实践要点:DARTS 系方法的使用守则

退化问题要主动防。DARTS 搜索完先检查每条边最终选了啥操作。如果大片边选了 Identity 或池化,说明退化发生了。缓解手段:正则化架构参数(让分布更尖锐)、限制每条边的操作子集(别放太多"廉价操作")、用辅助 loss 平衡。最保险的是搜完做一轮"重训验证"——退化架构重训后性能一定差。

gap 是常态,重训是必修。连续搜索的架构参数分数,和离散架构重训后的真实精度,相关性没那么高。SOURCE 的流程也提醒:离散化后要在独立测试集上评估、必要时精调。凡是报告 DARTS 性能的论文,最后一步几乎都是"离散架构 + 从头训练 + 更长轮数"。

算力分配有讲究。梯度优化的省是省在搜索阶段,不是省在总账——最终架构的重训成本一点不少。预算分配建议:搜索阶段占小头(连续松弛本来就不便宜,但相比进化/强化学习便宜一个量级),重训阶段占大头。

⚠️ 常见坑:搜完的架构参数直接当"架构分数"汇报,不重训。这在文献里被反复批评——连续松弛的分数与真实性能之间的 gap 可能非常大,不重训的指标没有说服力。

💡 关键直觉:梯度优化 NAS 的本质交易是"用可微性换效率"。为了让搜索可微,你付出了空间受限和离散化 gap 两个代价——判断一个 DARTS 类方法好不好,就看它在这两个代价上补了多少窟窿。

四、梯度优化的机制细节与工程对策

DARTS 的双层优化到底在优化什么

DARTS 的"双层"容易让人困惑,拆开就清楚了。内层是常规训练:固定架构参数,用训练集优化网络权重——这就是普通神经网络训练。外层是架构学习:固定网络权重,用验证集优化架构参数——目标是让"验证集损失"对架构参数的梯度尽可能下降。两个目标用的数据不同(训练集 vs 验证集),这正是 DARTS 防止过拟合的巧妙之处:架构参数由验证集打分,网络权重由训练集打分,各司其职。SOURCe 对 DARTS 的优化描述正是"双层优化算法来优化网络权重参数和架构参数,外层最大化验证集性能"。

为什么连续松弛会造成性能 gap

连续松弛期间,网络的输出是"所有候选操作的加权和"——比如 3x3 卷积和 5x5 卷积按 softmax 权重混合。搜索结束时,权重最大的操作被选中,网络变成"单一操作"——这个"从混合到单一"的切换,就是 gap 的来源:混合网络的权重是为"混合"调出来的,切到单一操作后,权重未必匹配。SOURCe 在梯度优化的缺点里点了"最终得到的离散架构可能与优化得到的连续架构存在 gap"。工程含义很明确:搜索完必须重训,gap 越大,重训越必要。

退化问题的机制与三条对策

退化指某条边的 softmax 权重收敛成"只选 Identity/池化",网络退化成几乎没有计算量的空壳。机制上有两类解释:一类是"权重共享干扰"——廉价操作的输出对噪声更鲁棒,梯度更容易稳定,所以它们在优化中占便宜;另一类是"正则化不足"——没有约束的权重分布自由塌缩。对策已经在第 2.3 节列过三条,这里补充机制理解:去廉价化(操作集合不放太多 Identity/池化)治"源头",正则化(约束权重分布熵)治"过程",重训复验治"结果"——三条对应搜索的不同阶段。

选择 SNAS 还是 DARTS:随机性换稳定性

SNAS 用 Gumbel-Softmax 把确定性松弛换成随机采样,代价是搜索过程多了随机性、效率略降,收益是架构参数偏差更小、泛化更好。SOURCe 对 SNAS 的评价是"通过引入随机搜索,能够有效地减少架构参数的偏差,提高搜索结果的泛化能力"。工程上的选择逻辑:追求速度、空间规整,用 DARTS 原版;追求稳定性、遇到过退化或 gap 问题,换 SNAS 或 ProxylessNAS。三个方法不是替代关系,是同一设计空间里"确定性↔随机性""共享↔独立"两个维度上的三个采样点。

五、FAQ:梯度优化搜索的常见疑问

梯度优化一定要配权重共享吗?

几乎一定。连续松弛的"混合输出"要求所有候选操作共享超网络权重——否则每个操作独立权重,超网络参数爆炸。SOURCe 在讲 DARTS 时明确指出它"构建了一个共享权重超网络"。反过来说,权重共享带来的干扰(第 4.4 节)也因此成为梯度方法的固有代价——ProxylessNAS 用路径二值化规避干扰,就是在这个代价上的修补。

单卡几天搜完 DARTS 是常态还是运气?

是 DARTS 类方法的正常水平,但这不意味着免费。SOURCe 说 DARTS"搜索效率高,可以在较短的时间内找到性能良好的架构"——这个"短"是指搜索阶段,后面还有一笔账:离散化架构的重训成本通常是搜索阶段的数倍,而且重训质量决定最终性能。报"搜索几天出架构"之前,先算清"重训到可用"的总账。

连续松弛会限制搜索空间吗?

会,这是它的固有代价。为了让架构参数可微,空间必须能被连续表示:操作集合要固定、连接方式要受限、Cell 结构要规整。SOURCe 明确指出"为了保证搜索空间的连续可微性,梯度优化方法通常需要对搜索空间进行限制"。如果你的空间形态特殊(异质结构、动态拓扑),连续松弛可能表达不了,这时进化或强化学习反而更合适。

搜完的架构一定要重训吗?

一定要,这不是可选项。连续松弛的权重是为"混合输出"调的,离散化后必须从头重训才能得到真实性能。SOURCe 的流程里"架构评估与精调"就是这一步——在独立测试集上评估、必要时精调。凡是论文里只报"搜索分数"不报"重训分数"的,都可以先打个问号。

  • 三大支柱:连续松弛、超网络、双层优化,环环相扣
  • softmax 松弛:离散选择变概率加权,输出变所有操作的混合
  • DARTS 双层优化:外层架构参数(验证集),内层网络权重(训练集)
  • 退化问题:边收敛到廉价操作,结构过于简单
  • 四套方案:SNAS 随机采样、ENAS 权重共享、ProxylessNAS 路径二值化
  • gap 必修:连续分数与离散重训性能脱节,必须重训验证
  • 交易本质:可微性换效率,代价是空间受限与离散化误差

下一节看贝叶斯优化搜索——评估最贵时最划算的策略。

图3-4 DARTS 连续松弛与双层优化示意

图3-4 DARTS 连续松弛与双层优化示意


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U