强化学习算法 { Value-Based Approach: Critic { State value function V π ( s ) State-Action value function Q π ( s , a ) ⟹ Q-Learning算法【训练Critic/值函数的参数:基于值函数结果来“间接”挑选最优 π】 Policy-Based Approach:Policy Gradient算法【“直接”训练 Actor /Policy π 的参数】 ⟹ PPO算法 Actor+Critic【使用Critic(比如Q-Learning)作为Policy Gradient算法(包括PPO)中评估策略好坏(Advantage)的手段】 \begin{aligned} \text{强化学习算法} \begin{cases} \text{Value-Based Approach:\color{violet}{Critic}} \begin{cases} \text{State value function $V^π(s)$}\\[2ex] \text{State-Action value function $Q^π(s,a)$ $\implies$ Q-Learning算法【训练Critic/值函数的参数:基于值函数结果来“间接”挑选最优 π】} \end{cases} \\[6ex] \text{Policy-Based Approach:Policy Gradient算法【“直接”训练 \color{violet}{Actor}\color{black}{/Policy π 的参数】}} \text{$\implies$ PPO算法} \\[2ex] \text{Actor+Critic}【\text{使用Critic(比如Q-Learning)作为Policy Gradient算法(包括PPO)中评估策略好坏(Advantage)的手段}】 \end{cases} \end{aligned} 强化学习算法⎩ ⎨ ⎧Value-Based Approach:Critic⎩ ⎨ ⎧State value function Vπ(s)State-Action value function Qπ(s,a) ⟹ Q-Learning算法【训练Critic/值函数的参数:基于值函数结果来“间接”挑选最优 π】Policy-Based Approach:Policy Gradient算法【“直接”训练 Actor/Policy π 的参数】⟹ PPO算法Actor+Critic【使用Critic(比如Q-Learning)作为Policy Gradient算法(包括PPO)中评估策略好坏(Advantage)的手段】
GitHub:Deep-Reinforcement-Learning-Algorithms-with-Pytorch
一、强化学习概述
1、强化学习概念
强化学习并不是某一种特定的算法,而是一类算法的统称。
如果用来做对比的话,他跟监督学习,无监督学习 是类似的,是一种统称的学习方式。
强化学习(Reinforcement Learning,RL)是机器学习中的一个领域,是学习“做什么(即如何把当前的情景映射成动作)才能使得数值化的收益信号最大化”。学习者不会被告知应该采取什么动作,而是必须自己通过尝试去发现哪些动作会产生最丰厚的收益。
强化学习算法的思路非常简单,以游戏为例,如果在游戏中采取某种策略可以取得较高的得分,那么就进一步「强化」这种策略,以期继续取得较好的结果。这种策略与日常生活中的各种「绩效奖励」非常类似。我们平时也常常用这样的策略来提高自己的游戏水平。
强化学习同机器学习领域中的有监督学习和无监督学习不同,有监督学习是从外部监督者提供的带标注训练集中进行学习(任务驱动型),无监督学习是一个典型的寻找未标注数据中隐含结构的过程(数据驱动型)。强化学习是与两者并列的第三种机器学习范式,强化学习带来了一个独有的挑战——“试探”与“开发”之间的折中权衡,智能体必须开发已有的经验来获取收益,同时也要进行试探,使得未来可以获得更好的动作选择空间(即从错误中学习)。
强化学习是一种对目标导向的学习与决策问题进行理解和自动化处理的计算方法。它强调智能体通过与环境的直接互动来学习,而不需要可效仿的监督信号或对周围环境的完全建模,因而与其他的计算方法相比具有不同的范式。
强化学习使用马尔可夫决策过程的形式化框架,使用状态,动作和收益定义学习型智能体与环境的互动过程。这个框架力图简单地表示人工智能问题的若干重要特征,这些特征包含了对因果关系的认知,对不确定性的认知,以及对显式目标存在性的认知。
价值与价值函数是强化学习方法的重要特征,价值函数对于策略空间的有效搜索来说十分重要。相比于进化方法以对完整策略的反复评估为引导对策略空间进行直接搜索,使用价值函数是强化学习方法与进化方法的不同之处。
2、强化学习模型核心要素
- 智能体(Agnet/Actor):可以感知环境的状态(State/Observation),并根据反馈的奖励(Reward)学习选择一个合适的动作(Action),来最大化长期总收益。
- 环境(Environment):环境会接收智能体(Agnet/Actor)执行的一系列动作,对这一系列动作进行评价并转换为一种可量化的信号反馈给智能体。
- 策略(Policy):定义了智能体在特定时间的行为方式。策略是环境状态到动作的映射。
- 回报函数(收益信号,Reward Function):定义了强化学习问题中的目标。在每一步中,环境向智能体发送一个称为收益的标量数值。
- 价值函数(Value Function):表示了从长远的角度看什么是好的。一个状态的价值是一个智能体从这个状态开始,对将来累积的总收益的期望。
- 环境模型(Environment Model):是一种对环境的反应模式的模拟,它允许对外部环境的行为进行推断。可选的。
其中,
- 智能体(Agnet/Actor)和环境(Environment)是强化学习中的两个可以进行交互的对象。
- 强化学习模型的设计者无法控制:环境(Environment)、回报函数(Reward Function),这两者是定死的,设计者无法改动。
- 强化学习模型的设计者能主动调整:智能体(Agnet/Actor)、策略(Policy),使得强化学习模型可以得到最大的Reword。
3、强化学习模型的马尔科夫决策过程 Markov decision process (MDP)
- 环境状态的集合 S S S。a set of environment and agent states, S S S;
- 动作的集合 A A A;a set of actions, A, of the agent;
- 在状态之间转换的规则(转移概率矩阵) P a ( s , s ′ ) = Pr ( s t + 1 = s ′ ∣ s t = s , a t = a ) P_{a}(s,s')=\Pr(s_{t+1}=s'\mid s_{t}=s,a_{t}=a) Pa(s,s′)=Pr(st+1=s′∣st=s,at=a)。 P a ( s , s ′ ) P_{a}(s,s') Pa(s,s′) is the probability of transition (at time t t t ) from state s s s to state s ′ s^′ s′ under action a。
- 规定转换后“即时奖励”的规则(奖励函数) R a ( s , s ′ ) R_a(s,s') Ra(s,s′)。 R a ( s , s ′ ) R_a(s,s') Ra(s,s′) is the immediate reward after transition from s s s to s ′ s' s′ with action a a a。
- 描述主体能够观察到什么的规则。
4、常用算法
- Monte-Carlo Learning
- Temporal-Difference Learning
- SARSA
- Q-Learning
二、Policy-Based Approach 和 Value-based Approach 的区别
-
Policy-Based Approach 是将计算出来的期望reward当作选择action的概率,期望的reward越大,对应的action被选中的概率也就越大,但不一定就会被选中,只是概率。典型代表Policy Gradient。
-
Value-based Approach 是根据计算出来的期望reward,选择最大的期望reward所对应的action。典型代表Q-Learning。
三、Policy-Based Approach:Learning an Actor/Policy π
Action=π(Observation) \text{Action=π(Observation)} Action=π(Observation)
- 其中:
- Observation \text{Observation} Observation 是函数 π π π 的输入;
- Action \text{Action} Action 是函数 π π π 的输出;
- 函数 π π π 可以是一个 Neural Network 或者其他函数。如果函数 π π π 是一个 Neural Network,则该 Reinforcemen Learning 就是 Deep Reinforcemen Learning。
- 将Actor类比为GAN中的Generator;
- 将Environment&Reward类比为GAN中的Discriminator;
- 强化学习的过程:就是不断调整Actor的参数,使得Actor输出的数据通过Reward Function之后的Reward 越大越好;
- 假设Actor、Environment、Reward都是Neural Network,通过Back Propagation 就可以调Actor的参数去maximize最终的Reward。但是,实际上Environment、Reward不是Neural Network。
- 如果发现不能微分,就用Policy Gradient硬Train就可以,这就是Reinforcemen Learning的核心。
1、Actor:Neural Network
2、Goodness of Neural Network
3、Policy Gradient Ascent
Pick the best Actor/Function
四、Value-based Approach:Learning an Critic ⟹ \implies ⟹ Q-Learning
Critic就是一个神经网络,以状态 s s s 为输入,以期望的Reward为输出。
- Critic本身并没有办法决定要采取哪一个Action。A critic does not determine the action.
- Critic的工作就是衡量一个Actor的优劣。Given an actor π, it evaluates the how good the actor is。
- An actor can be found from a critic.
- Critic是依赖于Actor的,因为不同迭代周期的Actor是不同的,所以即使输入相同的State,Critic的输出也是不同的。
1、Actor和Critic的区别
- Actor是以s为输入,输出对应的action和其概率。
- Criti则是以s为输入,输出对应的reward期望值。
2、为什么要有Critic
- 在Policy-Based Approach方法中,更新Actor时,我们定义的用来更新θ的梯度:
- 这其中 R ( τ ) R(τ) R(τ) 是machine与环境互动所获得的实际reward,这就导致具有很大的不确定性。
- 因为machine采取什么样的动作是一种概率性的行为,而同一个动作,环境给予什么样的reward也是具有随机性的,这样将会导致machine的学习效率比较低下,就像没头苍蝇乱撞,可能学习很久都找不到正确的方向。所以我们要给machine一个正确的方向,即使用它的期望值代替实际的reward,期望值是可以被估算、计算的,这样就有利于我们去设计特定的函数来估算、计算期望的reward,从而引导我们的machine去做出我们想要的action。
3、Critic和Q-Learning的区别
- Critic是只计算期望的reward,并不会根据这个reward选择action,
- 而Q-Learning则会根据估算出来的reward选择最大的那个reward对应的action。
4、value-based和policy-based的区别
- value-based是根据计算出来的期望reward,选择最大的期望reward所对应的action。典型代表Q-Learning。
- policy-based是将计算出来的期望reward当作选择action的概率,期望的reward越大,对应的action被选中的概率也就越大,但不一定就会被选中,只是概率。典型代表Policy Gradient。
5、如何获得Critic
非常简单,直接使用一个神经网络,
- 以状态 s s s 为输入,value V π ( s ) V^π(s) Vπ(s) 为输出即可。
- 以状态 ( s , a ) (s,a) (s,a) 为输入,value Q π ( s , a ) Q^π(s,a) Qπ(s,a)为输出即可。
6、Critic种类
6.1、State value function V π ( s ) V^π(s) Vπ(s)
- :When using actor π π π, the cumulated reward expects to be obtained after seeing observation (state) s s s until the end of this episode。即:在使用 Actor π π π 的情况下,从观察到状态 s s s 的时刻直到该轮episode结束所能得到的累计Reward。
6.1.1 评价Critic V π ( s ) V^π(s) Vπ(s) 的优劣方法01:Monte-Carlo based approach
- Critic 就去看那个 actor π π π 玩游戏,看 actor π π π 玩得怎么样
- 假设现在 Critic 观察到 actor π π π 经过 state S a S_a Sa 以后直到这轮游戏结束,它会得到的 accumulated 的 reward G a G_a Ga,那这个 Critic 就要说如果 input state S a S_a Sa,那我的 output 要跟 G a G_a Ga 越接近越好。这不过是一个 regression 的问题。这个 actor 要调它的参数,那它的 output 跟 G a G_a Ga 越接近越好
- 假设现在 Critic 观察到 actor π π π 经过 state S a S_a Sa 以后直到这轮游戏结束,它会得到的 accumulated 的 reward G b G_b Gb,那这个 Critic 就要说如果 input state S b S_b Sb,那我的 output 要跟 G b G_b Gb 越接近越好。这不过是一个 regression 的问题。这个 actor 要调它的参数,那它的 output 跟 G b G_b Gb 越接近越好
6.1.2 评价Critic V π ( s ) V^π(s) Vπ(s) 的优劣方法02:Temporal-difference approach
- 有时候有些游戏非常的长,如果你没有办法一边玩游戏,一边 update 你的 network 的话,那你会搞太久。
- 用 temporal-difference,有一个非常明确的好处,就是当游戏还没有结束,玩到一半的时候,就可以开始 update 你的 network
6.2、State-Action value function Q π ( s , a ) Q^π(s,a) Qπ(s,a)
When using actor
π
π
π, the cumulated reward expects to be obtained after seeing observation
s
s
s and taking action
a
a
a until the end of this episode。即:在使用 Actor
π
π
π 的情况下,从观察到状态
s
s
s 以及 action
a
a
a 的时刻直到该轮episode结束所能得到的累计Reward。
-
Q
π
(
s
,
a
)
Q^π(s,a)
Qπ(s,a) 理论上它会有两个 input,
s
s
s 跟
a
a
a,
Q
π
(
s
,
a
)
Q^π(s,a)
Qπ(s,a) 吃
s
s
s 跟
a
a
a 来决定说它要得到多少的分数
- 有时候我们会改写这个 Q function,假设你的 a 是可以穷举的,举例来说,在玩游戏的时候,a 只有向左/向右,跟开火三个选择
- 我们的 Q function 是 input 一个 state s,它的 output 分别就是 Q π ( s , a = l e f t ) Q^π(s, a=left) Qπ(s,a=left), Q π ( s , a = r i g h t ) Q^π(s, a=right) Qπ(s,a=right), Q π ( s , a = f i r e ) Q^π(s, a=fire) Qπ(s,a=fire)
- 这样的好处就是,你只要输入一个 state s ,你就可以知道,s 配上,向左的时候,分数是多少,s 配上向右的时候,分数是多少,s 配上开火的时候,分数是多少。
7、Q-Learning based on Q π ( s , a ) Q^π(s,a) Qπ(s,a)
- Given
Q
π
(
s
,
a
)
Q^π(s,a)
Qπ(s,a), find a new actor
π
′
π'
π′ “better” than
π
π
π,其中,“Better”的含义是指:
V
π
′
(
s
)
≥
V
π
(
s
)
V^{π'}(s)≥V^{π}(s)
Vπ′(s)≥Vπ(s) for all state
s
s
s。
π ′ ( s ) = arg max a Q π ( s , a ) π'(s)=\arg\max_aQ^π(s,a) π′(s)=argamaxQπ(s,a) - π ′ π' π′ does not have extra parameters. It depends on Q Q Q
- Not suitable for continuous action a
7.2 Tips of Q-Learning
- Target Network
- Exploration
- Noisy Net(Improved Exploration)
- Experience Replay Buffer(经验池)
- Prioritized Experience Reply Buffer
- Multi-step Experience Reply Buffer
- Distributional Q-function
- DQN
- Double DQN
- Dueling DQN
- rainbow
五、Actor+Critic(Critic和Actor结合)
让actor去根据critic的反馈更新,取代根据环境的反馈更新。
1、Actor-Critic
2、Advantage Actor-Critic
使用critic输出的value代替
R
(
τ
)
R(τ)
R(τ),具体公式如下图,这就是A2C策略。
3、Asynchronous Advantage Actor-Critic (A3C):开分身
4、Pathwise Derivative Policy Gradient(DDPG)【类似GAN】
六、Actor+Critic算法进化
1、Version0
首先我们还是需要搜集一些训练资料,就是需要搜集
s
s
s 跟
a
a
a 的 Pair 怎么搜集这个
s
s
s 跟
a
a
a 的 Pair 呢?你需要先有一个 Actor 这个 Actor 去跟环境做互动,它就可以搜集到
s
s
s 跟
a
a
a 的 Pair。
那这个 Actor 是哪里来的呢?你可能觉得很奇怪,我们今天的目标不就是要训练一个 Actor 吗?那你又说你需要拿一个 Actor去跟环境做互动 ,然后把这个 Actor 它的 s s s 跟 a a a 记录下来,那这个 Actor 是哪里来的呢?
你先把这个 Actor 想成就是一个随机的 Actor 好了,它就是一个随机的东西,那看到 s 1 s_1 s1,然后它执行的行为就是乱七八糟的,就是随机的,但是我们会把它在每一个 s s s 执行的行为 a a a通通都记录下来,记做: { s 1 , a 1 } , { s 2 , a 2 } , { s 3 , a 3 } , . . . , { s N , a N } \left\{s_{1}, a_{1}\right\} , \left\{s_{2}, a_{2}\right\} , \left\{s_{3}, a_{3}\right\} , ..., \left\{s_{N}, a_{N}\right\} {s1,a1},{s2,a2},{s3,a3},...,{sN,aN}。
那通常我们搜集资料的时候不会只把 Actor 跟环境做一个 Episode,通常会做多个 Episode,然后期待你可以搜集到足够的资料。比如说跑 5 个 Episode,然后才搜集到足够的资料。
在搜集数据的过程中,我们就是去观察 某一个 Actor 它跟环境互动的状况,那把这个 Actor 在每一个 Observation 执行的 Action 都记录下来,然后接下来我们就去评价每一个 Action 它到底是好还是不好,评价完以后 我们就可以拿我们评价的结果 { A 1 , A 2 , A 3 , A N } \{\mathrm{A}_{1} , \mathrm{A}_{2}, \mathrm{A}_{3}, \mathrm{A}_{N}\} {A1,A2,A3,AN} 来训练我们的 Actor。
那怎么评价呢?我们刚才有说,我们会用 { A 1 , A 2 , A 3 , . . . A N } \{A_1,A_2,A_3,...A_N\} {A1,A2,A3,...AN} 这一个东西来评价在每一个 Step。
我们希不希望我们的 Actor 采取某一个行为,那最简单的评价方式是假设在某一个 Step s 1 s_1 s1 我们执行了 a 1 a_1 a1,然后得到 Reward r 1 r_1 r1,那 Reward 如果如果是正的,那也许就代表这个 Action 是好的,那如果 Reward 是负的,那也许就代表这个 Action 是不好的。那我们就把这个 Reward r 1 , r 2 r_1, r_2 r1,r2 当做是 { A 1 , A 2 , A 3 , . . . A N } \{A_1,A_2,A_3,...A_N\} {A1,A2,A3,...AN} 的取值。
- A 1 A_1 A1 就取值 r 1 r_1 r1, A 2 A_2 A2 就取值 r 2 r_2 r2, A 3 A_3 A3 就取值 r 3 r_3 r3,$ A_N$ 就取值 r N r_N rN 。那这样等同于你就告诉 machine 说如果我们执行完某一个 Action a 1 a_1 a1,那得到的 Reward 是正的,那这就是一个好的 Action,以后看到 s 1 s_1 s1 就要执行 a 1 a_1 a1, 如果在 s 2 s_2 s2 执行 a 2 a_2 a2得到 Reward 是负的, 就代表 a 2 a_2 a2 是不好的 a 2 a_2 a2,就代表所以以后看到 s 2 s_2 s2 的时候就不要执行 a 2 a_2 a2。
- 这个 Version 0 它并不是一个好的版本,为什么它不是一个好的版本呢 因为你用这一个方法。你把
A
1
A_1
A1 设为
r
1
r_1
r1,
A
2
A_2
A2 设为
r
2
r_2
r2 这个方法训练出来的 Network是一个短视近利的 Actor,它就是一个只知道会一时爽的 Actor,它完全没有长程规划的概念。怎么说呢?因为我们知道说每一个行为其实都会影响互动接下来的发展,也就是说 Actor 在
s
1
s_1
s1 执行
a
1
a_1
a1 得到
r
1
r_1
r1 这个并不是互动的全部,因为
a
1
a_1
a1 影响了我们接下来会看到
s
2
s_2
s2,
s
2
s_2
s2 会影响到接下来会执行
a
2
a_2
a2,也影响到接下来会产生
r
2
r_2
r2,所以
a
1
a_1
a1 也会影响到
我们会不会得到 r 2 r_2 r2,所以每一个行为并不是独立的,每一个行为都会影响到接下来发生的事情。 - 而且我们今天在跟环境做互动的时候 有一个问题叫做Reward Delay。就是有时候你需要牺牲短期的利益以换取更长程的目标。在这个 Space Invaders 的游戏里面,你可能需要先左右移动一下进行瞄准,然后射击才会得到分数。而左右移动这件事情没有任何 Reward 的,也就是说 左右移动这件事情得到的 Reward 是0,只有射击才会得到 Reward。但是并不代表左右移动是不重要的,我们会先需要左右移动进行瞄准,那我们的射击才会有效果。所以有时候我们会需要牺牲一些近期的 Reward 而换取更长程的 Reward。
- 所以今天假设我们用 Version 0 那会发生什么事呢?会发生说今天 Machine只要是采取向左跟向右,它得到的 Reward 会是 0。如果它采取开火,只有开火的时候 它得到的 Reward 才会是正的。那这样 Machine 就会学到:只有疯狂狂开火才是对的。因为只有开火这件事才会得到 Reward,其它行为都不会得到 Reward。所以其它行为都是不被鼓励的,只有开火这件事是被鼓励的。Version 0 就只会学到疯狂开火而已。
- 所以接下来怎么办呢?我们开始正式进入 RL 的领域,真正来看 Policy Gradient 是怎么做的。所以我们需要有 Version 1。
七、强化学习应用示例
以经典的 Flappy Bird 游戏为例,智能体就是游戏中我们操作的小鸟,整个游戏中的天空和遮挡管道即为环境,动作为玩家单击屏幕使小鸟飞起的行为,如下图所示:
目前,强化学习在包括游戏,广告和推荐,对话系统,机器人等多个领域均展开了广泛的应用。
1、游戏01-AlphaGo
AlphaGo 是于 2014 年开始由英国伦敦 Google DeepMind 开发的人工智能围棋软件。AlphaGo 使用蒙特卡洛树搜索(Monte Carlo tree search),借助估值网络(value network)与走棋网络(policy network)这两种深度神经网络,通过估值网络来评估大量选点,并通过走棋网络选择落点。
2、游戏02-AlphaStar
AlphaStar 是由 DeepMind 开发的玩 星际争霸 II 游戏的人工智能程序。AlphaStar 是由一个深度神经网路生成的,它接收来自原始游戏界面的输入数据,并输出一系列指令,构成游戏中的一个动作。
更具体地说,神经网路体系结构将 Transformer 框架运用于模型单元(类似于关系深度强化学习),结合一个深度 LSTM 核心、一个带有 pointer network 的自回归策略前端和一个集中的值基线。这种先进的模型将有助于解决机器学习研究中涉及长期序列建模和大输出空间(如翻译、语言建模和视觉表示)的许多其他挑战。
AlphaStar 还使用了一种新的多智能体学习算法。该神经网路最初是通过在 Blizzard 发布的匿名人类游戏中进行监督学习来训练的。这使得 AlphaStar 能够通过模仿学习星际争霸上玩家所使用的基本微观和宏观策略。这个初级智能体在 95% 的游戏中击败了内置的「精英」AI 关卡(相当于人类玩家的黄金级别)。
3、游戏03-OpenAI Five
OpenAI Five 是一个由 OpenAI 开发的用于多人视频游戏 Dota 2 的人工智能程序。OpenAI Five 通过与自己进行超过 10,000 年时长的游戏进行优化学习,最终获得了专家级别的表现。
4、游戏04-Pluribus
Pluribus 是由 Facebook 开发的第一个在六人无限注德州扑克中击败人类专家的 AI 智能程序,其首次在复杂游戏中击败两个人或两个团队。
5、广告和推荐
6、对话系统
7、机器人
维基百科:强化学习
强化学习简介 (Introduction of Reinforcement Learning)
马尔可夫决策过程 (Markov Decision Process)
利用动态规划求解马尔可夫决策过程 (Planning by Dynamic Programming)
强化学习(Reinforcement Learning)知识整理
强化学习(Q-Learning,Sarsa)
强化学习怎么入门好?
涨知识,什么是强化学习(Reinforcement Learning)
强化学习(一)模型基础.
强化学习入门总结
Flying Helicopter
Driving
Robot
Google Cuts Its Giant Electricity Bill With DeepMind-Powered AI
Text generation
Playing Video Game:Gym
Playing Video Game:Universe