强化学习实验

本文通过一个猫鼠游戏的实例,详细介绍了强化学习的原理、困难、方法,并提供了在Anaconda环境下安装TensorFlow与Spyder IDE的步骤。实验中,通过调整参数观察智能鼠标从非智能到智能的进化过程,揭示了强化学习的有效性。
摘要由CSDN通过智能技术生成

一.实验标题

强化学习实验

二.实验目的

了解并学习与强化学习有关的基本知识与实验方法。

三.强化学习的原理和思想

一.Reinforcement Learning的概念
机器学习可以分为三类,分别是 supervised learning,unsupervised learning 和reinforcement learning。而强化学习与其他机器学习不同之处为:


没有教师信号,也没有label。只有reward,其实reward就相当于label。
反馈有延时,不是能立即返回。
相当于输入数据是序列数据。
agent执行的动作会影响之后的数据。


强化学习的关键要素有:environment,reward,action 和 observation(state)。有了这些要素我们就能建立一个强化学习模型。强化学习解决的问题是,针对一个具体问题得到一个最优的policy,使得在该策略下获得的reward最大。所谓的policy其实就是一系列action。也就是sequential data。 
强化学习可用下图来刻画,都是要先从要完成的任务提取一个环境,从中抽象出状态(state) 、动作(action)、以及执行该动作所接受的瞬时奖赏(reward)。
 


二.Supervised Learning vs. Reinforcement Learning
 
拿下围棋来举例,监督学习的思路是,人类在给出training set的时候,每个training data包含了一个残局,已经告诉它在这样的情况下应该怎样下棋。但是这样的缺陷是,有些情况连人类都不知道正确的是什么(比如下围棋中最厉害的棋手也不能保证下一步的子是最优的)。这种策略类似于学校里学生向老师学习,但是不可能超过老师。
而强化学习的思路是,人类不会教他怎么下棋,但是它会和人类来下棋,当完成一盘棋的时候,如果赢了,就会得到一个positive reward,输了就会得到一份negative的reward。Agent的目标是,最大化reward。但是尽管赢了,它也是不知道过去的哪步是好的,哪几部是不好的。这种策略类似于人在社会上学习,你知道结果,但是你可能很难确定你哪几步做得好,哪几步做得不好,这是一种从经验中学习的过程。在下围棋这个task中,training是通过和人对战,但是由于需要大量的training,一般是通过两个agent互战来实现的。


三.Reinforcement Learning的困难之处
 
概括的讲就是强化学习需要agent有远见,不能仅仅只考虑这一步的最优解,而应考虑这个过程的最优解。


四.Reinforcement Learning Approach的分类
 
我只了解了policy based approach,即通过training获得一个rational的actor。以下简要介绍。
Value based Approach 中一个很有名的是Q-learning,这个我目前还不会。


五.Policy Based Reinforcement Learning Approach
Actor在下图中就是那个将observation映射到action的函数π,而reward就是用来从a set of functions中选出一个满意的actor。
 
我们可以使用神经网络来作为函数集合,以电玩space invader为例,输入就是一张图片,输出是每个操作的可能性。注意这里的输出是stochastic的,意味着在训练完成后,reward高的操作会更有可能执行,但是reward低的操作也有一定几率执行,而不是说每次都只会选择expect reward最高的动作执行。
 
在之前的监督学习中,我们判断actor的好坏是通过实际给出几个example,判断hypothesis和真实的target的error的大小而确定的,error较小的为更好的actor。

而在强化学习中,判断一个actor的好坏是通过让它执行一系列的action,通过加总的reward来评估actor的好坏,reward越大越好。而且,由于环境是不确定的,同样举space invader游戏的例子,也就是同样的actor在不同的游戏次数下,可能会碰见不同的外星人,这个是由游戏自身的随机性决定的。因此,同样的π_θ (s)会产生不同的R_θ,因此需要重复运行同一款游戏获得一个期望值R_θ。
 
定义为一系列的{observation, action, reward}的序列(从游戏开始到结束)。R()为总的reward。如下:
 
由于我们之前说过,NN的输出是一个vector of probability of each op,因此Actor的输出与最后产生的动作之间具有不确定性,而且环境也是stochastic的,所以即使拿到一个π_θ,游戏的进行过程也是随机的,有些过程,如:飞船第一次就被外星人打死了,完全不会闪躲,这在一个“good”的actor下发生概率不高,而飞船成功躲过第一次外星人的袭击,过了很久才被射死的几率会更高。P(|)就反映了这个几率。
由于游戏是连续的,可能的有无穷多个,我们不可能一一去计算每种情况的几率P(|)也无法计算完,一个比较合理的方案是,让Agent重复玩这个游戏N次,记录下每次Agent的trajectory ,因此R_θ可以近似为每次抽样的获得的reward的平均,由于P(|)高的trajectory会更常在sample中出现,P(|)低的trajectory会更不常在sample中出现,因此这是一个很好的对R_θ的近似。
 
形式化的说,我们希望找到的目标θ^*,本质上就是找到一个能让〖R〗_θ最大的θ^*。
 
使用梯度上升法就可以求解。(可以把这个〖R〗_θ理解成强化学习的cost function)
 
因此,之后所有的步骤都是希望解决下面这一行的问题:
 
又因为R()是给出一盘完整的游戏的过程,他能拿到几分,这由游戏设计者确定的(或者指定奖赏策略的人确定的),这和θ无关,因此可以改写成:
 
实际上,就算算法完全不知道R()的运算过程也没关系,只要放进去一个能拿到结果就行了(can be treated as a black box),事实上,如果游戏的奖赏有随机性,比如说抢红包这种,你永远也别想打开这个黑盒子。
经过一系列的化简,加上转换成可实际求值的
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值