|
“Tetris AI”意在提供一个易于识别的通称,不代表 AI 是官方的算法或隶属于任何(官方的)俄罗斯方块游戏。
|
Tetris-ai 是一个 Python 方块 AI。
这个 AI 针对俄罗斯方块的基本玩法做强化学习,自我训练决策提高总消行数,在 GitHub 上获得了较多的星数。
这个 AI 曾被 Beatris (Python, 2019) 沿用推广至敌对方块研究领域。
基本信息
制作者:nuno-faria(第一作者)、Nick Linker
Python 模块需求:Tensorflow、Tensorboard、Keras、Opencv-python、Numpy、Pillow、Tqdm
工作原理
智能体(Agent):由 AI 算法操纵的方块游戏参与者。
关键评分标准[注 1]:当前方块的消行数、洞数[注 2]、总落差[注 3]、方块堆高度。
强化学习:先随机取落点,在有限的序列中保存场况和对应的评分,每一轮最后从整个序列当中随机取一段自测。
Q-Learning 训练:只要方块锁定后不致死,方块落点的评分就由锁定前后的两个场况共同算出。[注 4]
折扣系数:锁定后场况的评分计算结果稍作扣除(默认 × 0.95)。
最佳决策:按场况预计所有落块方案的评分,取评分最高的方案。
探索学习:在已经强化学习出最佳决策的前提下,智能体并不总是取最佳决策方案,而是继续做一部分随机落块获取探索性数据。
ε 停止值:用来决定探索学习的长度,随机落块频率均匀递减(默认 N = 2000、ε = 1500)。[注 5]
方块环境配置
由 tetris.py 文件定义,使用标准的 10×20 场地,未锁定的方块是水色,已锁定的方块是粉色。
方块逆时针旋转,O 只有一种朝向,I 两种,其他方块四种:
注释
- ↑ 共有九个标准,此处取作者多次测试后认定的最重要的四个标准
- ↑ 在这个学习体系中,“洞”被定义为上方存在砖格的空格
- ↑ 先按最高砖格决定每一列的高度,再计算 9 处列间落差的和
- ↑ 典型表现:不立刻消一,凑出消二和消三
- ↑ 例:假设 N = 120,ε = 100,那么第一局 100% 随机落块,第 40 局 60% 随机落块,最后 20 局只按学习结果落块。
外链