3.3 强化学习搜索


文档摘要

3.3 强化学习搜索 本节摘要:强化学习把架构搜索建模成序列决策问题:RNN 控制器逐步"写"出架构,验证集精度当奖励,用策略梯度更新控制器。本节拆解智能体、环境、动作、状态、奖励、策略六要素,对比 NASNet 与 MetaQNN 两条路线,并分析强化学习能学复杂生成模式、但奖励敏感、训练不稳定、成本高的三重代价。 读完这一节你会得到 阅读完本节,你应当能够: 说出强化学习搜索的六要素,并解释它们在 NAS 语境下的对应物 说明 REINFORCE 策略梯度在架构搜索里的作用 对比 NASNet(RNN 控制器+强化学习)与 MetaQNN(Q-learning)两条路线 分析强化学习搜索"能学复杂模式"的优势与"奖励敏感、不稳定"的代价 一、问题与直觉:让算法"学会"设计架构

3.3 强化学习搜索

本节摘要:强化学习把架构搜索建模成序列决策问题:RNN 控制器逐步"写"出架构,验证集精度当奖励,用策略梯度更新控制器。本节拆解智能体、环境、动作、状态、奖励、策略六要素,对比 NASNet 与 MetaQNN 两条路线,并分析强化学习能学复杂生成模式、但奖励敏感、训练不稳定、成本高的三重代价。

读完这一节你会得到

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

  1. 说出强化学习搜索的六要素,并解释它们在 NAS 语境下的对应物
  2. 说明 REINFORCE 策略梯度在架构搜索里的作用
  3. 对比 NASNet(RNN 控制器+强化学习)与 MetaQNN(Q-learning)两条路线
  4. 分析强化学习搜索"能学复杂模式"的优势与"奖励敏感、不稳定"的代价

一、问题与直觉:让算法"学会"设计架构

进化算法靠种群瞎试,贝叶斯优化靠代理模型猜——强化学习走的是第三条路:让一个智能体学会生成好架构。智能体每生成一个架构,环境(搜索空间+评估器)就给一个奖励(验证集精度),智能体根据奖励调整自己的生成策略。试得多了,它逐渐摸清"什么样的架构容易得高分",生成策略从瞎写变成有章法。

这个范式的底气在于:架构生成本质上是一个序列决策问题——先决定第一层,再决定第二层,逐层"写"下去,每个选择都影响后面。RNN 控制器天生适合这种序列生成,它把"写架构"当成"写句子",把"架构好不好"当成"句子通不通顺"来学习。

但强化学习有个绕不开的痛:奖励很稀薄、很迟。一个 RNN 控制器要生成一个完整架构,验证集精度才反馈回来——这中间隔着完整的训练评估流程。而且奖励有噪声:同样架构换随机种子,精度可能差零点几个点。控制器在这种噪声奖励上做梯度估计,训练自然不稳定。SOURCE 给强化学习列的三条缺点——计算成本高、对奖励信号敏感、探索利用难平衡——全是这个"稀薄噪声奖励"的后遗症。

二、核心原理:六要素与两条路线

六要素。智能体(Agent):RNN 控制器或其他模型,负责逐 token 生成架构描述。环境(Environment):搜索空间与评估策略的组合——接收架构,评估性能,返回奖励。动作(Action):每个时间步的选择,比如"这一层是卷积还是池化""卷积核多大""要不要跳跃连接"。状态(State):已生成的架构部分、当前搜索进度。奖励(Reward):验证集精度等性能指标,衡量动作好坏。策略(Policy):控制器根据状态选动作的概率分布——训练的目标就是让这个分布往高分架构偏移。

更新机制:REINFORCE。策略梯度方法 REINFORCE 是最常用的一档。直觉很简单:控制器按当前策略采样一批架构,评估出精度;精度高的架构对应动作序列,给"正向激励",让控制器下次更可能生成类似结构;精度低的架构反向抑制。数学上是最大化期望奖励,梯度通过"奖励×对数策略梯度"来估——但采样有方差,需要技巧压噪声。

上图是强化学习搜索的最小闭环:控制器生成、评估器反馈、控制器更新。循环往复,控制器从"乱写"进化到"有章法"。

路线一:NASNet 的 RNN 控制器。NASNet 用 RNN 控制器生成 Cell 结构描述(Normal Cell 和 Reduction Cell 的内部连接与操作),在 CIFAR-10 上用强化学习搜 Cell,再迁移到 ImageNet 堆大网络。它的创新不在强化学习本身,而在"搜 Cell 不搜整网 + 代理任务"的组合拳——这两招把搜索空间和评估成本同时压下来,强化学习才跑得动。单纯从强化学习角度评价,NASNet 用的是最朴素的 REINFORCE,没有太多花活。

路线二:MetaQNN 的 Q-learning。MetaQNN 走的是值函数路线而非策略梯度。它用 Q-learning 学习一个 Q 函数,评估"从当前状态出发,选某个动作能拿到多少期望累积奖励"。决策时贪心选 Q 值最高的动作。跟 NASNet 的"逐层生成整个网络"不同,MetaQNN 学习的是层配置的选择策略——卷积层、池化层、全连接层的顺序与超参数。Q-learning 的好处是离线更新、样本利用效率高,坏处是状态空间大时 Q 表/函数难学准。

稳定性问题。强化学习搜索的著名翻车现场是"奖励 hacking":控制器发现某些"花招"能拿高分(比如生成极宽的网络),就反复生成这类架构,不再探索。这类问题本质上都是奖励设计不当。工程上要加探索噪声(熵正则)、要设架构多样性奖励、要监控控制器生成分布的熵别塌成确定式。

维度 NASNet MetaQNN
学习算法 REINFORCE 策略梯度 Q-learning 值函数
搜索对象 Cell 内部结构 整网层配置
生成方式 RNN 逐 token 逐层贪心/epsilon 探索
成本控制 代理任务+Cell 空间 较小空间直接搜

三、工程实践要点:强化学习搜索的现实建议

评估反馈贵,先用便宜评估。强化学习的每次奖励都来自一次架构评估,评估贵则训练慢。实战中先把评估换成代理任务或权重共享(第 4 章),等控制器"学得差不多了"再切回高保真评估。SOURCE 的 NASNet 就是这么做的——代理任务搜 Cell,高保真评估只留给最终架构。

奖励要设计,不能只丢精度。纯精度奖励最容易触发奖励 hacking。实践中加几样东西:熵正则保持探索、架构复杂度惩罚防"堆参数"、延迟/FLOPs 约束(第 5 章约束 NAS 的内容)。奖励函数的设计质量,往往比强化学习算法本身更能决定搜索结果。

控制器的探索-利用要显式管理。训练初期加大探索(高温 softmax、熵正则强),后期降低,让控制器从"乱写"收敛到"精写"。如果发现生成分布过早收敛(熵快速塌缩),多半是奖励噪声让策略梯度估计偏差太大,需要降学习率或加基线(baseline)减方差。

⚠️ 常见坑:用一个 RNN 控制器直接搜整个网络的每一层。控制器要生成的 token 数以千计,强化学习在这么长的动作序列上很难学出有效策略——把搜索对象收敛到 Cell(NASNet 的做法),动作空间小一个数量级。

💡 关键直觉:强化学习搜索的"智能"来自控制器,但控制器自己不是 NAS 的重点——重点是"把架构生成变成可学习的序列决策"。这个抽象让 NAS 能复用强化学习几十年的工具箱(策略梯度、值函数、熵正则、基线),这是它相对其他策略最大的杠杆。

四、强化学习搜索的机制细节与工程对策

REINFORCE 为什么方差大

SOURCe 提到强化学习搜索"训练过程不稳定",根源在 REINFORCE 的梯度估计方式:它用采样回报近似真实期望回报,采样越少、噪声越大。一个直觉例子:同一批架构里,两个几乎一样的控制器输出,可能因为评估噪声拿到截然不同的奖励,梯度方向就跟着乱跳。工程上的标准对策是加基线(baseline)——用当前批次奖励的均值当基线,奖励减去基线再乘梯度,能显著压低方差;进一步可以学习一个价值函数当基线(Actor-Critic 的雏形)。理解"方差从哪来",就理解了为什么强化学习搜索的工程细节全在压方差。

奖励设计的三个工程原则

第一,奖励要"有区分度"——如果所有架构的验证集精度都挤在 0.9 到 0.91 之间,奖励信号几乎没信息,控制器学不到东西。对策是奖励做变换(用排名、用精度差、用 log 域),拉开区分度。第二,奖励要"防 hacking"——控制器可能发现"把网络做宽就能涨精度"这种捷径,然后疯狂生成宽网络,多样性崩溃。对策是加正则项(复杂度惩罚)、加熵正则(保探索)、定期检查生成分布的熵。第三,奖励要与目标对齐——SOURCe 强调"如果奖励信号设计不合理,可能会导致智能体学习到错误的策略"。移动端部署的目标是"又准又快",奖励就该是精度减延迟惩罚的复合信号,而不是纯精度。

控制器的动作空间怎么设计

RNN 控制器逐 token 生成架构,每个 token 的选择就是动作空间的一维。动作空间设计直接影响学习难度:动作维度越多、每维的选项越多,控制器要学的策略越复杂。SOURCe 提到 NASNet 只搜 Cell 结构(动作空间小),而 MetaQNN 直接搜整网层配置(动作空间大)。工程经验:先压缩动作空间——固定 Cell 节点数、限制操作集合大小(第 2.3 节的"操作集合宁缺毋滥"在这里同样适用),控制器学起来才快。

一个对比:强化学习 vs 进化的"学习"差异

两者都靠"评估反馈"驱动,但学习方式不同:进化在个体层面做选择——好个体保留、坏个体淘汰,没有"生成策略"这个东西;强化学习在策略层面做学习——控制器记住了"什么模式容易得高分"的生成规律,下次生成时直接复用。所以强化学习"更聪明"但也更脆:模式学对了收益大,学偏了(奖励设计失误)比进化崩得更彻底。理解这个差异,就能解释为什么强化学习搜索的论文总是特别强调奖励设计和稳定性分析——它的成败悬在这两点上。

五、FAQ:强化学习搜索的常见疑问

NAS 的强化学习必须用 RNN 控制器吗?

不必须,但常见。RNN 的优势是适合序列生成(逐 token 生成架构描述),而且能"记住"已生成的部分。替代方案包括:GNN 控制器(GraphNAS 用它直接生成图结构,对拓扑更友好)、DQN 类值函数方法(MetaQNN 的代表)。SOURCe 在 3.1 节的分类图里同时列了"RNN 控制器"和"DQN"两条支线,就是这个意思——控制器形态跟着搜索对象的形态走,序列对象用 RNN,图对象用 GNN,层配置用 Q 学习。

强化学习搜索的成本到底贵在哪?

贵在"探索阶段的评估"。控制器初始策略是随机的,生成的架构质量差,但每个都要评估拿奖励——这个阶段评估的大部分架构都是浪费。训练控制器本身的成本反而小(控制器是小型 RNN)。所以强化学习搜索的成本大头永远是评估,这也是它必须配合便宜评估(代理任务、权重共享)的原因。记住"贵在评估不在控制器",就能理解为什么 SOURCe 把"计算成本高"列在强化学习的缺点里。

奖励信号能直接复用验证集精度吗?

能,但通常要加工。SOURCe 说"奖励通常是评估策略返回的架构性能指标,例如验证集精度"——直接复用是可行的起步方案。但工程上建议至少做两件事:用验证集而非训练集(防止控制器记住训练集的捷径);奖励加变换(排名或对数),避免精度挤在一起时信号无区分度。进阶做法是把延迟、参数量等约束也编进奖励,那已经是第 5.1 节约束 NAS 的范畴。

控制器训练崩了怎么救?

先看奖励曲线的形态。奖励上升又回落,多半是学习率太大或熵正则太弱,控制器从"探索"过早塌缩成"利用"。奖励始终不动,可能是动作空间设计问题(控制器根本没学会生成有效架构)。奖励噪声大、曲线乱跳,是方差问题,加基线、加熵正则、降学习率三件套依次试。最后的兜底方案是回到随机搜索基线——如果强化学习连随机都打不过,说明问题不在强化学习本身,而在它的上游(空间、评估、奖励设计)。

  • 六要素:智能体、环境、动作、状态、奖励、策略,在 NAS 里各有对应物
  • REINFORCE:奖励×对数策略梯度,朴素但方差大
  • NASNet 路线:RNN 控制器 + REINFORCE + 代理任务 + Cell 空间
  • MetaQNN 路线:Q-learning 学层配置选择策略
  • 奖励 hacking 要防:熵正则、复杂度惩罚、多样性奖励
  • 评估贵则训练慢:先用便宜评估学策略,再高保真定稿
  • 探索-利用显式管理:温度、熵、学习率都要跟着训练阶段调

下一节看梯度优化搜索——把 NAS 从"搜索"变成"优化"的关键一跳。

图3-3 RL 控制器与训练环境的交互回路

图3-3 RL 控制器与训练环境的交互回路


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