单元四

第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
定 goal本课默认终点为 3。
步骤2
写 step更新位置并按是否到达给奖励。
步骤3
测两步验证大奖与小惩罚两种返回。
步骤4
口述闭环状态→动作→新状态+奖励,说给同桌听。

六、解题思路

任务:在一条线上移动,到终点得大奖,否则小惩罚。 先想清楚:输入是什么、处理后得到什么、屏幕上应出现什么。

本课主要用到:屏幕输出。

  1. 1明确任务「在一条线上移动,到终点得大奖,否则小惩罚。」:运行后你希望看到什么结果(文字、图形或计算结果)。
  2. 2用「打印」积木把结果说出来,确认屏幕上出现预期内容。
  3. 3写出判断条件:什么情况下走 A,什么情况下走 B。
  4. 4把可复用的一段动作做成函数,主程序里调用它。
  5. 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 才得大奖——用一次改参数实验证明规则在函数默认值里,不在喊口号里。

八、课堂练习

先完成两道正误判断,再做其余题目;选出后点「检查」。

  1. 判断:只更新位置忘记返回奖励;或把强化用到不能试错的真实危险任务。

  2. 判断:step 同时返回新位置与奖励;强化仅用于可安全试错场景。

  3. 判断:强化学习通过奖励信号改进策略。

  4. 判断:step 应同时给出新状态与奖励。

  5. 判断:到终点得大奖、否则小惩罚是本课设定。

  6. 选择:格子走到终点靠奖励 →

  7. 判断:所有校园任务都适合强化学习。

九、知识点讲解

强化学习靠试错与奖励信号改进策略。奖励设计会直接塑造行为。

先弄清本课输入与输出,再进编程练习对照现象。

十、编程练习

用下拉列表切换题目;下方 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))

十一、本节小结

你现在能实现 step(pos, action):更新位置并返回 (新位置, 奖励),到终点得 10、否则 -1;goal 参数可改验证;会解包并与 函数「choose_action」 拼成闭环;step(2,1)与step(0,1)锚点双过;四拍合练口令能说;从终点再迈步不得大奖。危险场景禁用强化。