单元四
第15课 小格子走到终点——试错迈步与即时奖励

一、任务目标
在一条线上移动,到终点得大奖,否则小惩罚。
二、知识点短列表
- 状态:当前位置等描述“现在怎样”。
- 动作:+1 或 -1 等如何移动。
- 即时奖励:这一步马上得到的分。
- 「step」 返回元组 (new_pos, reward)。
- 到 goal 大奖,否则小惩罚(本课设定)。
- action 本课用 +1/-1;写错成字符串会导致位置算不出来。
- 是否给大奖只看 「new_pos == goal」,与旧位置是几无关。
三、机器学习在说什么
强化学习通过奖励信号改进策略:好的状态转移被鼓励,差的被抑制。本课不训练复杂策略,只实现环境一步,让你看见“状态—动作—奖励”闭环的数据长什么样。
元组返回值很重要:调用者必须同时拿到新状态与奖励,才能更新记分本或策略。检查题用列表形式比较元组内容。
单元收束:选动作看奖励;走一步产生奖励;危险场景不用乱试。下一单元粗知深度学习:层层提特征。
把 step 看成环境的一句话翻译:你告诉我现在在哪、打算怎么动;我告诉你走到哪、这一步得几分。策略(如何选动作)可以以后变聪明,但环境规则必须先写对——规则写错,学得越勤错得越远。
两课合记:choose_action 解决“选哪个动作”,step 解决“动作发生后世界怎样变”。缺一环,强化学习故事讲不完。
四、相关积木怎么用
- 「new_pos = pos + action」。
- 「if new_pos == goal:」 奖励 10,否则 -1;用列表返回 [新位置, 奖励]。
- 迷你例子:「step」→(3,10);「step」→(1,-1)。
走查:输入 「step」 → 输出 (3,10),因为 2+1=3 且等于 goal,给大奖 10。输入 「step」 → 输出 (1,-1),因为新位置不是 3,只给小惩罚 -1。
解包练习:「new_pos, reward = step」 后,new_pos 应是 3,reward 应是 10。写反变量名会导致记分本把位置当成分数。与 choose_action 合练:先选动作,再 step,再更新 scores。
检查锚点:step(2,1)→(3,10)、step(0,1)→(1,-1)。身体演练两次喊分与代码返回值必须一致。
合练口令:选动作(choose_action)→走一步(step)→记奖励→必要时更新分数字典。四拍说顺,强化两课才算拼完。返回元组顺序固定为新位置在前、奖励在后。goal 默认 3,若把 goal 改成 5,便可以验证大奖条件跟着参数走。
从终点再迈出一步不得大奖:把 new_pos==goal 抄在 step 函数旁作易错提醒。
危险场景再次排除:化学危险步骤、过马路,不走强化试错。
想一想:若已在终点 3,再执行 action=+1,new_pos 变成几?还会不会得到 10 分?按本课代码规则回答。
强化两课拼图:choose_action 解决选哪个动作;step 解决动作发生后状态与奖励。缺一环故事讲不完。返回元组解包顺序写反会导致记分本错乱。用身体演练的两次喊分(10 与 -1)与代码返回值逐字对照。
step 是环境不是策略:只回答走完后位置与得分。与 choose_action 合成选动作→走一步→记分。返回顺序固定为(新位置, 奖励)。大奖看 new_pos==goal;从 3 再 +1 到 4 拿不到 10 分。
要点串讲:状态描述当前位置;动作改变状态;step 返回新位置与即时奖励;到终点大奖否则小惩罚;与 choose_action 合起来才是最小强化故事。本课过关标准:能演示一步转移并解释返回元组两个分量的含义。加练:从位置 3 再 +1,讨论是否仍给大奖(本课按 new_pos==goal 判定),体会奖励规则必须写精确。
五、操作步骤
六、解题思路
任务:在一条线上移动,到终点得大奖,否则小惩罚。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。
本课主要用到:屏幕输出。
- 1明确任务「在一条线上移动,到终点得大奖,否则小惩罚。」:运行后你希望看到什么结果(文字、图形或计算结果)。
- 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
- 3写出判断条件:什么情况下走 A,什么情况下走 B。
- 4把可复用的一段动作做成函数,主程序里调用它。
- 5对照参考积木(或代码)跑通后,只改一个参数,观察结果如何变化。
流程示意(可对照左侧文字)
七、图形块功能讲解
本课用到的 Mixly 图形块均已在前面的课讲过。请直接对照编程练习搭积木;若有遗忘,回到该积木首次出现的课页复习。
即时验算:step(2,1)→(3,10);step(0,1)→(1,-1)。已在 3 再 +1 到 4 时不得 10 分。说清返回值两个分量各管什么,再与 choose_action 拼成闭环口述。环境规则写精确。action 用整数 +1/-1。解包顺序勿反,新位置必须写在奖励前面。
环境规则写精确:goal 默认 3;大奖 10;否则 -1;action 用整数加减。改 goal 为 5 时,从 4 +1 才得大奖——用一次改参数实验证明规则在函数默认值里,不在喊口号里。
八、课堂练习
先完成两道正误判断,再做其余题目;选出后点「检查」。
判断:只更新位置忘记返回奖励;或把强化用到不能试错的真实危险任务。
判断:step 同时返回新位置与奖励;强化仅用于可安全试错场景。
判断:强化学习通过奖励信号改进策略。
判断:step 应同时给出新状态与奖励。
判断:到终点得大奖、否则小惩罚是本课设定。
选择:格子走到终点靠奖励 →
判断:所有校园任务都适合强化学习。
九、知识点讲解
先弄清本课输入与输出,再进编程练习对照现象。
十、编程练习
用下拉列表切换题目;下方 Mixly 默认显示图形化积木。请在 Mixly 工具栏点「运行」;「检查」读取 Mixly 代码自动判题。
参考代码(对照抄写到下方 Mixly)
def step(pos, action, goal=3):
new_pos = pos + action
if new_pos == goal:
reward = 10
else:
reward = -1
out = []
out.append(new_pos)
out.append(reward)
return out
print(step(2, 1))
print(step(1, 1))
正在载入编程环境
正在载入 Mixly 图形化编程环境…
十一、本节小结
你现在能实现 step(pos, action):更新位置并返回 (新位置, 奖励),到终点得 10、否则 -1;goal 参数可改验证;会解包并与 函数「choose_action」 拼成闭环;step(2,1)与step(0,1)锚点双过;四拍合练口令能说;从终点再迈步不得大奖。危险场景禁用强化。