说明
欢迎来到赛博进化实验室:一起见证 AI 的“求生训练营”。
在这个 2D 赛博迷宫中,你将亲眼看到一个什么都不懂的智能体(Agent),
仅依靠试错和反馈,一步步学会“哪里有奖励、哪里有危险”,最终进化出自己的生存策略。
数字感官 · 9 只“眼睛”
智能体头部周围布置了 9 只放射状的“数字感知器”。
每一只眼睛都会朝自己的方向采集 3 个距离信号:
到最近墙壁的距离、到最近红色苹果(正奖励)的距离、到最近绿色毒药(负奖励)的距离。
最终形成一个 9 × 3 = 27 维 的感知向量,作为神经网络的输入。
行动空间 · 5 种转向动作
每一时刻,智能体都要在 5 种动作 中二选一:
保持直行、略向左转、略向右转、向左急转、向右急转。
这些动作会驱动两侧“轮子”的转速差,从而改变前进方向——
它必须在“撞墙吃苦头”和“吃到苹果得奖励”的反复体验中,学会如何合理选择动作。
学习过程 · 趋利避害的进化
起初,智能体几乎像“瞎跑的小白”,在迷宫里乱撞。
随着不断获得奖励(吃苹果)和惩罚(撞墙或吃到毒药),
深度 Q 网络会逐步调整参数,让它更偏好“高长期回报”的动作序列。
通过右侧控制面板,你可以观察它从“笨拙乱跑”到“主动绕开毒药、精准吃苹果”的整个进化过程。
核心参数小抄
下方的神经网络和训练过程由一组关键超参数控制。你可以一边阅读它们的含义,一边用右侧的“无代码调参面板”做小实验。
- num_inputs = 27:9 只眼睛 × 每只 3 个距离信号,描述当前“状态”。
- num_actions = 5:5 种可能的转向动作,对应智能体的“动作空间”。
- gamma(折扣因子):平衡“眼前奖励”和“远期收益”,越接近 1 越看重长远。
- epsilon(探索率):训练早期更爱随机乱试,后期逐渐减少随机性,专注现在学到的好策略。
- learning_rate(学习率):每次根据奖励更新神经网络参数的步子大小。
建议玩法:先只改 gamma 或 epsilon_min,观察小车行为和右侧奖励曲线的变化,再同时调整学习率和经验池大小。
思考题:如果把 gamma 调大 / 调小,会让智能体更偏向哪种行为?如果 epsilon 一直很大,它能学到稳定策略吗?
状态可视化
使用当前设置训练大约需要 10 分钟。如果你没有耐心等待,可以向下滚动使用极速模式加速训练过程。
左侧:当前输入状态(其实看起来并没有太多信息)。右侧:随时间变化的平均奖励
(随着智能体平均水平的提高,这条曲线应该整体向上)。
强化学习三要素
- 状态(State):当前看到的“画面信息”,例如周围墙壁、苹果和毒药的位置。
- 动作(Action):智能体可以做出的 5 种转向选择。
- 奖励(Reward):吃到苹果 +1,撞墙或吃到毒药 −1,用来评价这一步好不好。
智能体的目标:通过不断试错,找到一套让长期累计奖励最大的行动规则(策略)。
如何阅读这些图?
- 大迷宫画布:观察小车如何从乱撞,逐渐学会绕开墙和毒药,多吃苹果。
- 条形图(左):表示当前输入状态的 59 维编码,供神经网络“感知世界”。
- 曲线图(右):横轴是时间步,纵轴是平均奖励;曲线整体上升说明策略在变好。
- 下方彩色方块:展示 Q 网络每一层的激活,蓝/红代表对不同动作的偏好强弱。
可以一边看这些图,一边思考:当奖励变化时,网络内部是如何随之调整的?
控制面板
使用下方按钮调节仿真速度,并控制智能体的学习过程,观察它在赛博迷宫中的行为变化。
数据导入与导出
通过 JSON 保存当前网络状态,或从预先保存的 JSON 中恢复网络参数,方便进行实验对比与结果复现。
提示:下方文本框中已预填一个表现良好的预训练网络数据。