强化学习及Python代码示例

1 概述

强化学习是机器学习里面的一个分支。它强调如何基于环境而行动,以取得最大化的预期收益。其灵感来源于心理学中的行为主义理论,既有机体如何在环境给予的奖励或者惩罚的刺激下,逐步形成对刺激的预期,产生能够最大利益的习惯性行为。结构简图如下:

因为强化学习考虑到了自主个体、环境、奖励等因素,所以很多人包括强化学习的研究者Richard Sutton 都认为它是人工智能中最高层的模型,其它深度学习、机器学习模型都是它的子系统。

在围棋界先后打败世界冠军的李世乭和柯洁额alphaGo就使用了强化学习模型,也正是这两次比赛,把人工智能这个概念传递给了大众。

2 结构

智能体(Agent):智能体的结构可以是一个神经网络,可以是一个简单的算法,智能体的输入通常是状态State,输出通常是策略Policy。
动作(Actions):动作空间。比如小人玩游戏,只有上下左右可移动,那Actions就是上、下、左、右。
状态(State):就是智能体的输入
奖励(Reward):进入某个状态时,能带来正奖励或者负奖励。
环境(Environment):接收action,返回state和reward。

3 思想

智能体对环境执行一个动作,环境接收动作后把当前状态和奖励返回给智能体;然后智能体根据环境返回的状态和奖赏执行下一个动作。

4 相关概念

探索(exploration): 不去选择最优解,而是随机选择
开发(exploitation):选择最优解
马尔科夫决策: 马尔科夫决策过程指你接下来的所有状态和决策只取决于你当前的状态和决策。比如你下象棋,你走第四步时,影响你决策和接下来状态的只有第三步。

5 执行过程

拿教电脑玩flappybird游戏来说明:
我们需要确定的两个东西是游戏,一个是电脑,
目的是电脑玩游戏。
游戏接收一个Action操作,Action是一个一维数组,比如a = [0,1] 当a[1] = 1的时候,我们让小鸟向上飞。如果是其它的数,小鸟下落。
游戏返回的是什么呢,游戏返回的是State,reward,terminal。terminal是一个布尔值True或者false,它和reward是对应的。当reward=-1时,terminal为True。reward取值有三种(1,-1,0.1)当crash时为-1,当越过障碍时为1,其它状态为0.1。而State的结构是类似80x80x4这样的图像。
也就是 currentState, reward,newState, terminal是一条数据被保存起来了。

好现在我们有了游戏的输入和输出。
看一下人的输入和输出。这里的人其实就是一个神经网络。
它是边训练,边迭代。
它的输入是state,这个有了。
但是我们还没有y啊 ,没有y我们怎么进行迭代呢。
y的计算方法是:如果停止了,y就等于本次的reward。如果这次没有停止,就等于这次的reward加上下次的价值Q
好了 有了y和x和神经网络的结构
我们的目标函数是二次函数。(y-QValue)^2。

6 推导

就是我们定义一个概念叫价值(Value),就是在某个时刻,某个状态下执行某个动作会得到一个回报(Reward),然后在下一个时刻执行某个动作又会得到一个回报,依次类推。
我们把这些回报累加起来:

这里的G相当于目前状态决策下的总回报。
如果我们把该回报的价值用一个价值函数来表示:
v(s)=E

  • 18
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
强化学习Python代码可以在多个开源项目中找到。其中,有两个常用的项目是可以实现强化学习的Flappy Bird游戏。第一个代码地址是https://github.com/yenchenlin1994/DeepLearningFlappyBird,这个项目提供了一个使用深度学习的方法来训练Flappy Bird游戏的智能代理的代码。第二个代码地址是https://github.com/songrotek/DRL-FlappyBird,这个项目则是使用深度强化学习算法来训练Flappy Bird游戏的智能代理。 在这两个项目中,代码实现了强化学习算法的不同部分,包括输入值的预处理和奖励的计算。在强化学习中,智能体通过与环境的交互来学习,并通过奖励来指导学习过程。在代码中,可以看到对输入值的预处理和对奖励的计算,这些都是强化学习算法中重要的组成部分。 需要注意的是,这两个项目中的代码是用Python语言编写的,可以根据需要进行修改和扩展。强化学习Python代码是相对复杂的,需要有一定的机器学习和编程经验才能理解和使用。因此,在使用这些代码之前,建议先学习强化学习的基本概念和算法,以及Python编程的基础知识。这样才能更好地理解和运用强化学习Python代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python_强化学习_Q-Learning算法_二维迷宫游戏](https://blog.csdn.net/qq_30803353/article/details/114783723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [强化学习Python代码示例](https://blog.csdn.net/u011649885/article/details/75276392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python实现Q Learning强化学习(完整代码)](https://blog.csdn.net/pythonyanyan/article/details/128723323)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值