强化学习——强化学习概述

本篇博客是对强化学习的基本概念进行解释,无深入的算法推导

1.强化学习 Reinforcement Learning

强化学习是机器学习的一个子类别,它模拟了人类进行学习的过程,即从一开始完全随机的进行行动,通过不断地尝试,从错误中学习,最后找到规律,找到了达到目的的方法。

1.1. 强化学习的目的

强化学习中包含了两个实体,智能体(Agent)和环境(environment),如下图所示:

行为Action
环境的状态State/Observation
反馈Reward
智能体Agent
环境Environment

名词解释
智能体(Agent):强化学习算法
环境(Environment):Agent的作用空间,可以认为除Agent外的一切皆为环境。
行为(Action):也称策略、决策。指的是Agent的输出,作用于环境
环境的状态(State/Observation):Observation指的是被Agent观测到的部分环境的状态,State指的是整个环境的状态。在本文中,未特定说明的“状态”、“State”均指“Observation”,也就是被Agent观测到的部分环境的状态。
反馈(Reward):量化后的反馈也称奖励。反馈指的是Agent的行为作用于Environment后,环境中的某一个特定的变量产生的影响。

如果我们用学术化一点的语言来描述强化学习,可以表达为:强化学习的目的就是让一个智能体(Agent) 在一个复杂不确定的环境(Environment)里面去极大化它能获得的反馈(Reward)。

举个例子,在现实世界中,我们可以将人看做Agent,整个世界看做Environment,人不断地在世界中进行各种行为(Action),生存情况(Reward)也在不断变化,人的最终目的就是学会通过自己的行为,使自己在世界中的生存情况变得更好。

1.2. 强化学习的过程

在强化学习过程中,智能体(Agent)环境(Environment) 一直在交互。智能体(Agent)环境(Environment) 中获取到 环境的状态(State),并根据它做出一个 行为(Action),这个 行为(Action) 会导致 环境的状态(State) 发生变化,并且 智能体(Agent) 会从 环境(Environment) 的变化中得到一定的 反馈(Reward),该 反馈(Reward) 用于 智能体(Agent) 判断自己刚才的 行为(Action) 是否合理。

根据强化学习的目的,我们可以知道,Agent采取的Action能获得越好的Reward,说明Agent越成功。

强化学习的一次训练可以称为一个回合(episode)或试验(trial),当前的 Agent 去跟环境交互,会得到一堆观测。每一个观测都可视为一个轨迹(trajectory)。轨迹就是当前的Observation以及它采取的Action,即状态和动作的一个序列: τ = ( s 0 , a 0 , s 1 , a 1 , . . . , s n , a n ) \tau=(s_0,a_0,s_1,a_1,...,s_n,a_n) τ=(s0,a0,s1,a1,...,sn,an) τ \tau τ中,每一对 ( s i , a i ) (s_i,a_i) (si,ai)都有一个 r i r_i ri,最后一对状态-动作 ( s n , a n ) (s_n,a_n) (sn,an)结束后,Agent就会知道到底自己的最终反馈 R = ∑ r i R=\sum r_i R=ri是多少。我们可以通过观测序列以及 Eventual Reward 来训练这个 Agent ,使它尽可能地采取可以获得这个 Eventual Reward 的动作。

1.3. 强化学习的特点

首先我们对比一下监督学习和强化学习:

  • 监督学习(Supervised Learning)需要有一大堆带有标注的独立数据,这些数据可以用散点图表示。监督学习分类器为了分辨出这些不同的数据,训练过程中就需要将预测结果与标注(label)进行比对,比对结果通常用损失函数(loss function)表示,监督学习分类器就是根据损失函数来修正自己的预测过程。
  • 强化学习(Reinforcement Learning)通常需要前后关联的数据输入,数据的连续性很强。另一方面,强化学习的反馈通常来的很慢,即 延迟反馈(Delayed Reward) 现象,一个很棒的策略也许并不会立刻带来高反馈,一个错误的策略也不一定会立刻导致低反馈。就类似我们今天看了书并不会立刻带来成绩的提升,今天没看书也并不会立刻让自己不及格。所以强化学习这么困难的原因是没有得到很好的反馈,一个很好的反馈通常需要一段时间内的策略积累。

在这里插入图片描述

从上面的比较中我们可以看出强化学习大致有以下四个特点:

  1. 时间相关(Time matters)
    强化学习的输入有很强的时间连续性,并不是像监督学习的样本都是独立分散的;
  2. 依赖反馈
    强化学习Agent并没有被告诉什么是正确的策略。Agent需要自己去发现哪些策略可以使得它最后得到Reward尽可能高,这只能在不停地尝试中通过Reward来调整策略;
  3. 试错探索(Trial-and-Error Exploration)
    Agent 是通过不断地试错探索(Trial-and-Error Exploration)来提高自己的能力的。Exploration(探索) 和 Exploitation(利用) 是强化学习里面非常核心的一个问题,通常,强化学习需要在 Exploration 和 Exploitation 之间取得一个权衡(Trade-Off),这点在2.4. 探索与利用 Exploration and Exploitation中还会有解释。
  4. 延迟反馈(Delayed Reward)
    强化学习有很严重的延迟反馈(Delayed Reward)现象,会在策略完成一段时间之后再通过反馈信号(Reward Signal)来对策略的合理性作出判断。由于没有得到即时反馈,Agent 的学习显得非常困难。当你采取一个行为过后,如果是监督学习,你就立刻可以获得一个指引,就说你现在做出了一个错误的决定,那么正确的决定应该是谁。而在强化学习里面,环境可能会告诉你这个行为是错误的,但是它并没有告诉你正确的行为是什么。而且更困难的是,它可能是在一两分钟过后告诉你错误,它再告诉你之前的行为到底行不行。

强化学习的特点决定了它具有很强的自我探索能力,通常不需要像监督学习那要依靠人类,所以它具有超越人类的潜力,因为从强化学习的角度讲,人类处理问题的过程也是一个强化学习的过程,因此高速运行的计算机可以有更多的试错机会去尝试那些人类未曾尝试过的方法,其中就可能包含了比人类更好的方法。

在这里插入图片描述

2. 序列决策过程 Sequential Decision Making

2.1. 智能体(Agent)与动作空间(Action Spaces)

2.1.1. 智能体 Agent

对于一个强化学习 Agent,它有如下组成成分:

  • Agent 有一个策略函数(Policy Function)。Agent会用这个策略函数来选取下一步的策略;
  • Agent 有一个价值函数(Value Function)。价值函数用来对当前Observation进行评估,也就是评估当前进入的这个Observation,可以对后面的Reward带来多大的影响。当价值函数大的时候,说明当前的Observation越有利;
  • Agent 有一个模型(Model)。模型表示了 Agent 在这个Observation学习到的Actions。
2.1.1.1. 策略函数

策略(Policy)决定了Agent 的Action,它是一个函数,把输入的Observation变成Action。

通常有两种 Policy:

  1. 随机性策略 Stochastic Policy
    随机性策略会得到多个Action以及它们的概率,对所有Action根据概率抽选,最终确定一个输出Action。表示为: π ( a ∣ s ) = P ( A t = a ∣ S t = s ) \pi(a|s)=P(A_t=a|S_t=s) π(as)=P(At=aSt=s)
  2. 确定性策略 Deterministic Policy
    确定性策略也会得到多个Action以及它们的概率,但永远只输出概率最高的那个Action,而不是进行抽选。表示为: a ∗ = arg max ⁡ a π ( a ∣ s ) a^*=\argmax_a\pi(a|s) a=aargmaxπ(as)

通常情况下,强化学习一般使用随机性策略。随机性策略有很多优点:

  • 在学习时可以通过引入一定随机性来更好地探索环境,使Agent发现更好的策略的成为可能;
  • 随机性策略的动作具有多样性,这一点在多个Agent博弈时也非常重要。采用确定性策略的Agent总是对同样的环境做出相同的动作,会导致它的策略很容易被预测。
2.1.1.2. 价值函数

价值函数的定义其实是一个期望,一般是指策略函数的期望。可以表达为:期望 E π \mathbb{E}_{\pi} Eπ ,其中 π \pi π是指 π \pi π 函数, π \pi π 函数代表了已知某一个策略函数(Policy Function)可以得到的反馈。

价值函数可以表示为: v π ( s ) = E π [ G t ∣ S t = s ] = π π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] , s ∈ R v_\pi(s)=\mathbb{E}_\pi[G_t|S_t=s]=\mathbb{\pi}_\pi[\sum^{\infty}_{k=0}\gamma^kR_{t+k+1}|S_t=s],s\in R vπ(s)=Eπ[GtSt=s]=ππ[k=0γkRt+k+1St=s],sR

通常在价值函数里需要设置一个折扣因子(Discount Factor),用来避免在循环或者无限马尔科夫决策过程中产生无限回报。在循环或者无限的马尔科夫过程中,会一次又一次不断地的得到Reward,因此需要加入折扣因子来避免无穷大或者无穷小的值函数,无穷大或者无穷小的值函数通常是无意义的,在2.2.1. 马尔科夫过程 MDP中有取值范围的定义。

价值函数的另一种表达是Q函数,Q函数里面包含两个变量:状态和动作。当有了一个Q函数后,在Agent观察到某一种Observation时,能得到最优Reward的Action就可以通过这个Q函数求出。

Q函数可以表示为: q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] = π π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ] q_\pi(s,a)=\mathbb{E}_\pi[G_t|S_t=s,A_t=a]=\mathbb{\pi}_\pi[\sum^{\infty}_{k=0}\gamma^kR_{t+k+1}|S_t=s,A_t=a] qπ(s,a)=Eπ[GtSt=s,At=a]=ππ[k=0γkRt+k+1St=s,At=a]

2.1.1.3. 模型

模型预测了下一个状态会是什么样的,就是说下一步的环境状态和Reward取决于你当前的状态以及你当前采取的行为。它由两个部分组成:

  • Probability,用于表示环境的转移状态;
  • 反馈函数,用于表示当Agent在当前Observation采取了某一个行为时,可以得到多大的反馈。

可以表示为:
模型对下一状态的预测: P s s ′ a = P [ S t + 1 = s ′ ∣ S t = s , A t = a ] P_{ss'}^{a}=\mathbb{P}[S_{t+1}=s'|S_t=s,A_t=a] Pssa=P[St+1=sSt=s,At=a]模型对下一Reward的预测: R s a = E [ R t + 1 ∣ S t = s , A t = a ] R_{s}^{a}=\mathbb{E}[R_{t+1}|S_t=s,A_t=a] Rsa=E[Rt+1St=s,At=a]

2.1.1.4. 智能体的分类

根据强化学习 Agent 的不同特点,可以把 Agent 进行归类:

  • Value-based Agent,基于价值的 Agent
    Agent通过价值函数来决定价值最大的动作。基于价值迭代的方法只能应用在不连续的、离散的环境下(如围棋或某些游戏领域),对于行为集合规模庞大、动作连续的场景(如机器人控制领域),其很难学习到较好的结果(此时基于策略迭代的方法能够根据设定的策略来选择连续的动作)。代表算法有 Q-learning、Sarsa 等;
  • Policy-based Agent,基于策略的 Agent。
    Agent会制定一套动作策略(确定在给定Observation下采取何种动作),并根据这一套策略选择Action。强化学习算法直接对策略进行优化,使制定的策略能够获得最高的反馈。代表算法有Policy Gradient算法等
  • Actor-Critic Agent,它是Value-based 和Policy-based 的结合。
    Actor-Critic 算法同时使用策略和价值评估来做出决策,其中,Agent会根据策略做出动作,而价值函数会对做出的动作给出价值,这样可以在原有的策略梯度算法的基础上加速学习过程,取得更好的效果。

此外,还可以通过 Agent 有没有学习环境模型来分类:

  • Model-based RL Agent,基于模型的强化学习Agent,根据环境中的经验,构建一个虚拟世界,同时在真实环境和虚拟世界中学习;
  • Model-free RL Agent,免模型的强化学习Agent,不对环境进行建模,直接与真实环境进行交互来学习到最优策略。它通过学习 Value Function 和 Policy Function 进行决策,通常需要大量的采样来估计状态、动作及反馈函数,从而优化动作策略。

总的来说,有模型学习相比于免模型学习仅仅多出一个步骤,即对真实环境进行建模。因此,一些有模型的强化学习方法,也可以在免模型的强化学习方法中使用。在实际应用中,如果不清楚该用有模型强化学习还是免模型强化学习,可以先思考一下,在Agent执行动作前,是否能对下一步的状态和反馈进行预测,如果可以,就能够对环境进行建模,从而采用有模型学习。

目前,大部分深度强化学习方法都采用了免模型学习,这是因为:

  1. 免模型学习更为简单直观且有丰富的开源资料,像 DQN、AlphaGo 系列等都采用免模型学习;
  2. 在目前的强化学习研究中,大部分情况下环境都是静态的、可描述的,Agent的状态是离散的、可观察的(如 Atari 游戏平台),这种相对简单确定的问题并不需要评估状态转移函数和反馈函数,直接采用免模型学习,使用大量的样本进行训练就能获得较好的效果。

以上所有的分类,均可用一张饼图表示:
在这里插入图片描述

2.1.2. 动作空间 Action Spaces

不同的环境允许不同种类的动作。在给定的环境中,有效动作的集合经常被称为动作空间(Action Space)。

例如围棋这样的环境有离散动作空间(Discrete Action Spaces),在这个动作空间里,Agent的动作数量是有限的。在其他环境,比如在工厂里的机械臂就有连续动作空间(Continuous Action Spaces) ,在连续空间中,动作是实值向量。
在这里插入图片描述

Reward 是从环境中选取的一个反馈信号,这个信号记录了这个 Agent 在某一步采取了某个策略是否得到 Reward 以及它的大小。

2.2. 部分可观测马尔科夫决策过程 POMDP

2.2.1. 马尔科夫过程 MDP

马尔科夫过程(Markov Decision Process,MDP)由三个部分组成:
1、 P a P^a Pa是每个Action的动态模型,表示为 P ( S t + 1 = s ′ ∣ S t = s , A t = a ) P(S_{t+1}=s'|S_t=s,A_t=a) P(St+1=sSt=s,At=a)
2、 R R R是反馈函数,表示为 R ( S t = s , A t = a ) = E [ R t ∣ S t = s , A t = a ] R(S_t=s,A_t=a)=\mathbb{E}[R_t|S_t=s,A_t=a] R(St=s,At=a)=E[RtSt=s,At=a]
3、折扣因子(Discount Factor) γ \gamma γ,折扣因子的取值范围是 γ ∈ [ 0 , 1 ] \gamma\in[0,1] γ[0,1]

2.2.2. 部分可观测马尔科夫决策过程 POMDP

一个高反馈通常是由一系列的动作得到的,所以这些采取的动作必须有长期的影响,但在这个过程里面,前期采取的动作所获得的反馈其实是被延迟了。

为了不使某一些“看起来暂时没有效果”的Action不被错误的判定为无效,强化学习需要对近期反馈和远期反馈进行权衡(Trade-Off)。

在 Agent 跟环境的交互过程中,获得很多Observation。Agent在每获得一个Observation都会采取一个Action,之后会得到一个Reward。所以强化学习的整个过程是一个“Observation → \rightarrow Action → \rightarrow Reward”的历史序列: H i s t o r y t = O b s e r v a t i o n 1 , R e w a r d 1 , A c t i o n 1 , . . . , O b s e r v a t i o n n , R e w a r d n , A c t i o n n History_t=Observation_1,Reward_1,Action_1,...,Observation_n,Reward_n,Action_n Historyt=Observation1,Reward1,Action1,...,Observationn,Rewardn,Actionn简写为 H t = O 1 , R 1 , A 1 , . . . , O n , R n , A n H_t=O_1,R_1,A_1,...,O_n,R_n,A_n Ht=O1,R1,A1,...,On,Rn,AnAgent 在采取新的Action时会依赖于它之前得到的历史序列,所以可以把整个问题的 状态空间 看成关于这个历史的函数: S t = f ( H t ) S_t=f(H_t) St=f(Ht)

在这里再次补充一下 State 和 Observation 的差别:
由于强化学习是以人类的角度来进行学习的,因此它不能获得一个系统的所有信息,例如我们用强化学习来玩王者荣耀,那么人类看王者荣耀是什么样的,Agent看王者荣耀就是什么样的,人类在看这一帧画面,Agent也在看这一帧画面。
因此,我们将Agent看到的环境称为Observation,整个系统的全部环境称为State。当 Agent 能够观察到环境的所有状态时,我们称这个环境是完全可观测的(Fully Observed)的, 此时Observation与State等价。

强化学习通常被建模成一个 POMDP 的问题。部分可观测马尔科夫决策过程(Partially Observable Markov Decision Processes, POMDP)是一个马尔科夫决策过程(MDP)的变种,它假设Agent无法得知环境的State,只能通过观察得到Observation,这个建模十分合理,比如在自动驾驶中,Agent只能感知传感器采集的有限的环境信息。

POMDP 可以用一个 7 元组描述: ( S , A , T , R , Ω , O , γ ) (S,A,T,R,\Omega, O,\gamma) (S,A,T,R,Ω,O,γ)其中 S S S 表示状态空间,是一个隐变量, A A A 为动作空间, T ( s ′ ∣ s , a ) T(s' | s, a) T(ss,a)代表了状态转移概率, R R R为反馈函数, Ω ( o ∣ s , a ) \Omega(o|s,a) Ω(os,a) 为观测概率, O O O为观测空间, γ \gamma γ 为折扣系数。

隐变量,是指无法观测的随机变量,通常只能通过可观测变量的样本对隐变量作出推断。
在强化学习中,由于 Observation → \rightarrow Action → \rightarrow Reward 这个过程可以不断重复,因此可以用强化学习过程中Agent获取的巨量Observation来表示State

3. 学习与规划 Learning and Planning

Learning 和 Planning 是序列决策的两个基本问题。

对于Learning(这里特指Reinforcement Learning),环境初始时是未知的,Agent 不知道环境如何工作,只能通过不断地与环境交互,逐渐改进策略。

对于Plannning,环境是已知的,Agent被告知了整个环境的运作规则的详细信息。Agent 能够计算出一个完美的模型,并且在不需要与环境进行任何交互的时候进行计算。Agent 不需要实时地与环境交互就能知道未来环境,只需要知道当前的状态,就能够开始思考,来寻找最优解。

一个常用的强化学习问题解决思路是,先学习环境如何工作,也就是了解环境工作的方式,即学习得到一个模型,然后利用这个模型进行规划。

4. 探索与利用 Exploration and Exploitation

4.1. 权衡 Trade-Off

在强化学习里面,Exploration 和 Exploitation 是两个很核心的问题。

  • Exploration 是说Agent通过尝试不同的行为来得到一个最佳的策略,得到最大反馈的策略。
  • Exploitation 是说Agent不再尝试新的行为,就采取已知的可以得到很高反馈的行为。

因为在刚开始的时候强化学习Agent 不知道它采取了某个行为会发生什么,所以只能通过试错去探索。所以 Exploration 就是在试错来理解采取的这个行为到底可不可以得到高的反馈。Exploitation 是说我们直接采取已知的可以得到很好反馈的行为。

所以这里就面临一个权衡(Trade-Off)问题:怎么通过牺牲一些短期的Reward来获得更大的长期Reward。

4.2. 多臂赌博机 Multi-armed Bandit

与监督学习不同,强化学习任务的最终反馈是在多步动作之后才能观察到,要实现一个复杂的强化学习系统很困难,不妨先考虑比较简单的情形:最大化单步反馈,即仅考虑一步操作。需注意的是,即便在这样的简化情形下,强化学习仍与监督学习有显著不同,因为机器需通过尝试来发现各个动作产生的结果,而没有训练数据告诉机器应当做哪个动作。

想要最大化单步反馈需考虑两个方面:

  1. 需知道每个动作带来的反馈;
  2. 要执行反馈最大的动作。

若每个动作对应的反馈是一个确定值,那么尝试遍所有的动作便能找出反馈最大的动作。然而,一般情况下,一个动作的反馈值是不确定的,仅通过一次尝试并不能确切地获得平均反馈值。

在现实生活中,恰好有一个事物对应了单步强化学习任务,即多臂赌博机(Multi-armed Bandit) ,也称 K-臂赌博机(K-armed Bandit),或多臂老虎机,或K-臂老虎机等等。

如图所示是一个单臂赌博机,多个单臂赌博机摆在一起就是多臂赌博机:
在这里插入图片描述

K-摇臂赌博机有 K 个摇臂,在投入一个硬币后可选择按下其中一个摇臂,每个摇臂以一定的概率吐出硬币,但这个概率赌徒并不知道。赌徒的目标是通过一定的策略最大化自己的反馈,即获得最多的硬币。

  • 若仅为获知每个摇臂的期望反馈,则可采用仅探索法(Exploration-Only):将所有的尝试机会平均分配给每个摇臂(即轮流按下每个摇臂),最后以每个摇臂各自的平均吐币概率作为其反馈期望的近似估计;
  • 若仅为执行反馈最大的动作,则可采用仅利用法(Exploitation-Only):按下目前最优的(即到目前为止平均反馈最大的)摇臂,若有多个摇臂同为最优,则从中随机选取一个。

显然,仅探索法能很好地估计每个摇臂的反馈,却会失去很多选择最优摇臂的机会;仅利用法则相反,它没有很好地估计摇臂期望反馈,很可能经常选不到最优摇臂。因此,这两种方法都难以使最终的累积反馈最大化。

事实上,探索(即估计摇臂的优劣)和利用(即选择当前最优摇臂)这两者是矛盾的,因为尝试次数(即总投币数)有限,加强了一方则会自然削弱另一方,这就是强化学习所面临的探索-利用窘境(Exploration-Exploitation Dilemma)。显然,想要累积反馈最大,则必须在探索与利用之间达成较好的权衡(Trade-Off)。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页