机器学习作业3-Q学习完flappy bird

机器学习作业3

在Flappy Bird游戏中,可以使用Q学习来开发一个自动化过关机制。

主要思路如下:

  1. 状态表示:首先,需要定义游戏中的状态空间。在Flappy Bird中,状态可以包括小鸟的垂直位置y、水平距离到下一个管道的距离x以及小鸟的速度v。st = (y,x,v)
  2. 动作空间:定义可执行的动作。在Flappy Bird中,动作可以是点击屏幕或按下空格键,使小鸟向上飞。仔细考虑一下,对于每一个时刻,实际上有两个动作:小鸟向上飞一下a1和小鸟不向上飞一下(什么也不干)a2。
  3. 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)
  4. Q表初始化:初始化一个Q表,将所有状态-动作对的初始Q值设置为0。
  5. 奖励R:小鸟还存活+1,小鸟死了 -1000
  6. 训练过程:开始游戏,并在每个时间步骤中执行以下步骤:
  • 根据当前状态选择动作:根据当前状态和Q表选择最佳动作。可以使用ε-greedy策略,以一定的概率选择随机动作。

  • 执行动作并观察环境反馈:执行选择的动作,并观察下一个状态St+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))
      $$
  • 更新状态:将当前状态更新为下一个状态。St←St+1

  • 重复以上步骤直到游戏结束。

    1. 收敛:重复训练过程直到Q值收敛,即Q值不再发生显著变化。这种情况下小鸟应该可以一直生存而不死掉。但可能实际并不能达到收敛,所以可以人为设定训练的次数。
    2. 测试:使用训练好的Q表来进行测试。在每个时间步骤中,根据当前状态选择动作,并执行该动作。

通过不断的训练和更新Q值,基于Q学习的强化学习算法可以使得智能体逐渐学会在Flappy Bird游戏中选择最佳的动作策略,以最大化累积奖励并成功通过管道。


机器学习作业3-Q学习完flappy bird
http://thinkerhui.site/2023/12/26/课程学习/机器学习作业3-Q学习完flappy-bird/
作者
thinkerhui
发布于
2023年12月26日
许可协议