利用人工智能玩智龙迷城,神魔之塔,转珠游戏(一)强化学习介绍

本文介绍了如何利用强化学习解决转珠游戏的算法问题。通过Q-learning算法,结合神经网络,训练电脑玩家能预测最佳操作。文中给出了伪代码,并简单解释了神经网络的学习过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

强化学习

为什么是强化学习?

为了方便理解,这里就用最白话的方式说明
在之前的转珠算法中,想要实现记忆化存储,即记录每个状态下每个动作的结果,通过查表即可直接获取数据。
举个例子,比如版面是:
1 1 2
2 2 3
3 3 4

将第二行第三个数字向下移动一格就可以完成一次combo(reward)
从数据角度来看 就相当于

动作1 动作2
状态1(112,223,334的版面) (2,3)的珠子往下移动一格

所以我们在状态1的时候采取了动作1,得到一次消除,所以Q(状态1,动作1) = 1

在3X3的版面下,需要存多少个映射?
答案是 63*3 *actions (actions=总动作数)
也就是在3X3的版面下需要存储10e+个状态值(虽然大部分重复可以过滤),一旦扩展到5X6版面,基本上是不可能通过这种方法得到结果(也没有足够的内存保存它)

这时候需要借助神经网络的力量了
如果你不了解神经网络,建议去了解一下相关知识
懒的话,你就把它想象成一种会学习的机器,通过让他学习知识,他会对结果做出一种猜测

所以我们可以利用神经网络,替代这种的映射表格。
一般的神经网络学习,需要通过告诉电脑正确的结果(有监督学习),但是强化学习的其中一个优势就是可以让电脑自己找答案(无监督学习),通过时间让它越来越聪明。

回到这个问题上来,也就是我们通过强化学习,可以训练一个电脑玩家,他会对当前版面的每一步操作做一个估计,然后选取它认为最好的一个。当然强化学习不止于此,他可以对后续连续状态做出预测。因为转珠游戏不是三消游戏,这也是选择强化学习的原因。

Q-learning

我们先想想为什么会有这么多映射?
因为涉及了连续未来状态的预测,而且我们不是要移动一步,我们要连续移动好几步!
移动一步的话也就4种动作值,但是移动10步就要410的可能性!

所以我们介绍一种算法解决它:q-learning!
先看看这个例子:

○ ? ?
× × ?
× ? ?
我们从○起手,一步可能做不到消除,但是我们可以通过↓→两步操作达到一次消除!

也就是说Q(状态1,↓)=0,但是Q(状态1,↓→)=1
所以我们可以把第二部操作获得的奖励乘以一个数加给第一步(可以理解为第一步虽然没拿到奖励,但是给奖励做了铺垫,这一步不是毫无意义的!)
这其实就是q-learning的理念,我们来看看实际算法

在这里插入图片描述
其实核心就是更新的时候,拿实际得到的值(乘y),减去之前状态预测出来的值,用这个差值去学习。然后为了避免陷入局部最优,加了一个e-greedy,就是不管结果如何有10%的概率一定随机选操作.

然后不停的训练下去,我们的Q就有了状态积累,这样机器就有了很强的洞察力
比如转珠,虽然走某一步没有消除,但是这可能是最优解的必经之路

伪代码

q-learning不适用转珠,只是作为知识科普,所以只给一个伪代码用于学习

初始化 Q = {};
while Q 未收敛:
随机创建版面S,开始转珠
while S != 最大combo && S.step<最大限制步数:
使用策略π,获得动作a=π(S)
使用动作a移动珠子,获得新位置S’,与奖励R(S,a)
Q[S,A] ← (1-α)Q[S,A] + α(R(S,a) + γ* max Q[S’,a]) // 更新Q
S ← S’

虽然解决了对未来预测的问题,但是映射表格还是太多了!
但是我们可以借助神经网络来解决!

最最最最最简单的神经网络

如果你知道神经网络,可以跳过,这边用最简单的代码让大家了解一下神经网络做了什么

比如现在有一个功能是输出y=2a+b+1

def func1(a,b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值