想象你是一位探店美食博主,随身带着一本“探店账本”。账本的行是“此刻的场景”——今天心情如何、这家店排队多久;列是“可点的菜”。每一格用来记一句话:“在这样的场景下点这道菜,我能获得多少满足感”。格子是空的,你只能凭感觉乱点;每吃完一顿饭,你就根据真实口味修正对应格子的分数。吃多了以后,你根本不用动脑,翻到任何一家店,照着分数最高的那道菜点就行。这本账本,就是强化学习里的 Q 表。这篇我们讲清楚三件事:账本怎么初始化、每顿饭怎么修订、怎么决定“今天吃老本还是尝新菜”;最后还要看看,为什么当世界变得无限大时,这本纸质账本会记不过来,需要交给神经网络来接班。

岗位关联

对 AI 从业者的价值:Q 表是理解 DQN、PPO 等现代强化学习算法的基石,读懂这张表,你就掌握了“智能体如何从经验中学习价值”的底层逻辑,这也是面试算法岗的高频考点。

目录
  1. 可视化演示
  2. Q表定义
  3. Q值初始化
  4. Q表更新规则
  5. epsilon贪心策略
  6. 智能体决策
  7. 训练收敛过程
  8. Q表局限性
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示搜索引擎倒排索引的动态更新流程,从新文档写入、段合并到查询效率优化,直观理解实时索引的核心机制。

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

动态索引更新与增量合并 文档写入:新文档实时写入内存缓冲区,构建倒排表 段刷新:缓冲区满后刷新为磁盘上的不可变段 增量合并:小段按策略合并为大段,减少段数量 Merge(Small_Segments) → Large_Segment 动态索引实现实时搜索的关键机制

Q表定义

想象你是一位探店美食博主,随身带着一本“探店账本”。账本的行是“此刻的场景”——今天心情好不好、这家店排队多久;列是“可点的菜”。每一格用来记一句话:“在这样的场景下点这道菜,我能获得多少满足感”。格子里的分数,就是强化学习里的 Q 值。

强化学习中,“场景”叫状态(state),“点的菜”叫动作(action),“满足感”叫奖励(reward),而“这个状态下做这个动作的长期价值估计”就是 Q 值 Q(s,a)。把所有状态和动作组合的 Q 值排成一张表,这张表就叫 Q 表(Q-table)。它的行是状态集合 S,列是动作集合 A,每个格子的数值就是对应的 Q(s,a)。

Q 值不只看一口菜的味道,而是看“从这一口开始,未来所有影响”的期望累计回报。因为今天多吃一块甜点,可能影响后面三顿饭的胃口,所以格子里记的是带折扣的长期总和,而不是单步奖励。严格来说,Q(s,a) 是“在状态 s 执行动作 a 后,期望能获得的累计回报”,定义依赖于下面的 G_t。

所以 Q 表不是简单打分,而是一本“有远见的账本”。在表格型强化学习里,这张表就是智能体的全部记忆与决策依据。Q(s,a) 通常就定义为这个 G_t 在给定状态动作下的期望,记作 Q(s,a) = E[G_t | S_t=s, A_t=a]。

Gt=rt+γrt+1+γ2rt+2+⋯=∑k=0∞γkrt+k+1G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots = \sum_{k=0}^{\infty} \gamma^k r_{t+k+1}
通俗说明:G_t 是从 t 时刻起一路吃下去的“总满足感”,每一口都被折扣因子 γ 依次打折,越往后的影响越小。
  1. G_t 累计回报从当前时刻起,把所有未来奖励按时间加权累加而成的总回报。
    Gt=rt+γrt+1+γ2rt+2+⋯G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots
  2. r_t 即刻奖励当前这一步立刻获得的奖励,相当于夹起这口菜时的即时体验。
    rtr_t
  3. γ 折扣因子0 到 1 之间的常数,控制未来奖励被打折的程度,γ 越小越短视。
    γkrt+k+1\gamma^k r_{t+k+1}
  4. 求和符号k 从 0 到无穷逐步相加,把即时与远期、折现后的所有奖励聚合成一个数。
    ∑k=0∞γkrt+k+1\sum_{k=0}^{\infty} \gamma^k r_{t+k+1}

Q值初始化

新账本买回来,博主面临第一个选择:格子先写什么?是全部留白写 0,还是先随便填几个数?这个选择看似无关紧要,实际上影响着智能体探索世界的“心态”。

全零初始化最简单——所有菜“待定”,价值记为 0。它不偏袒任何动作,是工程上最常用的起点。但它有个小隐患:当两个动作初始值相同,argmax 可能固定偏向先出现的那个,导致另一个动作被冷落。不过配合探索策略,这个问题通常能被化解。

随机初始化给每个格子一个小随机数,打破对称性,让不同的动作在早期就有不同的“第一印象”,避免固定偏好。乐观初始化则是故意把格子写大,让没试过的菜“看起来很好吃”,从而诱导博主大胆尝试;缺点是前期会频繁踩坑,但探索更全面,后期往往学得更稳。对 AI 从业者来说,初始化的选择本质上是先验知识的注入:你知道环境大概什么水平,就敢写多乐观的初值。

初始化的选择没有绝对对错,它刻画的是智能体面对未知时的性格:白纸一张、谨慎观望,还是先入为主、乐观尝鲜。记不记得账本封面那句话——“大胆假设,小心求证”,初始化就是那个“大胆假设”。

Q表更新规则

博主吃了一口菜,就会掏出笔修正账本上对应的那个格子。这口菜实际有多好吃、下一口还有没有惊喜,都会让分数发生变化。在强化学习中,这个“修正格子”的操作叫 Q 值更新,所用的公式是 Q-learning 的核心。它把“现实给出的新证据”和“账本里的旧估计”做对比,按比例修正差距。

Q-learning 是一种时序差分(TD)方法:它不需要等一场饭局全部结束再总结,而是吃一口就立刻根据“这一步的奖励 + 对下一步的估计”来更新,用相邻两步的证据差修正整条轨迹的价值判断。

每吃一顿饭只改一格,但千顿饭下来,整本账都被现实打磨得越来越准。这就是“从经验中学习”最朴素的样子——不需要预先知道世界规律,只需要不断“尝一口,改一格”。

Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(s,a)]Q(s,a) \leftarrow Q(s,a) + \alpha \Big[ r + \gamma \max_{a'} Q(s',a') - Q(s,a) \Big]
通俗说明:旧估计 + 学习率 ×(现实证据 − 旧估计)。差距大就大改,差距小就微调。
  1. Q(s,a) 旧估值账本里当前这格原本写着的分数,也就是更新前的估计值。
    Q(s,a)Q(s,a)
  2. ← 赋值把右边整个表达式算出的结果写回左边这个格子,完成一次修订。
    ←\leftarrow
  3. α 学习率0 到 1 之间的步长系数,决定每次修订的幅度,α 大改得快、小改得稳。
    α\alpha
  4. r + γmaxQ(s',a') 新证据现实给的即时奖励,加上折现后的下一状态最优价值,合称 TD 目标。
    r+γmax⁡a′Q(s′,a′)r + \gamma \max_{a'} Q(s',a')
  5. TD 误差新证据与旧估值的差值,差值越大说明旧估计越不准确,越需要修正。
    r+γmax⁡a′Q(s′,a′)−Q(s,a)r + \gamma \max_{a'} Q(s',a') - Q(s,a)
  6. 按比例修正用学习率缩放误差后叠加到旧估值上,让格子向现实证据靠近一小步。
    Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(s,a)]Q(s,a) + \alpha \Big[ r + \gamma \max_{a'} Q(s',a') - Q(s,a) \Big]

epsilon贪心策略

博主在店门口会遇到一个灵魂拷问:今天吃记忆里最好吃的那道,还是闭眼随机点一个从没吃过的?如果永远吃老本,就永远发现不了新宝藏;如果天天乱点,又会频繁踩雷。这个两难,在强化学习里叫“探索与利用的权衡”(exploration vs exploitation)。

epsilon-greedy 是最常用的解法:以 ε 的概率随机选动作(探索),以 1-ε 的概率选当前 Q 值最大的动作(利用)。ε 就是博主口袋里那枚“冒险硬币”的抛偏程度——ε 越大,越爱尝新。工程上常用衰减计划:训练初期 ε 较大(0.5~1.0),让智能体充分收集经验;随着表格逐渐可信,ε 逐步降到 0.01 左右,让智能体专注利用。

ε 就像博主口袋里的冒险硬币:大部分时候翻出“吃老本”,偶尔翻出“尝新菜”。硬币随经验增多而渐渐变小,博主也就从热血小白变成了成熟老饕——但永远不会完全抛弃尝新,因为世界是会变的。

π(a∣s)={1−ε+ε∣A∣,a=arg⁡max⁡a′Q(s,a′)ε∣A∣,其他动作\pi(a|s) = \begin{cases} 1-\varepsilon + \frac{\varepsilon}{|A|}, & a=\arg\max_{a'} Q(s,a') \\ \frac{\varepsilon}{|A|}, & \text{其他动作} \end{cases}
通俗说明:最优动作被选中的总概率 = 利用概率 + 探索抽签可能抽中它的概率。
  1. |A| 动作总数当前状态下可选动作的个数,相当于菜单上的菜品总数。
    ∣A∣|A|
  2. 1-ε 利用概率大部分情况下直接选当前账本分数最高的动作,吃老本、零思考。
    1−ε1 - \varepsilon
  3. ε/|A| 探索均摊把每次随机探索的小概率平均分给每一个动作,保证每道菜都有被抽中的机会。
    ε∣A∣\frac{\varepsilon}{|A|}
  4. 最优动作的总概率最优动作既可能被“利用”直接选中,又可能在“探索”抽签中被抽中,因此总概率是两者之和。
    1−ε+ε∣A∣1 - \varepsilon + \frac{\varepsilon}{|A|}

智能体决策

训练完成后,博主不再纠结。到了任何一家店,翻开对应那行,找到分数最高的菜,照着点就行——整个过程只需要翻账本,不需要动脑思考。在强化学习中,这个阶段叫策略执行,查表操作叫贪心选择。

决策时,智能体对当前状态 s 执行查表:在这一行所有动作里找 Q 值最大的那个。这个操作写成公式就是 argmax。表格型方法的优势正在于此——训练时再复杂,部署时也只是“查一行、比大小、挑最大”的 O(动作数) 操作。

这里要区分两个策略:用来收集训练数据的是行为策略,通常用 ε-greedy(博主“偶尔尝新”地吃饭);更新公式中追求的是目标策略,是贪心的(账本永远记录“每道菜的最佳评价”)。因为采样用的策略和学到的策略可以不同,Q-learning 被称为“离策略”(off-policy)方法。一旦账本可信,博主就能切换成纯贪心模式去干饭。

a∗=arg⁡max⁡aQ(s,a)a^* = \arg\max_{a} Q(s,a)
通俗说明:挑出让 Q 值达到最大的那个动作,作为当前状态下的最优选择。
  1. 固定状态 s只取账本中当前状态对应的那一行进行查找。
    ss
  2. argmax 找最大比较这一行里所有动作的 Q 值,找出得分最高的那一个动作。
    arg⁡max⁡aQ(s,a)\arg\max_{a} Q(s,a)
  3. a\* 最优动作查表输出的最终结果,就是当前状态下最值得执行的动作。
    a∗a^*

训练收敛过程

账本不会一夜之间变准。博主每周探店一百次,同一道菜吃过几十遍后,分数才慢慢稳定下来。强化学习的训练也是这样:由许多轮(episode)组成,每轮都从起点走到终点(或走满固定步数),沿途不断触发更新。

训练刚一开始,TD 误差很大,Q 值上蹿下跳;随着同一状态动作对反复被访问,“新证据”和“旧估计”越来越接近,Q 值的改动幅度越来越小。收敛的标志有三个:一是 Q 表连续多轮的变化幅度低于某个阈值;二是从同一起点出发,策略走出的轨迹稳定一致;三是 TD 误差的均值趋近于零。

理论上,只要每个状态动作对都被无限次访问、学习率满足特定衰减条件,Q-learning 以概率 1 收敛到最优 Q 值。实践中我们很少追求数学上的“最优”,只要策略在任务上足够好,训练就可以停了——就像博主觉得“这家店点这道菜一般不踩雷”,就已经足够写进推荐清单。

账本上分数的变化轨迹,很像一条先陡后缓的曲线:前期改动大,后期趋平稳。训练收敛不是一个神奇时刻,而是“每格改动越改越小”的自然结果。

Q表局限性

如果博主把目标从“全城 100 家店”换成“全世界每一家店、每一道菜”,账本会立刻崩溃:页数写不完,索引也建不起来。这就是 Q 表最大的软肋——它假设状态和动作都是有限的、可枚举的。

现实世界中,机器人的位置坐标、无人车的速度、机械臂的角度都是连续小数。状态空间一旦连续,行数就是无穷的,Q 表直接无从建起。即使强行把连续值离散成格子,也会遇到维度灾难:状态每增加一维,格子数就按倍数爆炸,10 个维度、每维 10 个取值,就是 10 的 10 次方个格子,存不下也学不动。离散得粗会丢失精度,离散得细则样本量永远不够。

出路在哪?把“查表”换成“函数逼近”:DQN 用神经网络输入状态,输出每个动作的 Q 值估计。网络不需要记住每一个格子,而是从见过的状态中“总结规律”,遇到没见过的状态也能举一反三。这也是为什么理解了 Q 表再学 DQN 会事半功倍——DQN 其实就是“Q 表思想的深度学习版本”。

账本的思路没错,只是载体变了。从 Q 表到 DQN,不是抛弃“记录价值”的理念,而是把纸质账本换成了一台能概括世界的“智能大脑”。

AI 应用场景

场景一:贪吃蛇游戏的 AI 训练

阶段:训练 / 策略优化

解决的问题:传统规则贪吃蛇靠手工设计“躲墙、追食物”的规则,状态一复杂就失效。用 Q 表把蛇头方向、食物相对方位离散成有限状态,把“上下左右”四个按键作为动作,训练后 Q 表能记住每个局面下按键的预期收益,实现端到端的“看局面、查表、按键”。这就好比博主在账本里记下“排长队时点招牌菜更值”的经验。

具体案例:在 10×10 网格中训练贪吃蛇,状态离散为蛇头方向(4)×食物相对方位(8 个扇区)×是否有尾巴风险(2),共 64 个状态类型,Q 表规模为 64×4。训练约 10 万局后,蛇能主动绕开尾巴并走向食物,平均长度较随机策略翻倍。

场景二:推荐系统冷启动中的探索与利用

阶段:策略 / 在线决策

解决的问题:新用户上线时,推荐系统不知道该推热门还是推新品——推热门点击率高但没有惊喜,推新品有潜力但风险大。把用户按画像分桶(状态)、把推荐策略(推热销/推新品/推折扣)当动作,用 Q 表记录“这类用户推这种策略的收益期望”,再用 ε-greedy 平衡探索与利用,正是博主“吃老本还是尝新菜”的翻版。

具体案例:某电商首页轮播位在冷启动阶段使用 ε=0.3 的 Q-learning,状态为用户活跃度分桶 × 历史点击类目,动作为三种推荐策略,以点击率作为奖励。运行两周后,新用户次日留存提升约 6%,同时新品曝光量保持稳定。

场景三:仓储机器人小规模路径规划

阶段:模型训练 / 部署

解决的问题:在小仓库里,机器人要从货架 A 走到拣货点 B,途中要避开充电桩和障碍物。把仓库地面栅格化成网格,每格是一个状态,动作是四方向移动,Q 表学会“哪个格子往哪走最安全最高效”。仓库规模不大时,Q 表比路径规划算法更简单、更抗动态障碍变化。

具体案例:在 8×8 的栅格仓库中,起点 (0,0)、终点 (7,7),中间随机布置 5 个临时障碍。用 Q-learning 训练 2000 轮后,机器人每次重规划都能在 0.1 秒内给出绕障路径,成功率超过 95%。

Python 演示

python64 行
import random  # 4x4 grid world: 0=empty, 1=trap, 2=goalGRID = [    [0, 0, 0, 0],    [0, 1, 0, 1],    [0, 0, 0, 0],    [0, 1, 0, 2],]ACTIONS = ["U", "D", "L", "R"]DELTA = {"U": (-1, 0), "D": (1, 0), "L": (0, -1), "R": (0, 1)}  def step(state, action):    # take one step and return (next_state, reward, done)    r, c = state    dr, dc = DELTA[action]    nr, nc = r + dr, c + dc    if nr < 0 or nr > 3 or nc < 0 or nc > 3:        nr, nc = r, c          # hit wall, stay still    if GRID[nr][nc] == 2:        return (nr, nc), 1.0, True    # reach goal    if GRID[nr][nc] == 1:        return (nr, nc), -1.0, True   # fall into trap    return (nr, nc), -0.01, False     # empty cell, small time penalty  def pick_action(Q, state, eps):    # epsilon-greedy: explore with prob eps, otherwise exploit    if random.random() < eps:        return random.randrange(4)    return max(range(4), key=lambda a: Q[state[0]][state[1]][a])  def train(episodes=800, alpha=0.1, gamma=0.95, eps=0.3):    # Q[sr][sc][a]: expected return of action a in cell (sr, sc)    Q = [[[0.0 for _ in range(4)] for _ in range(4)] for _ in range(4)]    for _ in range(episodes):        state = (0, 0)        done = False        while not done:            a = pick_action(Q, state, eps)            nxt, reward, done = step(state, ACTIONS[a])            best_future = max(Q[nxt[0]][nxt[1]])            Q[state[0]][state[1]][a] += alpha * (reward + gamma * best_future - Q[state[0]][state[1]][a])            state = nxt    return Q  if __name__ == "__main__":    Q = train()    arrows = ["U", "D", "L", "R"]    print("learned policy (best action per cell):")    for r in range(4):        row = []        for c in range(4):            if GRID[r][c] == 2:                row.append("G")            elif GRID[r][c] == 1:                row.append("X")            else:                row.append(arrows[max(range(4), key=lambda a: Q[r][c][a])])        print(" ".join(row))
目的:在 4×4 网格世界中用 Q-learning 训练一个智能体,让它学会避开陷阱、走向终点,并打印出每个格子最有价值的动作。这就好比博主用 800 次探店,把账本填成了“每店每况下最值得点的菜”。
  1. if random.random() < eps:掷硬币决定是否探索:随机数小于 ε 就随机走一步。
  2. return max(range(4), key=lambda a: Q[state[0]][state[1]][a])利用模式:在 4 个动作里挑 Q 值最大的那个下标。
  3. best_future = max(Q[nxt[0]][nxt[1]])看下一状态四个动作里的最高 Q 值,作为未来的价值估计。
  4. Q[state[0]][state[1]][a] += alpha * (reward + gamma * best_future - Q[state[0]][state[1]][a])完整执行 Q 表更新公式:旧值 + 学习率 × TD 误差。
  5. for _ in range(episodes):反复跑完整轨迹,让 Q 表在迭代中逐步收敛到稳定值。

常见误区

误区Q 表一开始全是 0,模型不知道往哪走,肯定学不会。必须随机初始化或者设成很大的初值才行。

正解全零只是“一无所知”的中性起点,并不阻碍学习。探索机制(ε-greedy)会推动智能体去尝试,更新规则会让 Q 值从 0 慢慢被现实修正到真实水平。乐观初始化只是“鼓励探索”的加速技巧,不是必需品。就像账本空白不代表博主不会成长,吃几顿自然就有分数了。

为何常见:初学者容易把“初始值=信息量”混为一谈,以为 0 意味着“没有学习信号”,忽略了探索和更新才是学习的真正动力。

误区探索能带来更多新数据,把 ε 设成 0.9 甚至 1,模型能更快学会。

正解ε 太大会让智能体频繁随机游走,明明已经发现了好策略也难以利用,收集的大量轨迹都是低质量的。收敛反而更慢。工程上通常从 0.5~1.0 起步,随训练逐步衰减到 0.01 左右,先多探索、后多利用。

为何常见:只看到探索的信息价值,忽略了利用已有知识的效率价值。账本不是越厚越好,而是“该试的试过、该信的相信”才好。

误区某个动作的 Q 值大,就说明它永远是好动作,任何状态下都应该选它。

正解Q 值是状态和动作的二元函数 Q(s,a),“在这家店好吃的菜”不代表“在另一家店好吃”。决策时必须固定当前状态,再比较同一行中不同动作的值。脱离状态谈动作的好坏,就像脱离餐馆谈菜品评分,没有意义。

为何常见:日常思维中容易把“动作”当成独立于场景的事物来评价,忽略了 Q 表行与列的耦合关系。

误区更新公式里只看到 r,说明 Q-learning 只看即时奖励,不考虑未来。

正解更新式里有个 TD 目标 r + γ·max Q(s',a'),其中 max Q(s',a') 把“下一状态的最佳价值”折现回来。这意味着每次更新都在“站在当下、望向未来”,这也是 Q 值能编码长远眼光的原因。博主吃完这口,还会想想“这顿饭对下一顿的影响”。

为何常见:只盯着公式开头的 r 字面值,忽略了后面的状态价值项,把“时序差分”误读成了“单步查表”。

误区把连续区间划分得密一点,比如 0.01 一格,Q 表照样能用,只是内存大一点。

正解连续状态是无穷多个,等间隔划分即使可行,格子数也随维度指数爆炸——10 个维度每维 10 格就是 100 亿格,根本存不下也训练不完。这正是 DQN 用神经网络做函数逼近的原因:用“概括规律”替代“逐格枚举”。

为何常见:对“连续”与“离散”的本质差异缺乏感知,以为细粒度离散是万能解,忽略了维度灾难的指数增长。

面试题

Q1. Q 表中每一个单元格记录的是什么?

单选题 · easy

  • A.状态转移的概率
  • B.状态动作对的估值← 正确答案
  • C.单步奖励的大小
  • D.动作被选的概率

答案:B。Q 表以状态为行、以动作为列,每个单元格存放对应状态动作对的 Q 值,即“在这个状态下做这个动作的期望累计回报”。选项 A 是环境模型的内容,C 只是单步奖励而非累计价值,D 是策略概率而非价值,均不符合 Q 表的定义。

Q2. 在 epsilon-greedy 策略中,参数 ε 的主要作用是?

单选题 · easy

  • A.控制探索的概率← 正确答案
  • B.控制学习的速率
  • C.控制折扣的大小
  • D.控制表格的尺寸

答案:A。ε 是“冒险硬币”的偏置程度:以 ε 概率随机选动作去探索,以 1-ε 概率选当前 Q 值最大的动作去利用。学习速率由 α 控制,折扣大小由 γ 控制,表格尺寸由状态和动作的个数决定,都与 ε 无关。

Q3. Q 表初始化为全零通常意味着智能体?

单选题 · easy

  • A.无法进行任何学习
  • B.对价值一无所知← 正确答案
  • C.环境没有给出奖励
  • D.表格已经被填满

答案:B。全零初始化表示对每个状态动作对的价值估计都是“待定 0”,是中性起点。智能体仍然能通过探索采样、用更新公式逐步把 Q 值修正到真实水平。A 夸大了零初始化的危害,C 与奖励信号无关,D 明显错误——零值是估计值,不代表表格完成。

Q4. Q-learning 更新公式中学习率 α 取值过大可能导致?

单选题 · mid

  • A.收敛快速且稳定
  • B.波动较大不易收敛← 正确答案
  • C.表格内存占用变大
  • D.探索概率自动降低

答案:B。α 决定每次修订的步长,α 过大时单次更新受噪声奖励影响剧烈,Q 值会在真实值附近大幅震荡,难以收敛。α 通常取 0.01~0.1 的小值。α 只影响更新幅度,不影响内存和探索,故 A、C、D 错误。

Q5. 折扣因子 γ=0 表示智能体最关注?

单选题 · mid

  • A.眼前的即刻回报← 正确答案
  • B.长远的累计回报
  • C.全部状态的分布
  • D.动作数量的多少

答案:A。γ=0 时,未来所有奖励都被乘以 0,Q 值只等于当前一步的即时奖励,相当于博主“只在乎这一口的味道,不管明天的胃口”。γ 越接近 1,远期回报权重越大。因此 A 正确,其余选项与折扣因子无关。

Q6. 下列哪些元素直接构成了 Q 表?

多选题 · mid

  • A.所有状态的集合← 正确答案
  • B.所有动作的集合← 正确答案
  • C.状态动作对的估值← 正确答案
  • D.环境的转移概率

答案:ABC。Q 表是一个二维结构:行是所有状态,列是所有动作,每个格子存放对应状态动作对的 Q 值估计,所以 A、B、C 都是 Q 表的组成部分。转移概率属于环境模型(model-based 方法才需要),Q-learning 是无模型方法,因此 D 不构成 Q 表。

Q7. 行为策略(用于采样的策略)在训练中负责?

单选题 · mid

  • A.负责收集交互经验← 正确答案
  • B.决定表格的大小
  • C.控制学习率数值
  • D.计算折扣的因子

答案:A。行为策略(如 ε-greedy)决定智能体在环境中实际执行哪些动作,从而产生训练样本,即“用什么方式吃饭,账本才能有数据可记”。表格大小由状态动作空间决定,学习率和折扣因子是超参数,均与行为策略无关。

Q8. 状态空间连续时 Q 表失效的根本原因是?

单选题 · hard

  • A.状态数量无穷无尽← 正确答案
  • B.更新公式不再成立
  • C.奖励无法被定义好
  • D.动作数量变为负数

答案:A。Q 表需要为每个状态分配一行,而连续状态(如位置、速度)有无限多个取值,表格行数趋于无穷,内存与样本量都无法承受。更新公式本身仍然成立,奖励依然可以定义,动作数量也不会因此变为负数,故排除 B、C、D。

Q9. 针对 Q 表维度灾难,常用的缓解思想包括?

多选题 · hard

  • A.用函数逼近替代查表← 正确答案
  • B.对状态做离散化压缩← 正确答案
  • C.无限扩大表的存储区
  • D.用深度网络估计 Q 值← 正确答案

答案:ABD。维度灾难的本质是状态空间随维度指数膨胀。缓解思路一是对连续状态做合理的离散化压缩(只在关键维度细分),二是用函数逼近(如神经网络 DQN)从已知状态概括规律,从而泛化到未见状态。无限扩大存储只能缓解一时,无法对抗指数级增长,故 C 错误。

Q10. Q-learning 被称为离策略方法,原因是?

单选题 · extreme

  • A.行为策略来自 ε 贪心
  • B.目标策略来自贪心估计← 正确答案
  • C.学习率不随训练调整
  • D.折扣因子必须设为 0

答案:B。离策略指“采样用的行为策略”与“学习的目标策略”不同。Q-learning 用 ε-greedy 采样,但更新时用 max Q(s',a') 即贪心估计作为目标,目标策略是贪心的、行为策略是 ε-greedy 的,两者分离,故称离策略。A 只是描述了行为策略本身;C、D 与离策略定义无关。