跳过正文
  1. 文章/

30 Days of Vibe Coding - Day 16 - 井字棋:进化版

Nuno Coração
作者
Nuno Coração
Principal Product Manager @ Docker
目录
30 Days of Vibe Coding - 这篇文章属于一个选集。
§ 16: 本文

Day 16。如果AI对手真的能从输给你的比赛中学习呢?

不是那种从一开始就完美下棋的极小化极大算法。也不是随机走子的。而是一个一开始很笨、观察什么有效、然后逐渐学会怎么打败你的东西。这就是Q学习。我想把它做进最简单的游戏里。

提示词
#

“做一个带Q学习AI的井字棋游戏,AI从每局游戏中学习,把大脑保存到localStorage,并显示实时统计数据”

自己来试试这个游戏 点这里

怎么做的
#

Watchfire把这个拆成了4个任务:

  1. 搭脚手架 - Next.js项目的基本游戏棋盘和布局
  2. Q学习AI - epsilon-greedy策略和localStorage持久化Q表
  3. 统计仪表盘、AI大脑可视化、批量自我对弈的训练模式
  4. 难度模式、胜利走法高亮、音效和最终打磨

第一个任务给了我一个可以玩的井字棋游戏。没什么特别的。第二个任务是事情变得有趣的地方,因为现在AI在每局游戏后实际在更新状态-动作价值了。赢它一局,它就会调整。用同样的方式赢它两次,它就开始封堵那步棋了。Q表随着每场比赛不断增长。

任务3和4把它从一个学习实验变成了你可以真正看到进化的东西。大脑可视化显示每个格子的Q值,统计仪表盘跟踪胜/负/平的比率变化,训练模式让你运行数千局自我对弈来快进AI的学习过程。

我得到了什么
#

游戏棋盘

AI一开始烂透了。 你的前几局游戏,它几乎是随机下的。没有策略地选格子,掉进同样的陷阱,以明显的方式输掉。这就是关键所在。它在探索游戏空间,尝试没试过的走法,从零开始构建Q表。

然后它就不烂了。 大概50到100局左右,你会注意到它开始封堵你的制胜走法。几百局之后,它能稳定地下成平局。用几千局自我对弈训练一下,祝你好运想赢它。从一无所知到游刃有余的进步过程,看起来真的很有趣。

AI训练模式

大脑可视化是最棒的部分。 你可以把鼠标悬停在格子上,看到AI为每个位置学到的Q值。高正值意味着AI认为这步棋会带来胜利。负值意味着它学会了在当前状态下避开那个格子。你真的是在直接看AI对游戏的理解,而且随着它玩的越多,你可以看到那些数字在变化。

批量训练让人上瘾。 有一个训练模式,你可以运行100、1,000或10,000局自我对弈。AI和自己对战,从双方学习。你可以实时看到Q表的大小随着它发现新的棋盘状态而增长。10,000局之后,大脑已经见过数千个独特的局面,对每一个都有了坚定的看法。

统计仪表盘

一切都是持久化的。 关掉标签页,明天回来,AI还记得它学到的一切。Q表、游戏统计、连胜记录。全都保存在localStorage里。你的AI对手有永久记忆,这意味着你在几天几周内玩得越多,它就越强。

难度模式改变探索率。 简单模式保持较高的epsilon(随机性),所以AI会犯更多错误。困难模式降低epsilon,所以它几乎总是选它认为最好的走法。这让你可以控制AI有多依赖已学到的东西,还是去尝试新事物。

进行中的游戏

小细节很重要。 获胜线条会被高亮显示。走棋、赢棋、输棋和平局时都有音效。还有最近的游戏历史,以可视化连胜追踪器的形式显示你最近20场的结果。整个东西感觉像一个正经的游戏,而不只是一个技术演示。

数据说话
#

  • 4个Watchfire任务 从脚手架到打磨
  • Q表增长 到批量训练后的数千条目
  • 3个难度模式 控制探索/利用的权衡
  • 完整localStorage持久化 保存AI大脑和所有统计数据
  • 零硬编码策略 AI知道的一切都是自己学的

来试试
#

来玩井字棋:进化版

玩几局,看看AI怎么进步的。或者按下训练按钮,让它自学去吧。

Day 16 总结
#

井字棋是一个已解决的游戏。任何完美的玩家都能每次逼平。这恰恰是它成为强化学习绝佳试验场的原因。游戏足够简单,AI可以在合理数量的游戏中探索整个状态空间,你可以实际看到它收敛到最优策略。

我喜欢这个项目的地方在于,它让机器学习变得可以触摸。你不是在教科书里读Q学习,也不是在Jupyter notebook里看训练损失曲线。你是在和一个明显变聪明的AI对战。你可以看到它的Q值,看着它的大脑成长,感受第10局和第10,000局之间的差别。

整个东西都在浏览器里运行,没有后端,没有Python,没有TensorFlow,只有TypeScript和localStorage——这让它感觉很容易上手。Q学习是最简单的强化学习算法之一,但在一个你已经理解的游戏上看到它实时运行,会让这个概念以理论永远做不到的方式深入人心。


这是30 Days of Vibe Coding的第16天。跟着我一起见证如何用AI辅助编程在30天内发布30个项目。

30 Days of Vibe Coding - 这篇文章属于一个选集。
§ 16: 本文

相关文章