Reinforcement Learning
一、马尔可夫决策过程
马尔可夫决策过程(markov decision process, MDP)是强化学习的基石。随机过程中有马尔可夫性质,即下一步的状态仅与当前状态有关而与之前所有状态无关:
P ( s t + 1 ∣ s t ) = P ( s t + 1 ∣ s t , s t − 1 , . . . , s 1 ) P(s_{t+1}|s_t)=P(s_{t+1}|s_t,s_{t-1},...,s_1) P(st+1∣st)=P(st+1∣st,st−1,...,s1)
基于马尔可夫性质有马尔可夫决策过程,MDP有五个组成部分 < S , A , P , R , γ > <S,A,P,R,\gamma> <S,A,P,R,γ>。 S S S为状态集合; A A A为行动集合; P P P为状态转移矩阵; R R R为奖励收益; γ \gamma γ为折合因子。
- 状态转移矩阵probability: P s s ′ a = P ( s t + 1 = s ′ ∣ s t = s , a t = a ) P_{ss'}^a=P(s_{t+1}=s'|s_t=s,a_t=a) Pss′a=P(st+1=s′∣st=s,at=a);表示看见s状态并采取a行动出现s’的概率(概率分布)
- 奖励函数reward functoin: R s a = E ( r t ∣ s t = s , a t = a ) R_s^a=E(r_t|s_t=s,a_t=a) Rsa=E(rt∣st=s,at=a);奖励是概率分布的将该分布的期望作为奖励函数(固定值)
原定义 s t s_t st时刻采取 a t a_t at行动后得到的奖励为 r t + 1 r_{t+1} rt+1,这特么有点反直觉吧?哪个二比定义的?下面统一贴合直觉。
- 策略policy: π ( a ∣ s ) = P ( a t = a ∣ s t = s ) \pi(a|s)=P(a_t=a|s_t=s) π(a∣s)=P(at=a∣st=s);看到状态而采取的行动(概率分布)
- V function(state value function) V π ( s ) V^{\pi}(s) Vπ(s):状态值函数。input是state,给定策略 π \pi π和初始状态 s s s。用以评估当前策略下状态的长期价值(discounted cumulative reward)。
- Q function(state-action value function) Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a):动作值函数。input是state和action的pair,给定策略 π \pi π、初始状态 s s s和动作 a a a。用以评估当前策略和状态下,采取动作 a a a的长期价值。(actor π \pi π不变)
本质上V和Q函数都是奖励函数,Q比V多了强制性抉择下一步的行为,所以Q和V都是discounted cumulative reward,但他俩都是期望。
二、贝尔曼方程
贝尔曼方程(bellman equation)非常重要,分为bellman expectation equation和bellman optimal equation。
- Bellman expectation equation:反映当前状态方程与下一状态方程的关系
- V π ( s ) = E π ( r t + γ V π ( s t + 1 ) ∣ s t = s ) V_{\pi}(s)=E_{\pi}(r_t+{\gamma}V_{\pi(s_{t+1})}|s_t=s) Vπ(s)=Eπ(rt+γVπ(st+1)∣st=s)
- Q π ( s , a ) = E π ( r t + γ Q π ( s t + 1 , a t + 1 ) ∣ s t = s , a t = a ) Q_{\pi}(s,a)=E_{\pi}(r_t+{\gamma}Q_{\pi}(s_{t+1},a_{t+1})|s_t=s,a_t=a) Qπ(s,a)=Eπ(rt+γQπ(st+1,at+1)∣st=s,at=a)
贝尔曼方程不仅能够反映相邻状态方程的关系,还能够反映出V和Q之间的关系。下式2带1得3,2带下1得4
- V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V_{\pi}(s)=\sum_{a∈A}\pi(a|s)Q_{\pi}(s,a) Vπ(s)=∑a∈Aπ(a∣s)Qπ(s,a)
- Q π ( s , a ) = r s a + γ ∑ s ′ ∈ S P s s ′ a V π ( s ′ ) Q_{\pi}(s,a)=r_s^a+{\gamma}\sum_{s'∈S}P_{ss'}^{a}V_{\pi}(s') Qπ(s,a)=rsa+γ∑s′∈SPss′aVπ(s′)
- V π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( r s a + γ ∑ s ′ ∈ S P s s ′ a V π ( s ′ ) ) V_{\pi}(s)=\sum_{a∈A}\pi(a|s)(r_s^a+{\gamma}{\sum}_{s'∈S}P_{ss'}^aV_{\pi}(s')) Vπ(s)=∑a∈Aπ(a∣s)(rsa+γ∑s′∈SPss′aVπ(s′))
- Q π ( s , a ) = r s a + γ ∑ s ′ ∈ S P s s ′ a ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) Q_{\pi}(s,a)=r_s^a+{\gamma}\sum_{s'∈S}P_{ss'}^{a}{\sum}_{a'∈A}\pi(a'|s')Q_{\pi}(s',a') Qπ(s,a)=rsa+γ∑s′∈SPss′a∑a′∈Aπ(a′∣s′)Qπ(s′,a′)
- Bellman optimal equation: 确定policy π \pi π使得return最大,此时每个s和a不再具有随机性
- V ∗ ( s ) = m a x a Q ∗ ( s , a ) V^*(s)=max_aQ^*(s,a) V∗(s)=maxaQ∗(s,a)
- Q ∗ ( s , a ) = r s a + γ ∑ s ′ ∈ S P s s ′ a V ∗ ( s ′ ) Q^*(s,a)=r_s^a+{\gamma}{\sum_{s'∈S}}P_{ss'}^aV^*(s') Q∗(s,a)=rsa+γ∑s′∈SPss′aV∗(s′)
- V ∗ ( s ) = m a x a ( r s a + γ ∑ s ′ ∈ S P s s ′ a V ∗ ( s ′ ) ) V^*(s)=max_a(r_s^a+{\gamma}{\sum_{s'∈S}}P_{ss'}^aV^*(s')) V∗(s)=maxa(rsa+γ∑s′∈SPss′aV∗(s′))
- Q ∗ ( s , a ) = r s a + γ ∑ s ′ ∈ S P s s ′ a m a x a Q ∗ ( s ′ , a ′ ) Q^*(s,a)=r_s^a+{\gamma}{\sum_{s'∈S}}P_{ss'}^amax_aQ^*(s',a') Q∗(s,a)=rsa+γ∑s′∈SPss′amaxaQ∗(s′,a′)
以上关系均可用决策树进行推导,V直接带入Q得到与下一V的关系,Q带入下一时刻state与action的V得到与下一Q的关系。
Deep Reinforcement Learning
本系列文为作者本人在学习过程中笔记,为本人复盘学习用,主观色彩浓厚,且仅适合对DRL有一定了解的人阅读!如与您的见解有出入请在评论区骂我。参考资料主要为李宏毅强化学习课程
把RL里面的function替换为neural network就是DRL。DL都是supervised learning的训练方法,也就是给network一个输入并告诉它输出应该是什么,即训练资料就是data和label。RL面对的问题,其需要解决的问题连人类都拿不准它的输出或结果,而这需要经过不断与环境互动才可能得到。
重要概念:
- state/observation/function input
- action/function output
- agent/actor/function
- policy for maximizing return(可以理解为trajectory,也可以理解为一个固定参数的actor,因为一个有确定policy的actor在一次episode中的trajectory和最后的reward是既定的,或存在一个可忽略不计的误差)
- return/total reward/cumulative reward…
- value funcion:某个状态的长期价值,即 G G G的数学期望( G G G定义为考虑长期价值后当前state的reward,即accumulated reward,是一个分布)
- V function(state value function) V π ( s ) V^{\pi}(s) Vπ(s):状态值函数。input是state,给定策略 π \pi π和初始状态 s s s。用以评估当前策略下状态的长期价值(discounted cumulative reward)。
- Q function(state-action value function) Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a):动作值函数。input是state和action的pair,给定策略 π \pi π、初始状态 s s s和动作 a a a。用以评估当前策略和状态下,采取动作 a a a的长期价值。(actor π \pi π不变)
文章目录
一、概述
1.1 基本框架
(1) Actor
(2) Environment
(3) Behaviour:Observation(function input);Action(function output);Reward
(4) Purpose:find a policy maximizing total reward Action = f(Observation)
1.2 训练步骤
- function with unkowen
- policy network----actor----neural network(等价关系)
- input:the observation of machine represented as a vector or a matrix
- output:each action correspond to a neuron in output layer
- define “loss”
- episode
- total reward(return)(maximize)
- optimization
- reward need the output of envionment and actor respectly
- question
- sample exists random
- environment and rewaed are black box rather network, and exists random
拿GAN类比:Actor就像是Generator,Envionment和Reward就像是Discriminator,训练的目的都是为了让return或者是Discriminator输出的value越大越好。但在GAN中,Generator和Discriminator是两个连在一起的neural network,而RL中的Environment和reward是两个既定规则,是码者所不知道的黑盒子,没有办法去用一般gradient descent的方法去调整参数。但是还是可以像前面三个步骤一样去训练RL,但在optimization步骤中会采取不同的方法。
二、Policy Gradient
- 首先需要思考如何让actor接受到某一个画面作为输入后输出一个action:可以想象成一个分类问题,actor的输出相当于对所有可能的action赋予概率,将最大概率的哪一个action作为真正的输出。更为具体地,假设需要让actor在接受s输入后,需要输出a’,但实际输出是a,再计算a和a’的cross-entropy,根据此定义一个loss function,此时Optimization policy就是找到Actor中的参数使得loss function最小,也就是实际和理想差异最小。上述过程是我们希望action是我们想要的行为,如果想要不要采取这个行为,那么将loss function加负号即可。上述思想借由训练classifier的思想,本质还是一个supervised learning,但接下来就是重点的不同之处。
- 经过上面步骤后,可以得到一个训练集{ { s i , a j s_i,a_j si,aj},±1},表示在 s i s_i si作为输入的情况下,输出是 a j a_j aj是我们想要的(+1)或者是我们不想要的(-1)。还可以更进一步,每一个行为并不只有想不想要二元分类,而是有一个对应的分数,来表示行为好的程度或者坏的程度。那么有了这些咨询,可以在上一步基础上定义一个loss function: L = ∑ A n e n L=\sum{A_ne_n} L=∑Anen。那么上一步问题就被定义为找到Actor中的参数使得该loss function最小。接下来的问题有两点,一是要怎么定出这个a,二是怎么产生s和a的pair
2.1 定义 G G G训练目标
- Version 0( G 1 = r 1 G_1=r_1 G1=r1)
- 定义:设计一个随机的初始actor去跟env互动得到训练资料。通常会作多个episode收集足够资料,再对每一个action进行评价。将每一个action的reward直接作为其评价结果。得到的最终数据集用来训练
- 问题:短视的版本。因为每一个行为都会关联接下来的所有行为,并非独立;此外,实际情况会需要reward delay,也就是需要牺牲短期利益而获取长期高额利益
- Version 1( G 1 = r 1 + r 2 + . . . + r N G_1=r_1+r_2+...+r_N G1=r1+r2+...+rN)
- 定义:评价不再是只取决于当前,而是考虑之后的所有reward加起来作为当前action的评价,那么这种评价被称为cumulative reward
- 问题:如果一次episode非常长,可能在最后kill the game的action的reward不应该归功于当前的action(简单来说就是当前的步骤可能对于最后赢得游戏或比赛没有太大的意义,或者当前的步骤对于最后一步的实现概率很低)
- Version 2( G 1 = r 1 + γ r 2 + γ 2 r 3 + . . . + γ N − 1 r N G_1=r_1+γr_2+γ^2r_3+...+γ^{N-1}r_N G1=r1+γr2+γ2r3+...+γN−1rN)
- 定义:在Version 1的基础上,设置一个γ,cumulative reward就是关于 γ \gamma γ的多项式,距离当前action的reward越远, γ \gamma γ次数递增( γ \gamma γ<1)即discounted cumulative reward(简单来说就是距离当前action越远,之后的action的影响就越小)
- 问题:许多RL都是在评价上做文章,即如何定义评价
- Version 3( G 1 ′ = G 1 − b G_1'=G_1-b G1′=G1−b)
- 定义:标准化定义好坏。最简单的就是设定一个baseline,让所有的评价都减去这个baseline,呈现让较小的评价为负数,较大的为正数,从而以正负定好坏。那么接下来就是去考虑如何设定baseline
- Version 3.5( A t =