【深度学习】强化学习

学习笔记(深度学习)

参考课程: 李宏毅2021/2022春机器学习课程-

一、强化学习

学习分类:监督学习、无监督学习和强化学习
强化学习主要包含四个元素,agent,环境状态,行动,奖励, 强化学习的目标就是获得最多的累计奖励

在这里插入图片描述
Agent:从环境中接收感知并执行操作的程序,被翻译成为智能体,但是我个人感觉代理更加恰当,因为它就是作为我们人在强化学习环境下的操作者,所以称为代理或者代理人更恰当
State (S):代理当前在环境中所处的状态
Action (A):代理在给定状态下可以采取的动作
Reward(R):采取行动的奖励(依赖于行动),处于状态的奖励(依赖于状态),或在给定状态下采取行动的奖励(依赖于行动和状态)
例子:以游戏为例定义模型

1.如果Neural Network作为一个Actor,这个Neural Network的输入就是observation,可以通过一个vector或者一个matrix 来描述。output就是你现在可以采取的action。

Neural Network作为一个Actor,input是一张image,output就是你现在有几个可以采取的action,output就有几个dimension。假设我们在玩Space invader,output就是可能采取的action左移、右移和开火,这样output就有三个dimension分别代表了左移、右移和开火。
在这里插入图片描述

2.定义损失函数:与监督学习有label不同,这里是使reward得到最大值

让这个Actor实际的去玩一个游戏,玩完游戏得到的total reward为 R,把每个时间得到的reward合起来,这即是一个episode里面,你得到的total reward。这个total reward才是我们需要去maximize的对象。我们不需要去maximize 每个step的reward,我们是要maximize 整个游戏玩完之后的total reward。

在这里插入图片描述
在这里插入图片描述

拿同一个Actor,每次玩的时候,R其实都会不一样的。因为两个原因,首先Actor本身如果是Policy,看到同样的场景它也会采取不同的Action。所以就算是同一个Actor,同一组参数,每次玩的时候你得到的R也会不一样的。再来游戏本身也有随机性,就算你采取同一个Action,你看到的observation每次也可能都不一样。所以是一个R:Random Variable。我们做的事情,不是去maximize每次玩游戏时的R,而是去maximize R的期望值。这个期望值就衡量了某一个Actor的好坏,好的Actor期望值就应该要比较大
在这里插入图片描述
其实在参数θ 下,发生一个τ 是一个概率事件:
计算概率的思想就是起始状态是s1 的概率p(s1),乘以在s1时选择a1的概率,之后再乘以在s1,a1之后进入到s2和获得reward1的概率,以此类推,最终得到上式

在这里插入图片描述
R(τ) 代表在这个episode里面,最后得到的总reward,我们最终的目标其实就是Maximize R

3.计算

在这里插入图片描述
怎么选择最好的function,其实就是用我们的Gradient Ascent
在这里插入图片描述
在这里插入图片描述
式子中,只有P(τ∣θ)跟θ 有关系,所以只需要对P(τ∣θ)做Gradient。R(τ)在多样本下做近似计算,就算不可微也没有关系,或者是不知道它的function也没有差,我们只要知道把τ 放进去得到值就可以
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

**Reinforcement Learning的难点在哪里呢?它有两个难点

1.Reward delay
第一个难点是,reward出现往往会存在delay,比如在space invader里面只有开火才会得到reward,但是如果machine只知道开火以后就会得到reward,最后learn出来的结果就是它只会乱开火。对它来说,往左往右移没有任何reward。事实上,往左往右这些moving,它对开火是否能够得到reward是有关键影响的。虽然这些往左往右的action,本身没有办法让你得到任何reward,但它帮助你在未来得到reward,就像规划未来一样,machine需要有这种远见,要有这种visual,才能把电玩玩好。在下围棋里面,有时候也是一样的,短期的牺牲可以换来最好的结果。
2.Agent’s actions affect the subsequent data it receives
Agent采取行动后会影响之后它所看到的东西,所以Agent要学会去探索这个世界。比如说在这个space invader里面,Agent只知道往左往右移,它不知道开火会得到reward,也不会试着击杀最上面的外星人,就不会知道击杀这个东西可以得到很高的reward,所以要让machine去explore它没有做过的行为,这个行为可能会有好的结果也会有坏的结果。但是探索没有做过的行为在Reinforcement Learning里面也是一种重要的行为。

二、Policy Gradient

Policy Gradient就是一种直接的方法,它可以直接输出每种动作的概率进行直接的选择 – 利用reward奖励直接对选择行为的可能性进行增强和减弱,好的行为会被增加下一次被选中的概率,不好的行为会被减弱下次被选中的概率。
在这里插入图片描述
从状态 1开始,我们每次都按一定概率去选择一个action ,然后就进入下一个状态,以此循环往复… 这样就形成了一个轨迹(trajectory)
在这里插入图片描述Policy Gradient训练过程
For training iteration 𝑖 = 1 to 𝑇
• Using actor 𝜃𝑖−1 to interact
• Obtain data 𝑠1, 𝑎1 , 𝑠2, 𝑎2 , … , 𝑠𝑁, 𝑎𝑁
• Compute 𝐴1, 𝐴2, … , 𝐴𝑁
• Compute loss 𝐿
• 𝜃𝑖 ← 𝜃𝑖−1 − 𝜂∇𝐿

policy gradient的具体训练过程是,先有一个policy 𝜃 ,之后用这个policy来收获很多数据 𝑠1, 𝑎1 , 𝑠2, 𝑎2 , … , 𝑠𝑁, 𝑎𝑁,用它来计算Expected Reward的梯度,之后再用梯度上升来求得新的 𝜃 : ,然后用更新的𝜃 再来获取数据,之后再更新 𝜃 ,如此循环反复。所以,其实每次收集的数据只能用一次就被丢弃了。
在这里插入图片描述
优化:Add a baseline:
很多时候我们得到的所有reward都是正的,为了能让reward有正有负,我们可以把所有的reward都减去一个baseline

在这里插入图片描述

三、Actor-Critic

Reinforcement Learning 的方法分成两大块,一个是Policy-based的方法,另一个是Valued-based的方法。注意是先有Valued-based的方法,再有Policy-based的方法

在Policy-based的方法里面,会learn一个负责做事的Actor,在Valued-based的方法会learn一个不做事的Critic,专门批评不做事的人。我们要把Actor和Critic加起来叫做Actor+Critic的方法。

Actor 使用我们上一节讲到的策略函数,负责生成动作 (Action) 并和环境交互。而Critic使用我们之前讲到了的价值函数,负责评估Actor的表现,并指导Actor下一阶段的动作。Critic两种计算方法:

Monte-Carlo (MC) based approach:在这里插入图片描述
Temporal-difference (TD) approach:
在这里插入图片描述
结合二中最后的优化,计算reward的数值时,减去一个baseline,就可以减去Vθ(s)
在这里插入图片描述
原理:Gt是sample出来的值,Vθ是期望值,若差值大于0,则说明当前action好于期望值
在这里插入图片描述
再次改进:期望减期望:Gt应表示为当前action的reward:rt,加上后面的期望值
在这里插入图片描述
常见的模型设计:
在这里插入图片描述

四、No Reward: Learning from Demonstration

Inverse Reinforcement Learning:逆强化学习
在这里插入图片描述
获取一份专家数据集,供机器模仿学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值