强化学习算法 { Policy-Based Approach:Policy Gradient算法:Learning an Actor/Policy π Value-based Approach:Critic { State value function V π ( s ) State-Action value function Q π ( s , a ) ⟹ Q-Learning算法 Actor+Critic \begin{aligned} \text{强化学习算法} \begin{cases} \text{Policy-Based Approach:Policy Gradient算法:Learning an Actor/Policy π} \\[2ex] \text{Value-based Approach:Critic} \begin{cases} \text{State value function $V^π(s)$}\\ \\ \text{State-Action value function $Q^π(s,a)$ $\implies$ Q-Learning算法} \end{cases} \\[2ex] \text{Actor+Critic} \end{cases} \end{aligned} 强化学习算法⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧Policy-Based Approach:Policy Gradient算法:Learning an Actor/Policy πValue-based Approach:Critic⎩⎪⎨⎪⎧State value function Vπ(s)State-Action value function Qπ(s,a) ⟹ Q-Learning算法Actor+Critic
一、强化学习概述
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: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】
六、强化学习应用示例
以经典的 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