目录
文章目录
前言
一、什么是强化学习?
二、强化学习的基本元素
1.环境Environment
2.主体Agent
3.状态State
4.行动Action
5.收益Reward
三,RL算法的特点
1,试错学习
2,延迟回报
四,RL算法的分类
1,基于值的算法
1),状态价值函数V(s).
2)行为价值函数
2,基于策略的算法
Policy Gradient
3.Actor-Critic 框架
Based Actor-Critic
总结
前言
由于目前正跟着老师学习深度学习。为了能更好的梳理知识点,也为了与大家分享一下我对深度学习的理解,所以有了写文章的想法。
一、什么是强化学习?
强化学习:Reinforcement learning。它是机器学习的一个领域,不同于机器学习的是,强化学习更强调与环境交互,然后通过计算最大收益获得对应的最优的动作进行行动。强化学习还有一个特点,它是一个序列预测问题,也就是他是为了找出最优的一系列动作。而且因为每一个state需要在前一个action做出后才能得到,所以时间在强化学习中有很重要的意义。每一个action也会影响后边的决策
二、强化学习的基本元素
在强化学习中,环境(environment),主体(agent),状态(state),行动(action)和收益(reward)是我们经常会遇到,且必须掌握的概念。为了方便大家更好的理解它们,下边我以一款我自己写的小游戏为例来解释他们。
1.环境Environment
环境是一个外部系统,也就是我们所能看到的那个系统。用游戏来说就是屏幕(除去人物)。
2.主体Agent
主体是我们自己添加到环境中的系统。它是用来与环境交互,感知到环境的状态,然后基于这个状态做出一定的行动,从而改变环境的状态。在游戏中,他就是人物可莉,可莉经过目前屏幕的状态,做出一个动作(上下左右移动,甚至扔出炸弹),从而改变屏幕的状态。
3.状态State
状态是当前环境的一个时间切片。可以理解为,在时间维度上,环境就是由无数个不同时刻的状态组成的。在游戏中,它就是一张照片。如以上截图就为一个状态。
4.行动Action
行动是指主体做出的动作。在游戏中就是可莉上下左右移动或者扔炸弹。
5.收益Reward
收益是指环境对于主体当前的动作或者状态的一个奖励。它可以是全局收益,也可以是局部收益。全局收益就是整个流程下来的累计收益。局部收益就是在一定的范围内的收益。在游戏中,全局收益就是整局游戏结束时给的总分或者提示游戏结束(over 或 win),局部收益就是每一关通过时所获得的分数。
三,RL算法的特点
强化学习的特点主要有试错学习,延迟回报。
1,试错学习
与其他机器学习不同,强化学习没有监督者,他只有一个回报。没有人指引它应该怎么去学习,所以他只能不断与环境交互,不断做出动作,在巨大的试错基础上来获得最佳的策略(policy)
2,延迟回报
强化学习的反映是延迟的,因为他的指导信息很少,而且很多都是最后才给我们。比如在游戏中,我们可能不会实时给你得分,而是等游戏结束后才给你一个分数。
注:强化学习是一个序列预测问题,也就是他是为了找出最优的一系列动作。而且因为每一个state需要在前一个action做出后才能得到,所以时间在强化学习中有很重要的意义。每一个action也会影响后边的决策
四,RL算法的分类
强化学习的算法主要分为两大类:基于值的算法(Value-Based)和基于策略的算法(Policy-Based)。我首先分别介绍一下基于值和基于策略的经典算法,然后介绍一个将基于值和基于策略的算法的优点结合起来的框架——Actor-Critic(AC)框架。在AC框架下进一步介绍目前学术界用得最多的几种强化学习算法。
1,基于值的算法
即通过价值选行为。基于值的算法主要需要用到,状态价值函数V(s)(State Value Function)和行为价值函数Q(s,a)(Quality of State-Action functuon).
1),状态价值函数V(s).
它的输入为一个状态,输出是一个预期的回报。公式如下:
其中π表示Agent选择Action的policy的概率分布,G0|S0=sG0|S0=s表示从状态s开始到G0状态整个序列。整个函数意思是,从状态s出发,使用策略π所带来的累积奖赏。也就是从s状态到游戏结束时能获得的分数
公式也可表示为:
其中,Rt表示t时刻的预期收益,γ表示折扣因子,且与当前状态越贴近的状态,其γ越大。
2)行为价值函数
行为价值函数,输入为(状态,动作),输出为该状态下使用该动作所获得的预期收益。公式为:
也就是这个函数实现的是,预测我们从状态s开始,并在s状态时使用动作a的情况下,到游戏结束时,我们能获得的预期收益。(也即是固定了s状态的动作a)
我们不难发现以上两个函数存在着这样的关系:
2,基于策略的算法
在基于策略的算法中,我们构建一个策略网络(Policy Network)PN:S→A,输入一个状态直接输出对应的Action,然后直接对这个策略网络进行更新,从而直接对策略选择建模。也就是:
它可以直接输出一个确定的动作,也可以输出动作的概率分布。并且对于|A|→∞,PN能够直接预测出Action。
Policy Gradient
它是基于策略的算法中最基础的一种算法。通过对收益期望求梯度,从而对Policy Network的参数进行更新。
它首先定义一个收益期望函数J(θ):
然后对其进行求导:
最终我们得到了一个漂亮的▽θJ(θ)的表达式,期望里面包括两个部分∑Tt=1▽θlogπθ(at|st)表示的是获取当前Trace的概率的梯度,∑t=1Tr(st,at)表示的是当前路径的总的回报。因为回报是一个总的回报,只能在一个轮次之后才能得到,所以Policy Gradient算法只能针对每一轮次更新,无法针对每个step更新。
3.Actor-Critic 框架
Based Actor-Critic
总结
以上的内容,只是对强化学习进行粗略的介绍。在接下来的文章中,我会对不同的算法进行详细的解读,并以实例辅助帮助大家理解。