机器学习作业3-Q学习完flappy bird
机器学习作业3
在Flappy Bird游戏中,可以使用Q学习来开发一个自动化过关机制。
主要思路如下:
- 状态表示:首先,需要定义游戏中的状态空间。在Flappy Bird中,状态可以包括小鸟的垂直位置y、水平距离到下一个管道的距离x以及小鸟的速度v。s
t= (y,x,v) - 动作空间:定义可执行的动作。在Flappy Bird中,动作可以是点击屏幕或按下空格键,使小鸟向上飞。仔细考虑一下,对于每一个时刻,实际上有两个动作:小鸟向上飞一下a1和小鸟不向上飞一下(什么也不干)a2。
- Q值表示:为每个状态-动作对定义Q值,表示在特定状态下采取特定动作的预期回报。
Q-Table a1(向上飞一下) a2(什么都不干) s1(y1,x1,v1) q(s1,a1) q(s1,a2) s2(y2,x2,v2) q(s2,a1) q(s2,a2) … - Q表初始化:初始化一个Q表,将所有状态-动作对的初始Q值设置为0。
- 奖励R:小鸟还存活+1,小鸟死了 -1000
- 训练过程:开始游戏,并在每个时间步骤中执行以下步骤:
根据当前状态选择动作:根据当前状态和Q表选择最佳动作。可以使用ε-greedy策略,以一定的概率选择随机动作。
执行动作并观察环境反馈:执行选择的动作,并观察下一个状态S
t+1以及获得的奖励Rt+1。更新Q值:使用Q学习更新规则,更新当前状态下选择的动作的Q值。
- $$
q(S_t,A_t)←q(S_t,A_t)+α(R_{t+1}+γmax(q(S_{t+1},a))-q(S_t,A_t))
$$
- $$
更新状态:将当前状态更新为下一个状态。S
t←St+1重复以上步骤直到游戏结束。
- 收敛:重复训练过程直到Q值收敛,即Q值不再发生显著变化。这种情况下小鸟应该可以一直生存而不死掉。但可能实际并不能达到收敛,所以可以人为设定训练的次数。
- 测试:使用训练好的Q表来进行测试。在每个时间步骤中,根据当前状态选择动作,并执行该动作。
通过不断的训练和更新Q值,基于Q学习的强化学习算法可以使得智能体逐渐学会在Flappy Bird游戏中选择最佳的动作策略,以最大化累积奖励并成功通过管道。
机器学习作业3-Q学习完flappy bird
http://thinkerhui.site/2023/12/26/课程学习/机器学习作业3-Q学习完flappy-bird/