强化学习随笔

  • valuebase
  • 经验回放
  • 一个Q网络到两个Q网络
  • 计算目标Q值的方法:贪婪法到解耦目标Q值动作的选择和目标Q值的计算
  • 由经验回放采样到根据样本的TD误差进行采样:
  • 优化网络结构Dueling DQN
  • Policybase
  • 蒙特卡罗策略梯度reinforce算法:
  • Actor-critic算法
  • A3C异步AC
  • DDPG:深度确定性策略梯度
  • Off-policy和on-policy
  • 确定性策略和随机策略
  • 重要性采样的几个问题(针对off-policy)
  • 什么时候不可以使用经验回放
  • valuebase:
  • 经验回放:
  • 一个Q网络到两个Q网络:
  • 计算目标Q值的方法:贪婪法到解耦目标Q值动作的选择和目标Q值的计算:
  • 由经验回放采样到根据样本的TD误差进行采样:
  • 优化网络结构Dueling DQN:
  • Policybase:
  • 蒙特卡罗策略梯度reinforce算法:
  • Actor-critic算法:
  • A3C异步AC
  • DDPG:深度确定性策略梯度
  • Off-policy和on-policy:
  • 确定性策略和随机策略:
  • 重要性采样的几个问题(针对off-policy):
  • 什么时候不可以使用经验回放


valuebase

经验回放

一个Q网络到两个Q网络

计算目标Q值的方法:贪婪法到解耦目标Q值动作的选择和目标Q值的计算

由经验回放采样到根据样本的TD误差进行采样:

优化网络结构Dueling DQN

Policybase

蒙特卡罗策略梯度reinforce算法:

Actor-critic算法

A3C异步AC

DDPG:深度确定性策略梯度

Off-policy和on-policy

确定性策略和随机策略

重要性采样的几个问题(针对off-policy)

什么时候不可以使用经验回放

valuebase:

基于Q函数做的网络:引入一个动作价值函数Q’由参数W描述,接受状态与动作作为输入,计算后得到近似的动作价值:
q^(s,a,w)≈qπ(s,a)

经验回放:

把每次和环境交互得到的奖励和状态更新都保存起来,用于后面目标Q值的更新,Q -learning中用一个Q表来保存Q值的当前结果,但DQN没有,所以把和环境交互的数据保存下来用于训练,用作当前Q值(通过经验回放得到的目标Q值),另一个就是Q网络的目标Q值。二者有区别,然后通过反向传播更新Q网络。

一个Q网络到两个Q网络:

两个Q网络的目的是延时更新(一个Q网络导致训练和参数更新相关性太高,难以收敛)
当前网络:
选择动作和计算目标Q值使用一个网络,目标Q值将用于迭代更新网路的参数,导致二者相关性很高,难以收敛。
当前网络和目标网络:
目标网络不需要迭代更新参数,只用于每次计算Q值,然后隔一段时间复制一次当前网络的参数到目标Q网络。

计算目标Q值的方法:贪婪法到解耦目标Q值动作的选择和目标Q值的计算:

贪婪法:目标网络寻找目标Q网络中各个动作的最大Q值,导致估计过度。
解耦:在当前网络寻找最大Q值对应的动作(动作选择也由当前网络来做),然后用这个动作在目标网络里计算Q值(只有目标Q值计算由目标网络做)。

由经验回放采样到根据样本的TD误差进行采样:

经验回放采样是随机的,而根据样本的TD误差来采样会使得算法更容易收敛,TD误差大的样本对反向传播的作用越大,在Q网络中,TD误差就是目标Q网络和当前Q网络计算的Q值的差距。

优化网络结构Dueling DQN:

把Q网络分成两个部分,一部分仅和状态优化,为价值函数部分,另一部分同时和状态和动作都优化,为优势函数部分:
Q = V+A

Valuebase的不足之处:对连续动作的处理能力不足;对受限状态下的问题处理能力不足;在使用特征来描述状态空间中的某一个状态时,有可能因为个体观测的限制或者建模的局限,导致真实环境下本来不同的两个状态却再我们建模后拥有相同的特征描述,进而很有可能导致我们的value Based方法无法得到最优解。无法解决随机策略问题;Value Based强化学习方法对应的最优策略通常是确定性策略,因为其是从众多行为价值中选择一个最大价值的行为,而有些问题的最优策略却是随机策略,这种情况下同样是无法通过基于价值的学习来求解的。

Policybase:

对策略进行近似表示,策略π可以被描述为一个包含参数θ的函数:
πθ(s,a)=P(a|s,θ)≈π(a|s)
把策略表示成一个连续的函数,用连续函数的优化方法来寻找最优的策略。
策略函数的优化目标:
可以是初始状态的收获期望:
J1(θ)=Vπθ(s1)=Eπθ(G1)
在没有明确初始状态时可以是平均价值:

其中d是基于策略的静态分布。
或是每一个时间步的平均奖励:

最终有对参数求导的梯度:

策略函数的设计:
Softmax策略函数:使用描述状态和行为的特征ϕ(s,a) 与参数的线性组合来权衡一个行为发生的几率:

通过求导得到分值函数:

另一种高斯策略是应用于连续行为空间的一种常用策略,策略对应行为从高斯分布中产生,策略对应的分值函数为:

蒙特卡罗策略梯度reinforce算法:

使用价值函数V(S)来代替策略梯度公式中的Q(s,a)。策略函数可以是各种策略。
输入:蒙特卡罗完整序列,训练步长
输出:策略函数的参数

  1. for 每个蒙特卡罗序列:
        a. 用蒙特卡罗法计算序列每个时间位置t的状态价值vt
        b. 对序列每个时间位置t,使用梯度上升法,更新策略函数的参数θ:
    θ=θ+α∇θlogπθ(st,at)vt
    2. 返回策略函数的参数θ

Actor-critic算法:

Actor使用策略函数,负责生成动作和环境交互,critic使用价值函数,负责评估表现,指导actor动作。
算法要做两组近似:
一组是策略函数的近似,第二组是价值函数的近似:
类比蒙特卡罗法:
Actor需要更新参数,而策略函数不变,价值部分不再使用蒙特卡洛法得到,而是用critic网络,critic网络需要得到价值函数,可以使用DQN的做法:critic网络输入是状态,输出是每个动作价值或最优动作的价值。
现在我们汇总来说,就是Critic通过Q网络计算状态的最优价值vt, 而Actor利用vt这个最优价值迭代更新策略函数的参数θ,进而选择动作,并得到反馈和新的状态,Critic使用反馈和新的状态更新Q网络参数w, 在后面Critic会使用新的网络参数w来帮Actor计算状态的最优价值vt。
可以基于状态价值,也可以基于动作价值,还可以基于TD误差,或是优势函数,或基于TD(λ)误差。
状态价值:

动作价值:

TD误差:

基于优势函数:

TD误差和效用迹的乘积

对于critic本身的模型参数W一般用均方误差来迭代更新,若使用线性Q函数,则为

但一般使用神经网络来计算Q值。

A3C异步AC

特点:异步学习框架
包括一个GLOBAL network :共享的公共部分,包括actor和critic两部分的功能,
下面包括n个worker线程,每个线程里也有一个global network,每个线程独立和环境交互运行得到经验数据,线程之间互不干扰独立运行。
每个线程得到数据后,在自己的网络中训练,但是不更新自己线程的神经网络,而是更新公共的神经网络,n个线程独立的用累积的梯度分别更新公共部分的神经网络模型参数,每隔一段时间同步公共网络的参数,再和环境交互获得数据。
特点:网络结构优化
把AC网络的两个变成一个,输入状态S,同时得到价值V和对应策略π。
特点:critic评估点的优化
使用优势函数进行评估
采样使用n步采样来加速收敛

DDPG:深度确定性策略梯度

从AC出发,加入经验回放和双网络的方式。
从随机策略到确定性策略
去掉概率分布,每次确定动作。

从DPG到DDPG
基于Q值的随机策略梯度计算公式:

采样空间为
DPG基于Q值的确定性策略梯度计算公式是:

少了对动作的积分,多了回报函数对于动作的导数。
DDPG,相对于DPG加入双网络和经验回放机制。
DDQN当前网络进行动作选择(根据设定的贪婪策略)和参数更新,目标网络计算Q值,定期复制当前网络的参数。
对于DDPG来说,ACTOR网络是策略网络,是可以进行动作选择的,critic当前网络和目标网络相当于DDQN的当前网络和目标网络。
现在我们回到DDPG,作为DDPG,Critic当前网络,Critic目标网络和DDQN的当前Q网络,目标Q网络的功能定位基本类似,但是我们有自己的Actor策略网络,因此不需要ϵ−贪婪法这样的选择方法,这部分DDQN的功能到了DDPG可以在Actor当前网络完成。而对经验回放池中采样的下一状态S′使用贪婪法选择动作A′,这部分工作由于用来估计目标Q值,因此可以放到Actor目标网络完成。

DDPG参数更新为软更新:
因为是确定性的策略,为了增加学习的覆盖,在选择动作时加入噪声:
对于critic当前网络,损失函数是
对于actor当前网络,因为是确定策略,损失函数的梯度为

损失函数:Q值越大损失函数越小,直接在Q反馈的结果下加负号。

Off-policy和on-policy:

On-policy是指数据采样和当前更新的策略是同一个策略。
Off-policy是指数据采样的时候和更新的时候使用的是不同的策略,例如DQN,PG,AC等都是off-policy。

确定性策略和随机策略:

确定性策略:在状态选择动作的时候,动作是确定的一个,运行多少次都是选择相同的动作,不具有探索性,需要通过加入噪声来进行探索,但意为着求解损失函数时不需要通过大量采样。
随机策略:策略损失函数时关于状态和动作的期望,需要进行大量采样,但同时能将探索和改进集成到一个策略中。

重要性采样的几个问题(针对off-policy):

为什么Q-learning不要重要性采样?
因为对于Q系列的来说,因为是在计算Q的值,而跟所选择的策略无关,所以最终目的就算是为了每个状态时选择的动作能够最好,目标策略是贪婪的,所以是确定的相同策略。
需要重要性采样是在目标策略和当前策略都是随机策略的时候。

什么时候不可以使用经验回放

在单个网络的时候,因为估算损失函数时必须让数据时使用的策略函数和当前行动时的策略是同一个(如果用经验回放,参数更新了就会导致样本没法用),而使用的经验回放就需要两个网络,更新当前网络的参数,而目标网路参数不动,计算下次行动和损失函数中的值都由样本和目标网络来做,当前网络接受参数并更新。Off-policy和经验回放结合。