首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 Q-Learning 实现 FlappyBird AI

使用 Q-Learning 实现 FlappyBird AI

原创
作者头像
罗晖
修改于 2017-07-28 02:07:49
修改于 2017-07-28 02:07:49
3.4K1
举报
文章被收录于专栏:罗晖的专栏罗晖的专栏

1. Q-Learning算法

算法的详细介绍见文章:深度强化学习 ( DQN ) 初探

2. 实现FlappyBird AI 及效果

2.1 状态空间的表示(Q(s, a))

使用三维数组来表示Q(s, a), double Qmap[H_MAX][V_MAX][ACTION_MAX]

  • V 离下个管道竖直方向的距离
  • H 离下个管道水平方向的距离
  • ACTION 可能的操作:点击屏幕或者不点击

2.2 奖励(reward)

  • +1, 移动后小鸟还活着
  • +2, 穿过了柱子,小鸟还活着
  • -1000, 小鸟死了

2.3 学习

Q表初始化为0

步骤一:观察FlappyBird所处的状态,并执行最大化预期奖励的操作。 执行游戏帧播放循环。现在,FlappyBird处于下一个状态S’

步骤二:观察新状态S’与其相关的奖励,按照2.2中的规则来获取r值

步骤三:根据Q算法更新Q数组

Q[s,a] ← Q[s,a] + α (r + γ*V(s’) - Q[s,a])

训练大约1个小时,小鸟已经足够“智能”,可以一口气穿过1000个管道了。

3. Q-Learning 算法的局限性

对于FlappyBird,Q-Learning算法通过训练可以实现一个效果还不错的AI。主要是因为FlappyBird中的状态表比较小, 决定小鸟”跳”或者“不跳”,仅仅取决于与下一个管道之间的相对距离。在本例代码中,状态表(double QMap[QMAP_D_0][QMAP_D_1][QMAP_D_2])的大小为: 60 30 2 = 3600。 所以训练一个小时,就可以收到不错的效果了。 对于稍微复杂些的游戏, Q-Learning算法就显得力不从心了,如下面的游戏:

我们看看状态来如何表示:决定我方飞机飞行轨迹的因素有:屏幕中全部子弹的相对位置、全部道具的相对位置、以及之前几幅画面中的子弹和道具。 状态表的大小可用如下公式估算:

其中X表示屏幕像素宽度,Y表示屏幕像素高度, n表示决定飞机动作的物品个数,channel表示决定飞机动作的最近几幅画面。 可以看到,此例中,Q状态表太大,并且维度很难降低。

如何用有限的内存空间来表示近乎无穷的Q状态呢?答案是: 用函数拟合。 没错, 这就是 深度神经网络+ Q-Learning. 最有名的实现之一要属DQN了,参见: 深度强化学习 ( DQN ) 初探

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
请问源码在哪?
请问源码在哪?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
小白系列(6)| Q-Learning vs. Deep Q-Learning vs. Deep Q-Network
原文:小白系列(6)| Q-Learning vs. Deep Q-Learning vs. Deep Q-Network
一点人工一点智能
2023/09/07
8090
小白系列(6)| Q-Learning vs. Deep Q-Learning vs. Deep Q-Network
机器学习玩转Flappy Bird全书:六大“流派”从原理到代码
被Flappy Bird虐过么?反击的号角吹响了 作为一个曾经风靡一时的游戏,《Flappy Bird》曾经虐过很多的人类玩家。 而过去一段时间以来,好多人类借助AI技术把这款游戏“玩坏了”。量子位粗
量子位
2018/03/22
1.9K0
机器学习玩转Flappy Bird全书:六大“流派”从原理到代码
独家 | 使用Python的OpenAI Gym对Deep Q-Learning的实操介绍(附学习资源)
即使你不喜欢玩游戏,深度强化学习也很重要。只用看当前使用深度强化学习进行研究的各种功能就知道了:
数据派THU
2019/05/21
1.4K0
《深度剖析Q-learning中的Q值:解锁智能决策的密码》
在人工智能的飞速发展进程中,强化学习作为一个关键领域,为智能体与环境交互并学习最优行为策略提供了有效框架。其中,Q-learning算法凭借其独特的魅力,在机器人控制、自动驾驶、游戏AI等众多领域大放异彩。而Q-learning中的Q值,更是理解这一算法的核心关键,它如同智能体的“智慧密码”,指导着智能体在复杂环境中做出最优决策。
程序员阿伟
2025/01/29
1760
《深度剖析Q-learning中的Q值:解锁智能决策的密码》
PaddlePaddle版Flappy-Bird—使用DQN算法实现游戏智能
刚刚举行的 WAVE SUMMIT 2019 深度学习开发者峰会上,PaddlePaddle 发布了 PARL 1.1 版本,这一版新增了 IMPALA、A3C、A2C 等一系列并行算法。作者重新测试了一遍内置 example,发现卷积速度也明显加快,从 1.0 版本的训练一帧需大约 1 秒优化到了 0.15 秒(配置:win8,i5-6200U,GeForce-940M,batch-size=32)。
用户1386409
2019/06/06
7700
PaddlePaddle版Flappy-Bird—使用DQN算法实现游戏智能
Q-learning与深度Q网络(DQN)
Q-learning 是一种经典的强化学习算法,属于基于值的方法。它的核心思想是通过学习一个状态-动作值函数(Q函数),来帮助智能体在不同状态下选择最佳的动作。Q-learning是一种无模型的强化学习方法,这意味着它不需要了解环境的动态或转移概率,而是通过与环境的交互逐步更新Q值来学习最优策略。
LucianaiB
2025/01/27
3050
Q-Learning
假设机器人必须越过迷宫并到达终点。有地雷,机器人一次只能移动一个地砖。如果机器人踏上矿井,机器人就死了。机器人必须在尽可能短的时间内到达终点。
easyAI
2019/12/18
3.8K0
Q-Learning
研究了一堆Q-learning资料后,写了这份指南
“我从来不相信什么懒洋洋的自由,我向往的自由是通过勤奋和努力实现的更广阔的人生,那样的自由才是珍贵的、有价值的;我相信一万小时定律,我从来不相信天上掉馅饼的灵感和坐等的成就。做一个自由又自律的人,靠势必实现的决心认真地活着。
mixlab
2018/07/25
4890
研究了一堆Q-learning资料后,写了这份指南
TensorFlow强化学习入门(0)——Q-Learning的查找表实现和神经网络实现
在我这系列的强化学习教程中,我们将探索强化学习大家族中的Q-Learning算法,它和我们后面的教程(1-3)中基于策略的算法有一些差异。在本节中,我们先放下复杂而笨重的深度神经网络,首先在一个简单的查找表基础上实现第一个算法版本,随后我们再考虑如何使用TensorFlow将神经网络的形式集成进来。考虑到该节主要是回顾基础知识,所以我把它归为第0部分。对Q-Learning中发生的细节有所了解对于我们后面学习将策略梯度(policy gradient)和Q-Learning结合来构建先进的RL agent大有裨益。(如果你对策略网络更感兴趣或者已经掌握了Q-Learning相关知识,可以等译者后面的翻译或者查阅原文)
ArrayZoneYour
2018/02/21
5.4K1
TensorFlow强化学习入门(0)——Q-Learning的查找表实现和神经网络实现
强化学习(八)价值函数的近似表示与Deep Q-Learning
    在强化学习系列的前七篇里,我们主要讨论的都是规模比较小的强化学习问题求解算法。今天开始我们步入深度强化学习。这一篇关注于价值函数的近似表示和Deep Q-Learning算法。
刘建平Pinard
2018/10/11
1.4K0
强化学习(八)价值函数的近似表示与Deep Q-Learning
Q-learning解决悬崖问题
Q-learning是一个经典的强化学习算法,是一种基于价值(Value-based)的算法,通过维护和更新一个价值表格(Q表格)进行学习和预测。
lyhue1991
2023/09/05
4140
Q-learning解决悬崖问题
强化学习-理解Q-learning,DQN,全在这里~
本文简要地介绍强化学习(RL)基本概念,Q-learning, 到Deep Q network(DQN),文章内容主要来源于Tambet Matiisen撰写的博客,以及DeepMind在2013年的文章“Playing Atari with Deep Reinforcement Learning”。
西西木木
2020/06/05
2.1K0
强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
SARSA(State-Action-Reward-State-Action)是一个学习马尔可夫决策过程策略的算法,通常应用于机器学习和强化学习学习领域中。它由Rummery 和 Niranjan在技术论文“Modified Connectionist Q-Learning(MCQL)” 中介绍了这个算法,并且由Rich Sutton在注脚处提到了SARSA这个别名。
汀丶人工智能
2023/06/02
1.9K0
强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
强化学习(Reinforcement Learning)中的Q-Learning、DQN,面试看这篇就够了!
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/08/29
3.2K0
强化学习(Reinforcement Learning)中的Q-Learning、DQN,面试看这篇就够了!
强化学习系列案例 | 训练智能体玩Flappy Bird游戏
Flappy Bird是一款简单操作的手机游戏,在游戏中有一只飞翔的小鸟,在飞行中会遇到管道障碍物,玩家需要操控小鸟往上飞,飞行过程中不能坠地也不能触碰障碍物,不断的实行动作会飞的越来越高;如果不采取飞行动作,则会快速下降。因此玩家要使用合适的策略控制小鸟飞行,使小鸟不会坠地同时能顺利地穿越障碍物。本案例使用强化学习算法DQN训练智能体,使其最终学会玩Flappy Bird游戏。
数据酷客
2020/04/24
3.1K1
强化学习系列案例 | 训练智能体玩Flappy Bird游戏
通俗易懂谈强化学习之Q-Learning算法实战
前言:上篇介绍了什么是强化学习,应大家需求,本篇实战讲解强化学习,所有的实战代码可以自行下载运行。
Datawhale
2021/12/13
2.6K0
通俗易懂谈强化学习之Q-Learning算法实战
什么是 Q-learning?
它是强化学习中的一种 values-based 算法,最终是会学习出一个表格 Q-Table,例如在一个游戏中有下面5种状态和4种行为,则表格为:
杨熹
2020/03/20
1.3K0
什么是 Q-learning
在这个游戏中,agent 从一个给定的位置开始,即起始状态。 在不穿越迷宫墙壁的前提下,在每个状态时,都可以选择上下左右四个方向走一步,或者原地不动, 上下左右这四个动作的每一个都会将 agent 带到网格的一个新的单元格,即新的状态, 在迷宫中有一个网格处有宝箱,这个网格就是目标状态, 此外,在某些网格处还有一些炸弹, 我们的目标是找到一条没有炸弹的路径,以最快的速度从起始状态到达目标状态。
杨熹
2018/10/09
2.1K0
什么是 Q-learning
q-learning强化学习使用基础
马尔科夫链:奖励*折扣因子,R(t)=reward(1)+yR(t+1),马尔可夫链多次迭代后分布趋于稳定所以可以得到最优解
sofu456
2023/09/21
3210
q-learning强化学习使用基础
强化学习(九)Deep Q-Learning进阶之Nature DQN
    在强化学习(八)价值函数的近似表示与Deep Q-Learning中,我们讲到了Deep Q-Learning(NIPS 2013)的算法和代码,在这个算法基础上,有很多Deep Q-Learning(以下简称DQN)的改进版,今天我们来讨论DQN的第一个改进版Nature DQN(NIPS 2015)。
刘建平Pinard
2018/10/11
1.3K0
推荐阅读
相关推荐
小白系列(6)| Q-Learning vs. Deep Q-Learning vs. Deep Q-Network
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档