ConvNetJS 强化学习交互实验

说明

欢迎来到赛博进化实验室:一起见证 AI 的“求生训练营”。

在这个 2D 赛博迷宫中,你将亲眼看到一个什么都不懂的智能体(Agent), 仅依靠试错和反馈,一步步学会“哪里有奖励、哪里有危险”,最终进化出自己的生存策略。

数字感官 · 9 只“眼睛”
智能体头部周围布置了 9 只放射状的“数字感知器”。 每一只眼睛都会朝自己的方向采集 3 个距离信号
到最近墙壁的距离、到最近红色苹果(正奖励)的距离、到最近绿色毒药(负奖励)的距离。
最终形成一个 9 × 3 = 27 维 的感知向量,作为神经网络的输入。
行动空间 · 5 种转向动作
每一时刻,智能体都要在 5 种动作 中二选一:
保持直行、略向左转、略向右转、向左急转、向右急转。
这些动作会驱动两侧“轮子”的转速差,从而改变前进方向—— 它必须在“撞墙吃苦头”和“吃到苹果得奖励”的反复体验中,学会如何合理选择动作。
学习过程 · 趋利避害的进化
起初,智能体几乎像“瞎跑的小白”,在迷宫里乱撞。 随着不断获得奖励(吃苹果)和惩罚(撞墙或吃到毒药), 深度 Q 网络会逐步调整参数,让它更偏好“高长期回报”的动作序列。
通过右侧控制面板,你可以观察它从“笨拙乱跑”到“主动绕开毒药、精准吃苹果”的整个进化过程。

核心参数小抄

下方的神经网络和训练过程由一组关键超参数控制。你可以一边阅读它们的含义,一边用右侧的“无代码调参面板”做小实验。

建议玩法:先只改 gammaepsilon_min,观察小车行为和右侧奖励曲线的变化,再同时调整学习率和经验池大小。

思考题:如果把 gamma 调大 / 调小,会让智能体更偏向哪种行为?如果 epsilon 一直很大,它能学到稳定策略吗?

状态可视化

使用当前设置训练大约需要 10 分钟。如果你没有耐心等待,可以向下滚动使用极速模式加速训练过程。
左侧:当前输入状态(其实看起来并没有太多信息)。右侧:随时间变化的平均奖励 (随着智能体平均水平的提高,这条曲线应该整体向上)。


强化学习三要素

  • 状态(State):当前看到的“画面信息”,例如周围墙壁、苹果和毒药的位置。
  • 动作(Action):智能体可以做出的 5 种转向选择。
  • 奖励(Reward):吃到苹果 +1,撞墙或吃到毒药 −1,用来评价这一步好不好。

智能体的目标:通过不断试错,找到一套让长期累计奖励最大的行动规则(策略)

如何阅读这些图?

  1. 大迷宫画布:观察小车如何从乱撞,逐渐学会绕开墙和毒药,多吃苹果。
  2. 条形图(左):表示当前输入状态的 59 维编码,供神经网络“感知世界”。
  3. 曲线图(右):横轴是时间步,纵轴是平均奖励;曲线整体上升说明策略在变好。
  4. 下方彩色方块:展示 Q 网络每一层的激活,蓝/红代表对不同动作的偏好强弱。

可以一边看这些图,一边思考:当奖励变化时,网络内部是如何随之调整的?

控制面板

使用下方按钮调节仿真速度,并控制智能体的学习过程,观察它在赛博迷宫中的行为变化。


数据导入与导出

通过 JSON 保存当前网络状态,或从预先保存的 JSON 中恢复网络参数,方便进行实验对比与结果复现。

提示:下方文本框中已预填一个表现良好的预训练网络数据。

这个案例想教你什么?

建议课堂引导:先不调任何参数,只让学生静静观察小车从“乱撞”到“变聪明”的过程,再提问:
“它究竟学会了什么?”

如何用它理解强化学习?

课堂小练习:让学生分组尝试不同的 gamma / epsilon_min,记录谁的曲线上升最快,
再一起讨论“为什么会这样”。