首页 AI学术青年与开发者社区

深度理解强化学习
强化学习解法 Q-learning
时序差分学习
on-policy : 在估计policy和值函数的时候,生成的样本所采用的policy与估计时用的一样的policy 同一策略下确定

off-policy 估计policy和值函数时候 生成样本episode所采用的policy与估计时用的是不一样的policy

on-policy 一边探索一边学习策略

off-policy 两个策略

Off-policy Q-learning

评估目标策略π 计算值函数(动作值或者策略值),μ策略

利用π策略环境交互,利用e更新计算策略

Q(A|S)不同状态下概率是不同的,使用μ去逼近π策略

好处:学到多种策略

利用μ去逼近π策略,中心极限定理 样本量足够大,任何分布都可以分布为正态分布,只有均值和方差,

假设x的随机变量 P分布,假设知道Qx,不知道Px

E[f(x)]=∫fxpxdx=∫Qx*(Px/Qx*fx)dx=Ex~Q[P(X)/Q(X)*f(X)]

离散的情况

A1服从P分布;A2服从Q分布

E[A1]=∑xiPi ;E[A2]=∑xiqi

A1在数据量不够大的时候,M[A1]=1/N[∑xiki];

已知A2 需要知道A1,N趋于无穷大的时候,ki/N=Pi Mi/N=qi,M[A1]可以用xi*p/q式子表示,

正如蒙特卡洛采样中 Gt可以用reward 的均值来表示,可以用重要性采样来代替。

Q-learning

首先考虑off-policy action-values Q(s,a)

using behavior policy At+1~μ(.|st), 

consider alternative successor A'~π(.|St)

然后更新Q(St,At)朝着alternative action Q(St,At)使用绝对贪婪策略 π(St+1)=argmaxQ(St+1,a')

收敛Q(s,a)->q*(s,a)

 

π策略若变换,Q-learning又叫最大化Sarsa算法

Q-learning有两个策略,可以认为选择变成其它新的算法

 

[展开全文]

CliffWalking environment

 

This gridworld example compares Sarsa and Qlearning, highlighting the difference between on-policy (Sarsa) and off-policy (Qlearning) methods.

task 4*12矩阵网格

Estimated Optimal Policy (UP = 0, RIGHT = 1, DOWN = 2, LEFT = 3, N/A = -1):
[[ 0  3  1  1  1  1  1  1  1  2  2  1]
 [ 1  1  0  3  2  2  1  3  2  2  2  2]
 [ 1  1  1  1  1  1  1  1  1  1  1  2]
 [ 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  0]]

The agent has 4 potential actions:

UP = 0
RIGHT = 1
DOWN = 2
LEFT = 3
先计算随机值函数
Sarsa算法 参数num_episodes: This is the number of episodes that are generated through agent-environment interaction.
 
先计算之前Q表S0 A0
更新Q表 一个队列记录瞬时分数,一个记录平均分,用来作分析
对于episode 进行迭代,每100次迭代,打印结果,最后用平均reward 计算是否收敛,
 
[展开全文]

RL->DRL

深度Q网络

1、值函数的近似:对Q表近似

2、Deep Q network

为什么要把深度学习引入强化学习?

自身处于研究的角度,遇到什么问题?在Q-learning中,首先初始化一个Q表,然后通过agent与环境交互采样获得episodes,最后根据Q值迭代直到收敛,得到最优的Q表

对于4*4的矩阵 处理是简单的;但如果对于超级玛莉  显然有无数种,因为是连续的,很难列出所有结点,这样矩阵去存储,不能利用Q表等方法。遇到维度灾难,不能用迭代。

从RL到deep RL,for DRL,我们需要一个近似函数来直接近似值函数,从而加速加快Q值矩阵更新的速度,因为值函数的输入是动作状态对(tensor),输出Q表(tensor),所以最佳近似就是深度神经网络。利用神经网络加快运算量减少存储。

DRL agent 与环境交互 <s,a> Enviroment

根据Q值,让Q值不断增大,确保是最优的,值函数近似以后会有些问题,Q表当成神经网络,不能采用原来的迭代表达式直接进行更新;采用学习的方式进行更新(需要一些label);目标函数变成常见的L2范数;优化方式变成了梯度下降。

对于梯度下降,假设J(W) a differentiable function of parameter vector w

对wJ(w)求梯度,然后找到local min(J(w)),然后w沿着梯度方向更新最快。

Deep RL: 寻找最优参数,使得MSE最小化,凸函数,使用随机梯度下降的,Δw。

若假设 wx+b 是所求,特征向量由神经网络得到,若输入图像由CNN接入,再接全连接网络;对于线性函数,最优化的相关知识

 

特征运算时,值函数x table(S)=()然后得到最小值去更新参数w。

值函数真实值如何选?

用reward评判,神经网络训练,用真实值,用target替代真实值,gt return(蒙特卡洛) TD(0) Rt+1 + γ (St+1,w)

 

Deep RL

return Gt unbiased, noisy sample of true value vπ(St); apply supervised learning to training data; <S1,G1>,<S2,G2>,...,<ST,GT>

Δw=α(Gt-v(St,w))算子wv(St,w)

使用非线性网络,状态动作队和对应target组合,最后获得全局最优。

 

[展开全文]

DQN的control

使用Q-learning 当状态空间和动作空间是离散且维数不高,使用Q-table存储每个pair的Q值

使用DQN:当状态空间和动作空间是高位连续时候;使用Q-table来存储Q值难度太大

使用DQN 化简,类似于MC、TD、Q-learning采用交替的策略,这里值函数的近似,通过神经网络初始化参数,通过e-greedy获得agent 动作,获得动作和环境交互,通过近似神经网络计算,最后获得最优。参数w,使用e-greedy 改进方式。

deep learning 和RL 结合存在问题:

DL 是监督学习需要训练集,强化学习不需要训练集只通过环境进行返回奖励值reward,同时也存在着噪声和延迟的问题,所以存在很多状态state的reward 都是0也就是样本稀疏

DL每个样本互相独立,而RL当前状态的状态值是依赖后面的状态返回值 ;当我们使用非线性网络来表示值函数的时候可能出现不稳定的问题。

基于马尔克夫决策过程,前后之间相互依赖,依赖性如何解决?非线性不稳定如何解决?边更新边用不稳定。

DQN的control

解决方法:

借鉴Q-learning方法,使用reward来构造标签;通过experience replay 经验池的方法来解决相关性及非静态分布问题;使用一个MainNet产生当前Q值,使用另外一个Target产生Target Q.

首先考虑Q-learning agent采样后获得episode 学习得到Q值,然后把每一个对应的Q值更新Q表,然后扔了当前episode 不断重复。

experience Replay: DRL中,没有内存存储Q表,需要查找算法,先交互放到Replay Buffer,不直接参与运算,只作为存储,没有查找,每次都是取episode,之后计算label的groundtruth 的Q值直接采样即可。Q-learning中当前状态获得的reward存储下来,只要两个Q值可以计算就可以计算了,每次学习采样一定的episode,学习获得收敛;这样保证不同的相互依赖的,Q值更新得到两个状态,根据马尔克夫性,只存储两个状态是合理的。

Q-target :由于我们Q值得更新有神经网络的参数更新而定,因此在神经网络学习的过程中需要有一个groundtruth作为目标,而产生这个真实Q值得网络称为Q-target

Agent 和环境交互得到很多episode,存到replay,每次通过replay的采样,采样batch次数,一般自己设置为32,64.进入神经网络后得到Q值,送入Qtarget,得到Q真实值,对Qnet求导,这个网络参数,这个网络参数等于w规定时期才更新,平常不更新

Q值函数的近似q(S,A,w)=qπ(S,A),随即梯度下降找local min

如果是特征向量,因为最后输出是线性的全连接层,那么代表的是参数,*特征向量;target替代真实qπ;TD(λ) 反向传播不同

DQN experience replay fixed Q-targets

初始化参数,采样batch 动作,存到四元组,使用随机梯度算法替换w,DQN in Atari 最早用于该小游戏,像人类一样玩;end-to-end learning of values Q(s,a) form pixels last 4 frames 保证连续;output Q(s,a) 18 joystick/button positions

Reward 是 change in score

三层卷积神经网络+2层全链接构成Q值函数,图像数据不固定,多几层全连接,直接向量级;若3层提取浅层特征;有些情况需要更多层。训练效果 Replay Fixed-Q效果最好

 

Double Q learning 考虑DQN参数更新,使用max操作时候估计的值函数的值比真实值函数的值要大一些,因此这就产生了过估计问题。

考虑overestimation 如果值函数每一点的值都被过估计了相同的幅度,最优策略是贪婪策略,即找到最大Q值对应的动作,这是不影响我们获得最优策略

因为RL目标——获得最优策略,不是得到值

就算Q值被过估计了,如果每一点过估计的值均匀,不影响最终决策

Double Q learning 更新表达式改进 选择动作:将动作的选择和动作的评估分别用不同的值函数来实现

[展开全文]
PoleToWinF1 · 2019-07-02 · Deep Q network 0

用DQN玩Atari游戏——Flappy bird

状态空间连续的任务

通过深度Q学习神经网络使我们设计的agent能独自玩这个游戏

游戏的动作空间维度为2(跳与不跳)

Reward 设置条件为游戏是否终止(即玩家是否死亡)

目标是值函数近似的Q值最大化,值函数又神经网络l2-loss学习

import 随机数是作episode归类的

deque存储return memory,有容量,放满后老的去掉,放进新的元组

γ折扣因子,frame_per_action折扣因子

observe 经过交互才可以学习,前100次不进行学习,只进行放样本,探索一定次数后边探索边学习,

EPSILON固定

 

UPDATE_TIME Q网络和Qtarget网络,一个更新时
另一个先不更新,这是迭代次数更新的频率

 deque() #把他看成一个list 里面存放了S,A,R集合

如果收敛了,Epsilon设为1

Q网络

三层卷积,两层全连接

输入层设置为placeholder

第一个卷积 relu初始化参数,然后maxpool,max pooling 整个图片被不重叠的分割成若干个同样大小的小块(pooling size)。每个小块内只取最大的数字,再舍弃其他节点后,保持原有的平面结构得出 output。

 reshape 变成向量,摊平;然后全连接两次

输出 Q值和参数,return stateInput,QValue,W_conv1,b_conv1,W_conv2,b_conv2,W_conv3,b_conv3,W_fc1,b_fc1,W_fc2,b_fc2

训练设置

Q-action 选取要执行的

观察平均q值区域平缓则收敛,

adam优化器优化,把图存到log中,用来看曲线;若有checkpoint 加载,否则从头开始训练

训练:采样一个batch数据,分开状态动作 reward

计算y y_batch永远先计算下一个状态Q值,

如果终止是reward,否则是Q值最大的动作+reward

run 写到输入,

Q_value_avg, loss, loss_sum, Q_sum = self.session.run([self.avg_q, self.cost, self.loss_sum, \
                                        self.qvalue_summary], {self.stateInput : state_batch,\
                                        self.yInput : y_batch, self.actionInput : action_batch})

 

 主函数 预处理 preprocess

灰度化处理并变成我们想要的尺寸

然后开始gamestate,然后得到游戏环境和动作,setInitState 把observervation拼接起来,

setPerception 设置下一个perception

[展开全文]

策略梯度学习

强化学习另外一个分支

基于环境是否已知,基于策略来分有on、off policy

1.策略梯度思想

2.Reinforce算法

使用基于值函数的学习需要和环境交互,传统普通的 基于Q表,通过对应的target更新方式,采用绝对贪婪策略确定策略。

与环境交互得到值函数,输入神经网络再取到Q值比较大的地方,传统的Q-learning和DQN都是通过最优值函数。能否跳过值函数,直接获得策略

Value-based to policy-based  parametrise the policy πθ(s,a)=P[a|s,θ] 直接输出概率,基于策略学习的基本思想,基于值函数的学习,策略改进基于actor-critic 两种策略都有

策略学习优点:便于收敛,直接学习策略,基于值函数的学习,value-base基于值函数收敛;effective in high-dimensional or continuous action spaces;can learn stochastic policies

对于连续空间,输出Q值;若解平面有局部最优解,此时随机性可能缺乏,出现bug

缺点:

容易陷入局部最优解,因为直接更新策略,策略不断变化,第二次迭代,不断震荡,容易进入局部最优;评价不高效

策略函数如何近似?类似于DQN,采用神经网络近似,通过神经网络近似策略function以某种概率执行某种策略

通过神经网络输出一个概率,最后一层选用 激活函数softmax,对节点取平均值,只能归一化,4个点控制四个点的动作,动作是连续的,这四个点的范围是连续的动作值情况,最后一层激活函数是什么?设置成四维,每一节点直接输出。

总体目标总体return J 最大化,θ 嗯从德胜thepolicy influencesreward J(θ)=∑P(γ,θ)R(γ)

目标给出策略 policy πθ s,a

如何转换?in episodic environments we can use the start value  J1(θ)=Vπ(s1)=Eπ[V1]

在continuing environments use averagevalue:

JavV(θ)=∑dπθ(s)Vπθ(s)

the average reward per time step JavR(θ)=....Rsa  dπθS stationarydistribution of markov chain基于策略状态的分布

目标Jθ最大化,离散时候一般使用reward找到初始值,

首先初始化参数

收集episode 记录return

更新最佳策略和Gbest 量

重复直到环境solved

增加随机噪声,根据爬山法记录G new>Gbest then: θbest<-θnew, Gbest<- Gnew;类似算法称为 black-box optimization 黑箱优化算法

策略梯度如何更新?

Jθ目标函数

得到θ=αΔJθ

policy gradient 基本思想 以及 alpha step-size parameter

通过神经网络直接输入策略,通过J θ学习到策略,得到最优,最优化求函数最大值的问题。

[展开全文]

reinforce 算法介绍

一般的策略梯度学习 将状态作为输入,神经网络使状态,输出是策略概率,最后有一个目标,Jθ,目标期望reward,直到使最大化。

四个结点,每个结点一个概率;假如获得两个概率,总的reward是通过每一步reward计算,将每个pair拆开,采取向左的动作,输出选取概率最高动作,朝上走对一整个episode,然后另一部分loss 每一个动作pair 掉低一些,改变策略网络的参数,win 增加概率,lost 减少概率

如何训练?类比监督学习,输入狗的图片,输出两个概率,每一对数据对应label,01 或者10,输出softmax,softmax输出概率,通过最小化网络误差来更新,对于强化学习,怎么造label

强化学习 弱监督学习,有reward,通过reward进行策略评估,通过J Θ评估,若当前比上次增大则这动作是好的。

衡量尺度是J θ的平均reward,Policy gradient 对于实际情况,agent每执行一个动作就有一个对应的reward,因此目标仍然是最大化期望的reward。将reward 抽出来就获得动作状态对,得到R的加权期望,return from an arbitrary trajectory ,因为不止一个episode,只去计算所有。

DQN梯度下降 求最小值,构造ground truth,使得当前Q值不断逼近,误差越来越小;

这里需要Jθ最大化,梯度上升。

最后更新不只用一个episode更新,使用多条episode进行更新,对Uθ求梯度,只对概率求梯度,先使用初始化策略,收集episode,估计梯度,梯度上升运算,use trajectories to estimate,所有瞬时reward 相加,朝着增加的方向。

动作空间是离散的情况,最后一层softmax

若动作空间是连续的运用gaussian policy倒数第二层设置为均值,最后一层输出πs,a连续值

 

[展开全文]

强化学习的特点:

  • 没有监督数据、只有奖励信号

  • 奖励信号不一定是实时的,而很可能是延后的,有时甚至延后很多。

  • 时间(序列)是一个重要因素

  • 当前的行为影响后续接收到的数据

[展开全文]

马尔科夫决策过程正式描述了强化学习的环境,此环境是可以全部观察的.
几乎所有的强化学习问题都可以提炼成一个MDP问题。
 
1、马尔可夫性
定义:状态St 是马尔科夫的,当且仅当满足

2、状态转移概率
矩阵形式

3、马尔科夫链(Markov chain)
马尔科夫链是一个无记忆的随机过程,即随机过程中的状态序列具有马尔可夫性。
定义:马尔科夫链表示为<S, P>,其中 S 是状态集,P是状态转移概率矩阵。

4、奖赏过程
定义:<S, P, R, r>,其中S是状态集,P是状态转移概率矩阵,R是奖赏函数,r是折扣系数。
值函数(valuefunction):值函数是未来奖赏值的预测,可以用来评估当前状态的好坏,agent可以根据此来选择要执行的动作。

5、贝尔曼方程
MRP矩阵形式:v = R + r P v,其中v是一个列向量

 

[展开全文]
马尔可夫决策过程(MDP)
一:介绍
马尔可夫决策过程是用来形式化地描述强化学习中的环境
其中环境是完全可以观测的
值得注意的是,大部分强化学习问题都可以看作 MDP 问题。
简单地理解,MDP是用来描述环境的,且 agent 可以观察到环境的全部信息。也就是说是完全可以观测。所以 agent的状态会等于环境的状态,因此在MDP中会出现action这个概念。
二:马尔可夫性质
现在或未来的状态依赖于过于的状态
它可以被定义为:
如果一个状态St S_tS 
t
 是马尔可夫链中的一个状态,当且仅当:
P[St+1∣St]=P[St+1∣S1,S2,...,St] P[S_{t+1}|S_t] = P[S_{t+1}|S_1, S_2, ..., S_t]
P[S 
t+1
 ∣S 
t
 ]=P[S 
t+1
 ∣S 
1
 ,S 
2
 ,...,S 
t
 ]
当前状态能捕捉到过去状态的所有信息
一旦当前状态被确认,那么历史信息就可以被扔掉
状态转移矩阵
对于一个马尔可夫状态 s ss和它的后继状态S′ S^\primeS 
 , 状态转移概率可以定义为:
Pss′=P[St+1∣St=s] P_{s s^\prime} = P[S_{t+1}|S_t=s]
ss 
 
 =P[S 
t+1
 ∣S 
t
 =s]
 
故转移概率矩阵 P PP 可以定义为:
P=⎡⎣⎢p11...pn1.........p1n...pnn⎤⎦⎥ P =\begin{bmatrix} p_{11} &amp; ... &amp; p_{1n} \\ ... &amp; ... &amp; ... \\ p_{n1} &amp; ... &amp; p_{nn} \end{bmatrix}\quad
P= 
  
11
 
...
n1
 
  
...
...
...
  
1n
 
...
nn
 
  
 
 
三:马尔可夫链
马尔可夫过程是一个无记忆性的随机过程,也就是说马尔可夫过程就是一串随机的状态序列 S1,S2,... S_1, S_2, ...S 
1
 ,S 
2
 ,.... 为什么是无记忆性的呢?因为
Pss′=P(St+1=s∣St=s) P_{ss^\prime}=P(S_{t+1}=s | S_t=s)
ss 
 
 =P(S 
t+1
 =s∣S 
t
 =s)
 
即下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关
 
[展开全文]

授课教师

暂无教师
微信扫码分享课程