10 岁以上 · 进阶 · Scratch
王牌对战:让 AI 自己学会出牌
Top Trumps
你会教电脑玩一个数字卡牌对战游戏(用英国历代国王王后的数据做的牌)。你不告诉它任何规则,只让它从一局局对战里自己摸索出「该出哪个数字最容易赢」,越玩越强。
🧠背后的 AI 概念
每张牌上有好几个数字(在位年数、即位年龄、寿命……),有的比大才赢、有的比小才赢。你不写规则,而是把「你赢的那些出牌选择」当成例子喂给电脑,让它从数字规律里学会怎么出牌更可能赢。例子越多,它越强——这让你直观体会「数据量」对 AI 的影响,也是 AI 从数据里「找规律、做决策」的入门。
动手教程
打开 machinelearningforkids.co.uk,点「Get started」再点「Log In」登录(没有账号就找老师注册一个)。
点顶部菜单的「Projects」,点「Copy template」按钮,导入「Kings & Queens Top Trumps」项目模板,然后点进这个项目。
点「Train」看一眼:模板已经建好了 5 个空的训练数据桶,分别对应牌上的 5 个数字——在位年数(reign)、即位年龄(ascension)、寿命(death)、配偶数(spouses)、子女数(children)。
点右上角「< Back to project」返回,点「Make」→「Scratch 3」→「straight into Scratch」(页面会提醒还没训练模型,没关系,我们要先用 Scratch 收集数据)。进去后点「Project templates」,加载「Top Trumps」模板。
点全屏按钮和绿旗开始玩:上半屏是你的牌,选牌上一个数字(点旁边的紫色按钮),电脑的牌才会翻开,比大小定输赢,赢了就继续由你选。玩几局,猜猜电脑是怎么选的。
退出全屏,点左侧的「Stage」看代码:原来电脑每次都固定选「reign」。把它改成从 1(reign)到 5(children)之间随机选,再玩几局看看——随机出牌的电脑并不聪明,接下来让它从对局里学习。
还在 Stage 上,拖出「添加训练数据 add training data」积木,把你牌上的 5 个数字填进去,再用一个「如果 if」积木包住它,条件是「你选的是 reign」。右键复制成 5 份,分别对应 5 种选择(条件用「数据 Data」里的橙色变量),每个 if 里的 add training data 都选对应的数据桶。
把这段代码接到「每次你赢一手牌」的位置:你赢的时候,你牌上的数字和你做出的选择就会被记成一条训练例子。接好后先回 Train 页面确认训练数据是空的(误点积木会产生空数据,有就删掉)。
回到游戏全屏开玩,一直玩到你的分数到 10 分——这会给每个数据桶攒下例子。玩完记得「File」→「Save Project」保存项目。
保持 Scratch 窗口开着,回到平台点「< Back to project」→「Train」,确认你的 10 条获胜出牌都已经进了对应的桶。再点「Learn & Test」:页面会告诉你例子还不够,暂时不能训练。
回到 Scratch 继续玩、继续攒例子,时不时回「Machine learning models」页面刷新,直到「Train new machine learning model」按钮出现——这个过程让你直观看到「数据量」是训练的前提。
回到 Scratch 的 Stage,拖出「识别数字 recognise numbers … (label)」积木,把电脑牌上的 5 个数字填进去,用 if 积木判断识别结果是哪个桶,就「set your-choice」为对应的选择。复制成 5 个连在一起的 if,然后用这段机器学习代码替换掉原来的「随机出牌」积木。
保存项目(「File」→「Save to your computer」),点绿旗和训练好的模型对战到 20 分。之后反复「玩更多对局攒例子 → 回 Learn & Test 点 Train new machine learning model → 再对战」,观察电脑是不是越赢越多。
最后一步升级:在 Stage 里找到「当接收到 results-state」的代码,复制「如果 result = WIN」分支,改成「如果 result = LOSE」,并把里面 5 个 add training data 积木的「you」都改成「computer」——这样电脑赢的牌也会被记成例子,它能从自己的胜利中学习,进步更快。
对比一下成绩:官方示例里,随机出牌的电脑 100 局只赢 28 局,用 500 个例子训练后能赢 73 局。和孩子聊聊:为什么例子越多电脑越强?为什么练到一定程度就不再变强了?
准备好动手了?
跟着上面的中文教程一步步做;英文原版 worksheet 可留作对照。