小城里的“阿杰小馆”,老板阿杰手艺精湛,可那道招牌红烧牛肉已经三年没换过花样。隔壁新开的创意餐厅每周翻新菜谱,老顾客一个个被勾走。阿杰咬牙雇来一位“智能研发助理”——它不掌勺,却会从冷藏柜的食材里写菜谱:先选主料,再选配料,再定火候,一气呵成写出一张张新菜谱;后厨照做,端给品鉴团试吃打分;助理则根据分数默默调整自己的“选材偏好”。循环往复,直到某天端出一道让全店沸腾的金牌菜。 这个故事翻译成 AI 术语,就是强化学习驱动的神经架构搜索(NAS):把“设计神经网络”这件事,从人工手艺人凭手感,变成强化学习智能体在自动化反馈循环中寻找最优解。本文带你从零看懂这个“智能研发助理”的内部原理:它如何写菜谱、如何被打分、又如何越学越聪明。

岗位关联

掌握基于强化学习的 NAS,等于拿到一份“自动发牌机图纸”——你只设计规则和边界,让智能体替你找到超越人工经验的网络架构,这是 AutoML 时代 AI 工程师的核心竞争力。

目录
  1. 可视化演示
  2. 1. NAS概念动机
  3. 2. 搜索空间设计
  4. 3. 策略控制器
  5. 4. 奖励函数设计
  6. 5. 策略梯度更新
  7. 6. 搜索闭环系统
  8. 7. 优化与挑战
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示强化学习驱动的神经架构搜索的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

强化学习驱动的神经架构搜索:RLNA RL-NAS整体框架与闭环流程 控制器网络结构与设计 核心机制可视化 强化学习驱动的神经架构搜索整体架构与关键组件

1. NAS概念动机

阿杰的烦恼是招牌菜三年没换。他也想创新,可每道新菜从选食材到调味全靠自己一道道试,又慢又费钱,折腾一个月只出两三个候选方案,还未必好吃。手工设计神经网络与此相似:专家凭经验选层数、选卷积核、选连接方式,调一次结构就要重新训练,每轮实验以天为单位。更关键的是,人的经验容易错过非直觉的优秀结构。

于是研究者想到把“试菜”自动化:神经架构搜索(Neural Architecture Search, NAS)在给定搜索空间里,让算法自动寻找验证精度尽可能高的网络结构。其中一种主流策略就是强化学习:训练一个“选菜助理”,把“生成结构”建模为决策序列,用“识别精度”当奖励,通过策略梯度不断修正决策。网络设计从“手艺人凭手感”变成“智能体按反馈迭代”。

数学上,NAS 的目标可以写成:

阿杰要的不是再出一道红烧牛肉,而是一套能不停地替他试新菜的“自动化研发流程”。RL-based NAS 正是这个流程:智能体在反馈循环中自动把“好吃”找出来,而不再靠厨师的灵光一现。

max⁡a∈AAccval(a)\displaystyle \max_{a \in \mathcal{A}} \mathrm{Acc}_{val}(a)
  1. 架构变量$a$ 代表一个候选神经网络架构,比如几层卷积、每层多大,相当于一张具体的菜谱。
    aa
  2. 搜索空间集合$\mathcal{A}$ 是所有可搜索架构组成的集合,相当于冷藏柜里所有食材组合成的“菜谱空间”。
    A\mathcal{A}
  3. 验证精度$\mathrm{Acc}_{val}(a)$ 是架构 $a$ 训练后在验证集上的准确率,就像品鉴团给这道菜的打分。
    Accval(a)\mathrm{Acc}_{val}(a)
  4. 最大化操作$\max$ 要求找到使打分最高的那个架构,这就是 NAS 的目标函数。
    max⁡a∈A\max_{a \in \mathcal{A}}

2. 搜索空间设计

助理既然要研发,就得知道冷藏柜里到底有什么。太窄的柜子(只有牛肉和土豆)翻不出新意;太乱的柜子(几百种稀有食材)反而让助理无从下手。搜索空间之于 NAS,就是这份“食材清单”。强化学习控制器只能在清单内写菜谱,不可能凭空发明清单外的东西,因此搜索空间直接决定了搜索的上限。

一个典型的搜索空间把网络定义为一串决策:第 1 层用什么操作,第 2 层用什么……每层的可选操作构成候选操作集合 $\mathcal{O}$。常见的 $\mathcal{O}$ 包括普通卷积、深度可分离卷积、池化、全连接、跳跃连接等。把“每层一个选择”拼起来,一个架构就是长度为 $T$ 的选择序列。

所以工程上要先做“减法”:限制层数上限、去掉几乎不可能用的操作,让智能体在合理范围内自由发挥。空间大小是智能体的天花板,但也是它效率的边界——太宽阔反而让探索失去方向。

A={(o1,o2,…,oT)∣ot∈O, t=1,2,…,T}\displaystyle \mathcal{A} = \{(o_1, o_2, \dots, o_T) \mid o_t \in \mathcal{O},\ t = 1, 2, \dots, T\}
  1. 架构是一串选择$(o_1, o_2, \dots, o_T)$ 表示 $T$ 层网络中每层选一个操作,像菜谱上“主料、配料、火候”逐项填写。
    (o1,o2,…,oT)(o_1, o_2, \dots, o_T)
  2. 层索引$t$ 从 1 到 $T$,对应菜谱的第 1 步到第 $T$ 步,顺序很重要——先切菜再下锅,层序影响特征提取。
    t=1,2,…,Tt = 1, 2, \dots, T
  3. 操作集合$o_t \in \mathcal{O}$ 表示第 $t$ 层只能从候选操作库里挑一个,库里有卷积、池化等“基础刀法”。
    ot∈Oo_t \in \mathcal{O}
  4. 规模爆炸若每层有 $K$ 种操作,则 $|\mathcal{A}| = K^T$ 种组合,随层数指数爆炸——食材柜必须精心设计。
    ∣A∣=KT|\mathcal{A}| = K^T

3. 策略控制器

有了食材柜,助理还得有点“偏好”:今天更倾向用鸡肉还是豆腐?这种偏好不是死规矩,而是概率分布——七成想用鸡肉、三成想用豆腐。在强化学习中,这个会输出概率的“选菜大脑”就叫策略,参数化后写作 $\pi_\theta$。

经典实现是用一个 LSTM(长短期记忆网络)作为控制器。它像助理点菜一样,先吐出第 1 步的选择 token,再基于已选内容吐出第 2 步,一步步把整份菜谱写完。由于每一步都依赖前面所有步骤,整份菜谱的概率等于所有步骤概率的连乘:

助理的“口味”并不是天赋,而是由参数 $\theta$ 控制的、可调整的偏好分布——这正是后面策略梯度要反复修正的对象。

πθ(a)=∏t=1Tπθ(at∣a1:t−1)\displaystyle \pi_\theta(a) = \prod_{t=1}^{T} \pi_\theta(a_t \mid a_{1:t-1})
  1. 策略整体概率$\pi_\theta(a)$ 是控制器“写出”完整架构 $a$ 的概率,也是该架构被采样的权重。
    πθ(a)\pi_\theta(a)
  2. 模型参数$\theta$ 是 LSTM 里的全部可训练权重,相当于助理脑中“口味偏好”的具体数值。
    θ\theta
  3. 条件概率$\pi_\theta(a_t \mid a_{1:t-1})$ 表示已知前 $t-1$ 步已选内容时,第 $t$ 步选择 $a_t$ 的概率。
    πθ(at∣a1:t−1)\pi_\theta(a_t \mid a_{1:t-1})
  4. 概率连乘$\prod$ 把每一步的概率乘起来,因为菜谱要一步步写、步骤之间有依赖,不能把各步概率相加。
    ∏t=1T\prod_{t=1}^{T}

4. 奖励函数设计

菜谱写出来,后厨照做,端给品鉴团试吃。品鉴团在 NAS 里就是验证集:把子网络在训练集上训练若干轮后放到验证集上算准确率。这个准确率就是“食客打分”,是控制器学习的唯一依据,称为奖励 $R(a)$。

但只打好评分,助理可能学坏:为了提分点最贵的进口食材,做出一道“米其林价格、食堂味道”的菜。对应到网络就是疯狂堆参数、FLOPs 巨大,精度涨一点,模型却大到手机装不下。因此奖励函数通常要加“开销惩罚”项:

在真实项目里,工程师常把设备实测延迟也写进 $\mathrm{Cost}$,让控制器自己权衡“这道菜值不值这个价”。奖励设计直接塑造智能体的价值观——它说什么是好,智能体就朝什么方向优化。

R(a)=Accval(a)−β⋅Cost(a)\displaystyle R(a) = \mathrm{Acc}_{val}(a) - \beta \cdot \mathrm{Cost}(a)
  1. 最终奖励$R(a)$ 是架构 $a$ 获得的综合评分,分数高意味着“又好吃又实惠”。
    R(a)R(a)
  2. 精度正项$\mathrm{Acc}_{val}(a)$ 是验证集准确率,代表食客对味道的认可。
    Accval(a)\mathrm{Acc}_{val}(a)
  3. 开销惩罚$\mathrm{Cost}(a)$ 可以是参数量、FLOPs 或延迟,$\beta$ 是权衡系数,像“食材价格系数”,越贵扣分越多。
    β⋅Cost(a)\beta \cdot \mathrm{Cost}(a)
  4. 相减整合用减号统一两个目标,只有综合分高的架构才值得推广。
    Accval(a)−β⋅Cost(a)\mathrm{Acc}_{val}(a) - \beta \cdot \mathrm{Cost}(a)

5. 策略梯度更新

助理每周复盘:发现上周高分菜谱有个共同点——“用鸡肉配蒜蓉的菜普遍受欢迎”,于是把偏好往“鸡肉+蒜蓉”方向挪一点;低分组合则降低偏好。这个“按分数调偏好”的数学工具就是策略梯度,具体算法常用 REINFORCE。

设目标函数为期望奖励 $J(\theta)=\mathbb{E}_{a\sim\pi_\theta}[R(a)]$。直接求期望的最大值很困难,但 REINFORCE 给出一个巧妙结论:期望奖励的梯度可以写成“奖励 × 对数概率梯度”在采样分布下的期望:

拿到梯度后,用学习率 $\alpha$ 更新参数:

这就是“助理越学越聪明”的本质:每次复盘都把偏好向高分区域移动一点,多个回合后,高奖励架构被采样的概率越来越高。

∇θJ(θ)=Ea∼πθ[R(a)∇θlog⁡πθ(a)]\displaystyle \nabla_\theta J(\theta) = \mathbb{E}_{a \sim \pi_\theta}\left[R(a) \nabla_\theta \log \pi_\theta(a)\right]
  1. 赋值更新$\leftarrow$ 表示把右边的值赋给左边,旧的 $\theta$ 被新值替换。
    θ←\theta \leftarrow
  2. 梯度上升带加号说明我们沿梯度方向增大期望奖励——像助理把偏好微调得跟高分菜更一致。
    θ+α∇θJ(θ)\theta + \alpha \nabla_\theta J(\theta)
  3. 学习率$\alpha$ 控制每次调整的幅度,太大容易矫枉过正,太小则进步缓慢。
    α\alpha

6. 搜索闭环系统

单回合的“写菜谱→试做→打分→调整→再写”不算完,真正有用的研发是持续转动的闭环。控制器参数越转越准,采样出的架构平均精度一轮比一轮高。整个系统像一台自动运转的“研发厨房”。

闭环里的关键技巧是基线(baseline):不拿绝对分数当标准,而是跟“历史平均分”比。某道菜打 70 分很诱人,可如果本周平均分就有 75 分,那它其实是低于平均的表现;反过来,一道只有 60 分的菜,若平均分才 50 分,就值得提高它的偏好。减掉基线后梯度公式变为:

除了减方差,工程上还会并行采样:一次开多个灶台同时试做多道菜,用计算资源换墙钟时间,让闭环转得更快。对阿杰来说,多灶并行意味着同一个晚上能试完一整个系列的菜谱。

∇θJ(θ)=Ea∼πθ[(R(a)−b)∇θlog⁡πθ(a)]\displaystyle \nabla_\theta J(\theta) = \mathbb{E}_{a \sim \pi_\theta}\left[(R(a) - b) \nabla_\theta \log \pi_\theta(a)\right]
  1. 基线变量$b$ 是基线值,通常取历史奖励的平均或滑动平均,相当于本周品鉴的平均口碑分。
    bb
  2. 中心化奖励$R(a) - b$ 表示“比平均高出多少”,把绝对分数转成相对优劣。
    R(a)−bR(a) - b
  3. 降低方差减去与架构无关的常数 $b$ 不改变梯度的期望值,但能显著减小不同采样间的波动,让更新更稳定。
    ∇θlog⁡πθ(a)\nabla_\theta \log \pi_\theta(a)

7. 优化与挑战

梦想很美,现实是冰箱有限、炉灶很贵。RL-based NAS 最大的挑战是计算开销:每做一个候选架构,就要训练一个子网络,一轮搜几十个架构,相当于把原始训练成本放大几十倍。研究者想出了几招“省火”技巧。

第一,代理任务:不在完整大数据集上训练子网络,而是用一个小得多的代理数据集,或显著减少训练轮数,先快速为所有候选排序,最后再让优胜者到完整数据上精训。第二,熵正则:防止助理口味越来越固执——一旦口味固化就再也不尝试新组合,可能错过更优搭配。在目标函数中加入策略熵作为奖励项:

第三,把 FLOPs、延迟直接写进奖励(第 4 节的 $\mathrm{Cost}$ 项),让控制器自己权衡性价比。即便有这些技巧,单次搜索仍可能消耗高昂的 GPU 费用。阿杰的金牌菜最终端上了桌,但新菜谱总有同行模仿、新顾客总有新口味——好的搜索算法,永远在路上。

J~(θ)=Ea∼πθ[R(a)]+λH(πθ)\displaystyle \tilde{J}(\theta) = \mathbb{E}_{a \sim \pi_\theta}\left[R(a)\right] + \lambda H(\pi_\theta)
  1. 正则化目标$\tilde{J}(\theta)$ 是加入熵正则后的新目标,在期望奖励之外多了一项。
    J~(θ)\tilde{J}(\theta)
  2. 策略熵$H(\pi_\theta) = -\sum_{a} \pi_\theta(a) \log \pi_\theta(a)$,熵越大代表助理口味越分散、越愿意尝试新食材。
    H(πθ)H(\pi_\theta)
  3. 正则系数$\lambda$ 控制“保持探索”的力度,$\lambda$ 越大偏好越均匀,防止过早收敛到次优结构。
    λH(πθ)\lambda H(\pi_\theta)

AI 应用场景

场景一:AutoML 平台自动设计移动端视觉模型

阶段:模型自动设计

解决的问题:人工设计轻量分类网络依赖专家反复调参,耗时数周且容易陷入局部经验;RL-NAS 将结构搜索自动化,结合延迟惩罚项,在“精度-速度”权衡下产出可直接上线的模型。

具体案例:某图像识别团队需要一款在手机 CPU 上 15ms 内完成的分类模型。工程师用“候选操作集 + 层数上限”定义搜索空间,奖励 = 验证集精度 − β × 实测延迟。控制器搜索约一个 GPU 日后,找到一种以 3×3 深度卷积为主的架构,精度比手工基线高 1.9%,实测延迟降到 13ms,直接被部署到产品。

场景二:NLP 轻量 Transformer 结构搜索

阶段:结构自动搜索

解决的问题:Transformer 的层数、注意力头数、前馈维度等超参组合空间巨大,人工调参主要靠经验与运气;RL-NAS 能自动搜索轻量变体,在保证下游任务性能的同时压缩模型。

具体案例:算法团队在文本分类任务上定义候选操作(多头注意力、前馈维度、层数),用 RL-NAS 搜索轻量 Transformer 变体,奖励 = 验证集 F1 − β × 参数量。最终搜出的结构参数量减半而 F1 仅下降 0.3%,直接用于线上推理服务。

Python 演示

python74 行
"""极简强化学习NAS:策略梯度搜索最优两层MLP架构。"""import numpy as np rng = np.random.default_rng(42)N = 500X = rng.normal(size=(N, 4))y = ((X[:, 0] > 0) ^ (X[:, 1] > 0)).astype(float)  def sigmoid(z):    return 1.0 / (1.0 + np.exp(-z))  def train_child(arch, epochs=60, lr=0.5):    """训练子网络并返回验证准确率。arch=(隐藏单元数, 激活函数名)"""    hidden, act = arch    W1 = rng.normal(0, 0.5, size=(4, hidden))    b1 = np.zeros(hidden)    W2 = rng.normal(0, 0.5, size=(hidden, 1))    b2 = 0.0    for _ in range(epochs):        z1 = X @ W1 + b1        h1 = np.maximum(z1, 0.0) if act == "relu" else np.tanh(z1)        p = sigmoid(h1 @ W2 + b2).ravel()        grad = (p - y) / N        d_h1 = (grad[:, None] @ W2.T) * ((z1 > 0) if act == "relu" else 1 - h1 * h1)        W2 -= lr * h1.T @ grad[:, None]        b2 -= lr * grad.sum()        W1 -= lr * X.T @ d_h1        b1 -= lr * d_h1.sum(axis=0)    prob = sigmoid(h1 @ W2 + b2).ravel()    return float(((prob > 0.5) == y).mean())  HIDDEN = [4, 8, 16]ACTS = ["relu", "tanh"]LOGITS = [np.zeros(3), np.zeros(2)]ALPHA = 0.5  def softmax(z):    e = np.exp(z - z.max())    return e / e.sum()  def sample_arch():    arch, idxs, dists = [], [], []    for k, cand in enumerate([HIDDEN, ACTS]):        dists.append(softmax(LOGITS[k]))        idx = rng.choice(len(cand), p=dists[-1])        idxs.append(idx)        arch.append(cand[idx])    return arch, idxs, dists  def reinforce_search(rounds=10, batch=6):    for t in range(rounds):        records = []        for _ in range(batch):            arch, idxs, dists = sample_arch()            reward = train_child(arch)            records.append((reward, arch, idxs, dists))        baseline = np.mean([r for r, _, _, _ in records])        for reward, _, idxs, dists in records:            for i in range(2):                one_hot = np.eye(len(dists[i]))[idxs[i]]                LOGITS[i] += ALPHA * (reward - baseline) * (one_hot - dists[i])        best = max(records, key=lambda x: x[0])        print("round", t, "best acc %.3f" % best[0], "arch", best[1],              "baseline %.3f" % baseline)  if __name__ == "__main__":    reinforce_search()
目的:用 10 轮策略梯度迭代,在小型的 MLP 搜索空间中自动寻找在异或(XOR)合成数据上精度最高的两层网络结构。
  1. def train_child(arch, epochs=60, lr=0.5):训练一个子网络并返回验证准确率,扮演“后厨试做打分”。
  2. d_h1 = (grad[:, None] @ W2.T) * ((z1 > 0) if act == "relu" else 1 - h1 * h1)手动计算隐藏层的反传梯度,激活函数按 arch 动态选择。
  3. LOGITS = [np.zeros(3), np.zeros(2)]控制器的可学习参数,对应“选材偏好”:第一维管隐藏单元候选,第二维管激活候选。
  4. dists.append(softmax(LOGITS[k]))把每维的 logit 软化为概率分布,控制器按此概率采样架构。
  5. reward = train_child(arch)获得奖励:验证集上“食客打分”。
  6. LOGITS[i] += ALPHA * (reward - baseline) * (one_hot - dists[i])策略梯度更新:高于基线则提高该选项被选中的概率。

常见误区

误区“把候选操作和层数范围越定越大越自由,反正搜索算法会自动找最优解,所以我直接把搜索空间开到最大。”

正解搜索空间大意味着组合爆炸,策略梯度在大空间里很难有效探索。与其贪大,不如用经验把空间修剪到“合理范围内有代表性”的程度,比如限制层数上限、去掉几乎用不到的操作。空间是智能体的天花板,但也是它效率的牢笼。

为何常见:直觉上“更大 = 潜力更大”,忽略了计算预算和搜索算法本身的探索能力这两个现实约束。

误区“子网络没训练到收敛,验证精度就不准,奖励噪声太大,所以每个候选架构都必须完整训练。”

正解完整训练代价极高,主流做法是用早停、代理数据集、缩减训练轮数做近似评估,先用噪声大但便宜的奖励做粗筛,最后只对少数优胜者精训。策略梯度的期望与基线会把评估噪声平滑掉。

为何常见:把“指标可靠”误认为“必须精确计算”,没意识到 NAS 本身是迭代搜索,粗粒度的排序信号往往就够用了。

误区“精度高就是好架构,所以我只用验证集准确率当奖励,简单直接。”

正解真实部署还关心模型大小、延迟与能耗。把资源和精度合并成一个权衡分数,否则搜出的模型可能精度高但无法落地,就像餐厅只追味道不管食材成本,迟早关门。

为何常见:排行榜只看准确率,让人习惯性忽略工程约束;而加入惩罚项会提高奖励设计的复杂度。

误区“有了 NAS,以后不需要人类设计网络了,等着智能体给我成品架构就行。”

正解搜索空间、奖励函数和评估预算仍然由人来制定——人从“画架构”变成“画图纸的边界”。NAS 当前更擅长在人工指导下发现局部更优的结构,而不是凭空创造全新范式。

为何常见:媒体渲染“AI 自己设计 AI”的戏剧性,让人高估了自动化的程度。

面试题

Q1. 在基于强化学习的 NAS 中,“控制器”网络的主要职责是?

单选题 · easy

  • A.评估子网络训练精度
  • B.生成候选架构描述序列← 正确答案
  • C.反向传播控制器梯度
  • D.存储历史上所有架构

答案:B。控制器就像“智能研发助理”,负责一步步输出 token 组成完整架构描述;评估精度的是奖励函数,反向传播和存储都不是控制器的核心职责。

Q2. 搜索空间中“候选操作”集合通常不包括?

单选题 · easy

  • A.标准卷积层
  • B.全局池化层
  • C.激活函数层
  • D.最终权重参数← 正确答案

答案:D。候选操作是层的“类型”而非具体数值,类似于菜谱中的“烹饪方式”;权重参数是训练过程的产物,不属于搜索空间中的离散选择项。

Q3. REINFORCE 中“奖励乘以梯度方向”的直觉含义是?

单选题 · mid

  • A.降低高奖励架构的出现概率
  • B.提高高奖励架构的出现概率← 正确答案
  • C.使所有架构概率保持一致
  • D.使所有架构概率完全归零

答案:B。奖励为正时梯度把该架构的对数概率向上推,奖励为负时则向下压。就像阿杰复盘时更偏爱高分菜谱的选材组合,从而让高分架构越来越常被采样。

Q4. 奖励函数中引入开销惩罚项的主要目的是?

单选题 · mid

  • A.提高显卡训练的速度
  • B.平衡精度与资源约束← 正确答案
  • C.压缩控制器的参数量
  • D.扩大搜索空间的规模

答案:B。开销惩罚把参数量、FLOPs 或延迟并入奖励,让智能体在精度和资源之间做权衡,避免搜出精度高但无法部署的“天价菜”。

Q5. 策略梯度中基线 b 的主要作用是?

单选题 · mid

  • A.减少采样架构的数量
  • B.降低梯度估计的方差← 正确答案
  • C.增大奖励数值的范围
  • D.改变搜索空间的结构

答案:B。$b$ 一般取历史平均奖励,减掉后梯度期望不变,但每次更新的波动显著变小,就像用“与平均口碑的差”来评价一道菜,而不是用绝对分数。

Q6. 控制器用 LSTM 自回归生成架构时,整份架构的概率等于?

单选题 · mid

  • A.各步骤概率之和
  • B.各步骤概率之积← 正确答案
  • C.各步骤概率最大值
  • D.各步骤概率取平均

答案:B。架构是逐 token 生成的,整份菜谱同时出现的概率是每步条件概率的乘积,正如一连串依赖步骤的联合概率,不能相加或取平均。

Q7. 下列哪项是 NAS 最核心的动机?

单选题 · easy

  • A.减少训练数据的规模
  • B.自动发现更优的结构← 正确答案
  • C.彻底取代深度学习模型
  • D.让模型参数量变得更大

答案:B。NAS 的目标是用算法自动找到验证精度更高的网络结构,解决人工设计耗时且容易陷入局部经验的问题;它不减少数据、不取代深度学习。

Q8. RL-based NAS 搜索闭环包含哪些环节?

多选题 · mid

  • A.从策略分布中采样架构← 正确答案
  • B.训练子网络获得奖励信号← 正确答案
  • C.按策略梯度更新控制器← 正确答案
  • D.人工标注子网络的样本权重

答案:ABC。闭环由采样架构、训练子网络、计算奖励、用策略梯度更新控制器四步循环组成;人工标注权重不属于 NAS 搜索闭环,样本权重由训练数据给定。

Q9. 缓解 NAS 计算开销的常见手段有哪些?

多选题 · hard

  • A.使用代理数据集训练子网络← 正确答案
  • B.早停等近似策略评估方法← 正确答案
  • C.每个架构完整训练到完全收敛
  • D.随机穷举全部可能的架构组合

答案:AB。用小代理数据集和早停显著降低单次评估成本,属于“省火试菜”;完整训练到收敛恰恰是开销大的根源,随机穷举全部组合则让开销爆炸。

Q10. 在策略搜索中加入熵正则化的目的包括?

多选题 · mid

  • A.保持策略的探索能力← 正确答案
  • B.防止过早收敛于次优解← 正确答案
  • C.提高验证集精度数值
  • D.加速子网络训练过程

答案:AB。熵正则让策略分布不至过度尖锐,使控制器持续尝试新组合,避免口味固化错过更好的菜谱;它不直接改精度数值,也更不加速子网络训练。