百度飞桨深度学习学院强化学习7日打卡营 学习笔记

part 1 基于表格型方法求解RL

  首先要知道马尔可夫决策过程四元组

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第1张图片

  简单的来说就是在不同的状态s下选择不同的动作a会得到不同的奖励r。

  状态转移概率P[S$_{t+1}$,R$_{t+1}$|S$_{t}$,A$_{t}$]解释起来就是在S$_{t}$情况下选择A$_{t}$动作转移到S$_{t+1}$状态,并获得R$_{t+1}$奖励的概率。

    百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第2张图片

  都是不是所有的时候,环境我们都是已知的,这时候就需要一步步的去探索。

  百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第3张图片 

    百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第4张图片

  Q\left ( S$_{t}$ ,A$_{t}$\right )):表示状态动作值

  V\left ( S \right ):表示状态的好坏

  由状态值和动作值和Q值就可以组成Q表格

  百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第5张图片

  Q表格:指导每一个step的动作选择。 目标导向:未来的总收益G

  G$_{t}$=R$_{t+1}$+R$_{t+2}$+R$_{t+3}$+\cdot \cdot \cdot

  但是考虑未来的收益之和明显不合理,所以需要引入衰减因子\gamma

  G$_{t}$=R$_{t+1}$+\gamma R$_{t+2}$+\gamma ^{2}R$_{t+3}$+\cdot \cdot \cdot

  百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第6张图片

  所以\gamma需要设置成一个合适的值。

  接下来就引入强化概念。

  百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第7张图片

  有一个网址可以让大家直观感受一下下一步对上一步的影响,状态价值迭代

  百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第8张图片

  \gamma:就是上面提到的衰减因子

  \alpha:软更新,每次更新一点点

  百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第9张图片

  需要五个值如下,所以起名sarsa。

  百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第10张图片

  sarsa伪代码

 百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第11张图片

q-learning和sarsa伪代码差不多。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第12张图片

代码详情,请看.本次笔记所有代码

part 2 基于神经网络方法求解RL

如果状态无限,如果还有要q表格方法,那q表格也是无限,q表格方法通常只使用在状态可数的情况。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第13张图片

为了解决状态不可数情况,需要用到值函数近似来代替q表格的作用,值函数近似在q值里加了一个参数w,用值函数来代替q表格解决了去表格的两个缺点。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第14张图片

接下来简单介绍一下神经网络。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第15张图片

只要给足够多的数据,神经网络可以帮你拟合任意连续函数。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第16张图片

简单例子。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第17张图片百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第18张图片

DQN:使用神经网络求解RL问题的经典算法

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第19张图片

像人类一样看到图像再去输出动作,DQN输入的是像素级别的图像,但是DQN的本质还是q-learning。

回顾一下q-learning

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第20张图片

DQN的改进就是使用神经网络来拟合Q表格。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第21张图片

然后来看看DQN神经网络怎么学习和训练。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第22张图片

监督学习就是得到我们的预测值与真实值作比较,得到均方差送进优化函数,就可以对网络进行更新优化。

DQN的训练过程也非常类似,输入是一批状态s,输出是对应的q值(其实是个向量),需要让我们的输出值去逼近目标值,targetQ的计算就用q-learning的更新公式,得到目标值和输出值的均方差,再放入优化函数进行优化。

DQN的两大创新点

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第23张图片百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第24张图片

 

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第25张图片

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第26张图片

DQN流程图

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第27张图片

part3 基于策略梯度求解RL

agent有两种方案,基于价值value-based和基于策略policy-based。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第28张图片

value-based通过优化q网络得到最优的q值来选择动作,但是优化到最优之后参数就固定下来了,当输入一样的状态的时候就会输出一样的action,这种策略我们就叫确定性策略。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第29张图片

policy-based不用那么麻烦,直接神经网络拟合一下policy一步到位。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第30张图片

policy-based输出的是动作的概率,是一种随机的策略。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第31张图片

为了输出概率,一般会在神经网络最后加一个softmax的激活函数。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第32张图片

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第33张图片

随机策略举例

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第34张图片

在像乒乓球的这类游戏当中,agent和环境的交互是分幕式的,Episode的中文翻译就是幕,有一点点像是演员表演完一场表演,或者是说玩完一场游戏就是一个Episode,在每一个Epaisode里面agent不断根据当前输入的图像去输入动作,直到最后看看谁先拿到胜利的条件,一个Episode就结束了,就可以开始另一个Episode,优化目的结束让每一个Episode的总reward尽可能的大。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第35张图片

训练我们要先考虑所有的情况,就从初始的状态出发,我们有不同的概率去选择不同的动作,用\pi _{\theta }\left ( a|s \right )来表示动作选择的概率,选择不同的动作之后根据环境的随机性会有不同的概率进入不同的状态,称为状态转移概率用p\left ( {s}'|s,a \right )表示。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第36张图片

我们只能去优化\pi _{\theta }\left ( a|s \right ),状态转移概率p\left ( {s}'|s,a \right )是我们不能去控制的。

当从初始状态开始到与环境交互结束,我们把s,a,s,a这样串起来的,就叫一个episode的轨迹trajectory,该episode发生的概率就是将所有的概率连乘起来,这条轨迹的总的回报就是将每一个step的reward加起来,实际上与环境交互的轨迹肯定不止这一条,我们可以把所有轨迹发生的概率乘对应的总回报累加起来就是所有episode的期望回报,这个期望回报在一定程度上就可以来评价我们的策略好还是不好,但是正常的计算过程中我们不可能去穷举所有的轨迹,在model-free情况下也计算不出来转移概率,因为环境未知,所有我们可以直接去与环境交互N个episode拿到回报求平均,当N足够大的时候就可以近似拟合我们的期望回报,这个过程我们就称之为采样。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第37张图片

策略函数\pi _{\theta }\left ( a|s \right )是我们的优化目标,对比一下DQN是怎么优化q网络的,DQN是使用Q预测与Qtarget的平方差来作为优化函数,policy网络使用与环境交互N个episode拿到回报求平均的值来作为目标来优化网络。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第38张图片

神经网络参数的更新是需要根据梯度来确定我们更新的方向,我们就需要求解优化目标R\left ( \theta \right )\theta的一个梯度\Delta R\left ( \theta \right )来去更新policy网络。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第39张图片

根据梯度我们就可以反推原函数来作为我们的loss函数。

 

part4 连续动作空间上求解RL

连续动作vs离散动作

一个是可数的,一个是不可数的

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第40张图片

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第41张图片

要输出每一个action的值在 [-1,1]之间在神经网络后面加一个tanh函数,然后再根据实际情况进行缩放。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第42张图片

在连续控制领域比较经典的算法就是ddpg了,ddpg是每一个step都会更新一次,是一个单步更新的policy网络。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第43张图片

当初ddpg设计的想法是将dqn控扩展到连续空间之中ddpg直接在dqn的基础是加了一个策略网络,称之为actor-critic结构。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第44张图片

actor-critic结构通俗的解释如下图。

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第45张图片

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第46张图片

百度飞桨深度学习学院强化学习7日打卡营 学习笔记_第47张图片

你可能感兴趣的:(入门强化学习)