写在前面,第一次写学习类博客,想把学习RL的一些内容记下来以便回顾,也能加深印象。如果有错误还请大家指正。
概括与基础-上
什么是强化学习?为什么关心?
智能体 (agent) 在与环境交互的过程中最大化 (maximize) 获得的所有奖励 (total amount of reward)。
强化学习与监督学习对比
监督学习
- 监督学习需要标记的数据,数据之间关联性较低,满足i.i.d(独立同分布)
- 数据有真实的标签
强化学习(以打砖块游戏(Breakout)为例)
- 数据不是i.i.d,数据之间有关联性,learner得到的数据是帧连续的。
- 对于一个动作,没有一个立刻的反馈,(因为最终追求的是maximize total reward )。
- 并没有一个确定的标签来判定一个动作是否正确。只能在游戏结束才能判定,不知道当前动作对游戏的胜利有帮助,这是一种delay reward(延迟奖励)。
对比总结
- 强化学习输入是序列的数据,数据不是独立的。
- learner并没有被告诉哪一个动作是最好的,learner需要自己不断尝试去学习。
- Trial-and-error exploration,在exploration(开发)和exploitation(试探)中平衡,这个问题在监督学习中没有出现(RL.sutton书中第二章讨论了这个问题,详见:)
- 没有supervisor,不知道当前动作是否是正确的(能够利益最大化),只有一个奖励信号,并且可能在一段时间之后才知道最终动作的奖励。
强化学习的特征-Features
- Trial-and-error exploration–在环境中探索进行学习
- Delayed reward–延迟的奖励
- Time matters (sequential data, non i.i.d data)–数据关联性
- Agent’s actions affect the subsequent data it receives(agent’s action changes the environment)–agent行为会影响其得到的数据
强化学习的优势
监督学习的标签由人标签,其性能有上限,而强化学习在环境中探索,可以获得超人类的性能。(AlphaGo)
例子–乒乓球(Pong)
动作:上移or下移。
Rollout:从当前帧生成很多局游戏,得到一堆观测,如上图。
通过这个例子,很好的说明了delay reward 的概念,只有在一局游戏结束,我们才能知道之前的一系列动作是否是正确的有利的动作。通过很多个Rollout能够学习到一个状态下最好的动作或动作序列。
深度强化学习
在deep learning 之前,往往是设计手工特征,通过提取特征来训练分类器。
在DRL中,可以构造一个end-to-end training,之间输入state,利用神经网络来拟合,直接输出action。
强化学习近些年来取得突破原因:
- 计算能力大大增加,可以大幅增加探索获得信息。train-and-error rollout
- 规则控制领域更加成熟。
- 有了端到端模型,可以使特征提取和价值估计(或策略估计)一起优化。
概括与基础-下
时序决策过程(Introduction to Sequential Decision Making)
智能体和环境-Agent and Environment
智能体通过与环境交互获得观测,利用这些观测进行不断尝试和探索,学习到能够使收益最大化的策略。
收益-Reward
- 奖励是环境的反馈信号
- 奖励是评估agent在某一时刻或者某一步动作的好坏
- 一些例子。。。
Sequential Decision Making
- agent的目的是选择能够获得最大化奖励的一系列动作
- action 需要一些长远的眼光——大局观,整体利益
- 奖励可能是延误的delayed,在几步之后才能知道当前动作的影响。
- trade off,在近期奖励和长期奖励之间平衡——选择有些动作可能获得目前看来最好的收益,但是在长期来看并不是很好的动作。
- 在和环境交互的过程中,我们可以得到一个观测,动作,收益的序列。如下公式所示:
- State是用来决定接下来会发生什么,可以看成关于 H t H_{t} Ht的函数。即 S t = f ( H t ) S_{t}=f(H_{t}) St=f(Ht)
环境状态和智能体状态(Environment state and agent state
S
t
e
=
f
e
(
H
t
)
S
t
a
=
f
a
(
H
t
)
S^{e}_{t}=f^{e}(H_{t}) \qquad S^{a}_{t}=f^{a}(H_{t})
Ste=fe(Ht)Sta=fa(Ht)
这里提到了两个概念:
- Full observability(全观测):智能体可以观测到环境提供的所有信息——建模为(MDP)-马尔科夫决策过程。 O t = S t e = S t a O_{t}=S^{e}_{t}=S^{a}_{t} Ot=Ste=Sta
- Partial observability(部分观测):环境中有部分信息是智能体无法观测到的——建模为(POMDP)-部分可观测马尔科夫决策过程。
- 这里周老师提到玩纸牌的例子,我们只能看到牌面上的牌,对其他玩家手中的牌无法知道。
- 还有一个比较直观的是在驾驶过程中,我们只能对视野内的环境进行感知,但对于视线盲区的信息就无法获得。
RL-Agent 的主要组成
- Policy: agent’s behavior function–智能体用来选择下一个动作
- 是agent的行为模型,输入是state,输出是action。主要包含两种:
- Stochastic policy: 概率分布,输入state,输出的是action的概率,对于action进行采样,得到真实的动作。 π ( 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] .
- Deterministic policy:输出特定的动作,选取概率最大的动作 a ∗ = arg max a π ( a ∣ s ) a^*=\argmax_{a} \pi(a|s) a∗=aargmaxπ(a∣s)
- 是agent的行为模型,输入是state,输出是action。主要包含两种:
- Value function: how good is each state or action–agent对当前动作进行估值
- 计算在特定策略 π \pi π下,未来所以奖励之和。
- 有折价因子(Discount factor):对当前奖励和未来奖励给予不同的权重。当前奖励的权重更大。
- 状态值函数,表示状态的好坏:这里可以看到对于离当前时刻越远的奖励,其折合因子 γ \gamma γ的幂次越高,就说明越不重要。同时最终的奖励是一个期望式,因为注意到角标上的 π \pi π,说明这是在策略 π \pi π下得到的期望收益。 v π ( s ) = E π [ G t ∣ S t = s ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] , for all s ∈ S v_{\pi}(s)=\mathbb{E}_{\pi}[G_{t}|S_{t}=s]=\mathbb{E}_{\pi}\bigg[\sum^{\infin}_{k=0}\gamma^kR_{t+k+1} \bigg| S_{t}=s\bigg],\text{for all }s\in\mathcal{S} vπ(s)=Eπ[Gt∣St=s]=Eπ[k=0∑∞γkRt+k+1∣∣∣∣St=s],for all s∈S
- 动作值函数,表示某状态下采取某动作的好坏:这里是衡量一个状态 动作对的期望价值。这也是强化学习算法在学习的函数。 q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] = E π [ ∑ 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{E}_{\pi}\bigg[\sum^{\infin}_{k=0}\gamma^kR_{t+k+1} \bigg| S_{t}=s,A_{t}=a\bigg] qπ(s,a)=Eπ[Gt∣St=s,At=a]=Eπ[k=0∑∞γkRt+k+1∣∣∣∣St=s,At=a]
- Model: agent’s state representation of the environment–agent对环境的理解
- 模型决定了环境会对动作做出怎样的反应,这个反应分为两方面
- 其一是预测下一个状态,是一个概率分布: P s s ′ a = P [ S t + 1 = s ′ ∣ S t = s , A t = a ] \mathcal{P}^a_{ss'}=\mathbb{P}[S_{t+1}=s'|S_{t}=s,A_{t}=a] Pss′a=P[St+1=s′∣St=s,At=a]
- 其二是预测一个状态下对动作的回报(reward),期望式: R s s ′ a = E [ R t + 1 ∣ S t = s , A t = a ] \mathcal{R}^a_{ss'}=\mathbb{E}[R_{t+1}|S_{t}=s,A_{t}=a] Rss′a=E[Rt+1∣St=s,At=a]
- 模型决定了环境会对动作做出怎样的反应,这个反应分为两方面
强化学习分类
例子
下面通过一个例子讲解了policy-base和value-base两种算法的概念和区别:
走迷宫:
- 每走一步会有 -1 的reward。
- 动作空间:上下左右
- 状态:agent的位置
如果使用policy-base的方法来学习,最终得到的是一个策略,及在每个状态下我们要采取的动作,如下图:
如果采用value-base的方法来学习,我们最终得到的是每一个状态的价值估计,我们就可以让agent的策略为选择更大价值的状态
基于agent所学来分类-base on what agent learns
- **Value-based agent:**学到的是value function-价值函数,从价值函数我们可以推演出策略。
- Policy-based agent: 直接学习到策略
- Actor-Critic agent: 同时学习价值和策略函数,通过两者的交互,选择最佳的action。
基于agent 是否学习环境模型
- Model-based: 学习状态的转移来采取措施。没有价值和策略函数。
- Model-free: 直接对状态和动作的价值进行估计和学习,不考虑状态之间转移的情况。
Exploration(试探)和 Exploitation(开发):
在已经确定所有动作的价值时,我们自然会选择价值最高的动作,这就是对当前已知知识的开发,贪心的选择价值最优的动作。–(选择最喜欢的餐馆)。
但是当agent刚开始学习是,对状态下每个动作的价值估计可能是不准确的,非贪心动作可能其期望收益比当前贪心动作的收益更高,这就需要agent有试探,试探非贪心动作,与环境交互更加全面,这样能够获得对所有动作更准确的价值估计。–(尝试一个新的餐馆,可能踩雷,但也可能更好吃)。
这就需要在两者之间做权衡(trade-off)
(这一部分内容在Sutton-RL书第二章有详细阐述)下面是周老师给出的一些例子。