《深度强化学习》全书总复习

《深度强化学习》全书总复习逐项覆盖权威目录,以公式、轨迹、交互实验和失败对照重建深度强化学习证据链。

为什么先冻结环境、轨迹与参数版本

、、、、、共同构成本页坐标。用环境、数据、目标、优化、策略版本和评价六本账串联十九章,要求每个算法都能回到同一条可重放轨迹。

阅读时把环境状态、采样数据、学习目标、优化参数和评价策略分成五份账。每一条转移至少保存状态、动作、奖励、下一状态、终止与截断标记、行为概率和采集时的参数版本;每一次更新保存目标值、损失、梯度范数、更新前后参数摘要和随机种子。这样才能判断改进来自正确算法,而不是信息泄漏、状态污染或评价仍在学习。

数学骨架

τ=(S0,A0,R1,,ST)\tau=(S_0,A_0,R_1,\ldots,S_T) yt=Rt+1+γ(1dt)bootstrap(St+1)y_t=R_{t+1}+\gamma(1-d_t)\operatorname{bootstrap}(S_{t+1}) θk+1=update(θk,Dk,yk)\theta_{k+1}=\operatorname{update}(\theta_k,D_k,y_k) claimtrace+counterexample+replay\text{claim}\Rightarrow\text{trace}+\text{counterexample}+\text{replay}

公式必须落实为shape与版本合同。奖励是标量,动作可以是离散索引或连续向量,终止转移的未来项固定为零;行为策略负责产生数据,目标策略负责定义学习目标,在线参数与冻结参数不能靠变量名猜测。先用一个两状态、两动作或两智能体样例手算,再运行批量训练。

最小实现骨架

def record_transition(env, policy, observation):
    action, logp, policy_version = policy.sample(observation)
    next_observation, reward, terminated, truncated, info = env.step(action)
    return {
        "observation": observation,
        "action": action,
        "reward": float(reward),
        "next_observation": next_observation,
        "terminated": bool(terminated),
        "truncated": bool(truncated),
        "behavior_logp": float(logp),
        "policy_version": policy_version,
    }
def one_step_target(transition, bootstrap_value, gamma):
    future = 0.0 if transition["terminated"] else bootstrap_value
    return transition["reward"] + gamma * future
def audit_update(before, target, loss, gradient, after):
    assert target.isfinite().all()
    assert loss.isfinite().all()
    assert gradient.isfinite().all()
    return {"before": before.digest(), "target": target.detach(),
            "grad_norm": gradient.norm(), "after": after.digest()}

这三段代码不替代具体算法,而是固定共同边界:环境只产生事实,目标函数只读取冻结转移,优化器只在审计通过后更新。章节中的DQN、SARSA、策略梯度、A3C、MADDPG或MCTS都必须映射回这套生命周期。

常见失败与回退

本章回顾

用环境、数据、目标、优化、策略版本和评价六本账串联十九章,要求每个算法都能回到同一条可重放轨迹。 最终掌握标准不是复述算法名,而是能说明每个量来自哪里、由哪版策略产生、在哪个边界归零、如何手算,以及故障样本应在哪一步被发现。通过标准是:随机抽取价值学习、策略学习、多智能体和应用各一章,均能手算首个目标、复现实验、注入单一故障并定位第一处证据分叉。

前后导航

讨论

评论区加载中…