- 参考:周博磊老师的教程
文章目录
一、什么是强化学习
1. 定义
- RL中我们构建一个Agent,它要试图在与一个复杂且不确定的环境的交互中最大化其获得的奖励。
- 每轮计算中,Agent根据状态 S t S_t St,执行动作 A t A_t At,导致环境变化,得到新的状态 S t + 1 S_{t+1} St+1和奖励 R t + 1 R_{t+1} Rt+1
2. 强化学习与监督学习的区别
-
在监督学习满足一下两个特点:
- 假设样本服从i.i.d独立同分布,即所有样本满足一个未知分布,每个样本都是从中采样获得的,训练数据和测试数据都服从此分布。简单来说,任意样本间不应该有相关性,之前选取的样本不应该对之后样本的选择有任何影响,若样本间有相关性,结果将不稳定
- Agent知道样本的标记。例如在训练一个网络时,网络会被告知每个样本的标记,错误被定义为损失函数,通过BP算法训练
-
强化学习不满足这两点:
- Agent得到的观测数据不是同分布的,而是有时序性的(correlated time series data),上一帧会影响下一帧
- 没有立即的反馈
-
所以Reference Learning不同于Supervised Learning之处在于以下几点
- Sequential data as input (not i.i.d)
- The learner is not told which action to take, but instead must discover which action yield the most reward by trying them
- balance between exploration and exploitation(Agent要在 “探索” 和 “利用” 中找到平衡)
- There is no supervisor, only a reward signal, which is also delayed
3. 强化学习的特点
- 四大特点
- Trial - and - error exploration (balance between exploration and exploitation)
- Delayed reward
- Time matters (sequential data, not i.i.d)
- Agent‘s action affect the subsequent data it received (Agent’s action changes the environment)
- Big deal:强化学习有可能获得超过人类的表现!
- 监督学习中,由于标记来自人类标记者,所以性能上限仅限于人的水平
- 强化学习中,Agent的性能完全来自于其自发地和环境进行交互,因此不受人类水平的限制。AlphaGo就是基于强化学习的
4. 强化学习的示例
-
任务:训练一个玩乒乓球游戏的Agent,action只有move up和move down
-
设计出Agent的结构如下
把游戏画面转为像素数组后输入策略网络,最终得出动作的概率。
我们把游戏中两个拍子位置的任意组合看作一个环境状态(state),游戏过程中环境的状态在不断变化。 -
这里的Policy Network可以用多种方式得到
- 监督学习的方式:给出大量的示教轨迹,从中提取 <状态,动作> 样本作为训练数据,然后使用反向传播算法训练网络。这种方式也称为 “模仿学习”
- 强化学习的方式:训练时从每一帧开始进行多次rollout获取多个序列(生成多局游戏,采样动作序列,直到游戏结束),每个序列称为一个 “轨迹” ,最后WIN/LOSE的结果作为每个轨迹的奖励,利用这些 <状态,奖励> 数据进行训练
二、时序决策过程及相关概念
-
agent要学习如何与环境进行交互,它感知环境的状态(state)获取一个观测(observation)并从环境获取奖励(reward),然后执行动作(action),动作又会影响环境的状态
-
agent选择action的过程是一个时序决策过程,这里捋一下相关概念
1. 基础概念
(1)奖励 reward
- reward是一个标量反馈信号(scalar feedback signal),描述了agent在这一步动作的好坏程度
- 强化学习是基于reward最大化的:agent的目标是最大化reward
- 示例
- 下棋游戏:胜/负棋局
- 股票:获利/亏损
- 电子游戏:得分/扣分
(2)历史 history
- history是一个 “观测、动作、奖励” 序列
- 形式化描述: H t = O 1 , A 1 , R 1 , . . . , O t − 1 , A t − 1 , R t − 1 H_t = O_1,A_1,R_1,...,O_{t-1},A_{t-1},R_{t-1} Ht=O1,A1,R1,...,Ot−1,At−1,Rt−1
- 下一步发生的事取决于历史
(3)状态 state
- state是关于history的函数,决定了下一步发生什么
- state又分成环境状态和agent状态
- 环境状态: S t e = f e ( H t ) S_t^e = f^e(H_t) Ste=fe(Ht),这是环境的真实状态
- Agent状态: S t a = f a ( H t ) S_t^a = f^a(H_t) Sta=fa(Ht),Agent状态来自对环境状态的观测(observation)。由于不能观测到环境的方方面面, S t a S_t^a Sta和 S t e S_t^e Ste通常不等
(4)全观测 full observability
- agent直接观测到环境的所有方面,此时有 O t = S t a = S t e O_t = S_t^a = S_t^e Ot=Sta=Ste
- 这是马尔科夫决策过程(MDP)中的形式
(5)部分观测 partial observability
- agent不能观测到环境的所有方面,此时有 S t a ≠ S t e S_t^a \neq S_t^e Sta=Ste
- 这是部分可观察马尔可夫决策过程(POMDP)中的形式
- 比如玩乒乓球游戏时,Agent只能观测到游戏画面一帧的信息,不能获得游戏内部的所有信息(运作状态)
2. 时序决策
- 对于Agent,要做出一系列决策,以在未来获取最大的reward,它具有以下特点
- action可能导致长期的后果(long term consequence)
- reward可能要延迟给出(每步action不能直接产生reward)
- Agent要在近期奖励和远期奖励中权衡(Trade-off),长期奖励更关键
三、强化学习Agent的组成部分
- 一个Agent至少包含以下方面
- 决策函数(policy function):用于选取Agent的下一步action
- 价值函数(value function):Agent用它对当前状态进行估价,价值越高,进入这个状态越有利
- 模型(model):这是Agent对环境的理解(agent’s state representation of the environment),它体现了Agent认为的环境将要发生的变化
- 利用policy function、value function和Model,可以构造马尔科夫决策过程(MDP)
1. policy function ( Π \Pi Π)
- 决策函数是Agent的 “行为模型”,本质上是映射: s t a t e / o b s e r v a t i o n → a c t i o n state/observation \to action state/observation→action
- 两种Policy
- 采样策略(Stochastic policy):执行的action来自动作概率分布上的一个采样(比如30%向上,70%向下)。这时 Π \Pi Π描述一个概率, Π ( 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):执行的action为动作概率分布中概率最大的,这个动作记作 a ∗ a^* a∗。 a ∗ = a r g m a x a Π ( a ∣ s ) a^* = \mathop{argmax}\limits_{a} \Pi(a|s) a∗=aargmaxΠ(a∣s)
2. value function( V V V)
- 价值函数是在确定Policy Π \Pi Π 的情况下,对未来奖励的一个加权总和(expected discounted sum of future rewards under a particular policy)
- 折扣因子 γ \gamma γ(discount factor):这个表示了短期奖励和长期奖励的权重关系,详见下面公式
- 价值函数的作用:评估状态和动作的好坏程度
- 利用价值函数,我们把Policy Π \Pi Π 下状态s的价值定义为
V Π ( s ) = E Π [ G t ∣ S t = s ] = E Π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] , s ∈ S V_{\Pi}(s) =\mathbb{E}_{\Pi}[G_t | S_t = s] = \mathbb{E}_{\Pi}[\sum\limits_{k=0}^{\infty} \gamma^k R_{t+k+1} | S_t = s], s\in S VΠ(s)=EΠ[Gt∣St=s]=EΠ[k=0∑∞γkRt+k+1∣St=s],s∈S
这是Policy Π \Pi Π 下状态s 的 “未来可能获得的奖励的加权和( G t G_t Gt)” 的当前期望值,它描述了进入状态s的 “长期价值” (long-term value),真正表示了进入状态s有多好
3. Q - function( q q q)
-
q函数和V函数非常像,定义如下
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 ] , s ∈ S , a ∈ A q_{\Pi}(s,a) = \mathbb{E}_{\Pi}[G_t | S_t = s,A_t=a] =\mathbb{E}_{\Pi}[\sum\limits_{k=0}^{\infty} \gamma^k R_{t+k+1} | S_t = s,A_t=a], s\in S ,a\in A qΠ(s,a)=EΠ[Gt∣St=s,At=a]=EΠ[k=0∑∞γkRt+k+1∣St=s,At=a],s∈S,a∈A -
这是Policy Π \Pi Π 下状态s且选择动作a 的 “未来可能获得的奖励的加权和( G t G_t Gt)” 的当前期望值
-
这个q函数可以用来选择动作a,是RL算法在学习的一个函数
4. Model
- 模型决定了Agent认为的环境下一步的变化,描述了在状态s采取动作a以后下一步的状态和奖励情况
- 组成
- 下一步状态的预测: 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]
- 下一步奖励的预测: 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+1∣St=s,At=a]
四、Agent的分类
- 下面会用这个迷宫任务举例
1. 按学习内容分
(1)基于价值函数的Agent(value-based agent)
-
这种Agent从value function中推算出policy
- 显式学习:value function
- 隐式学习:policy
-
对于迷宫任务,value-based agent学得每个state下的value,从中可以推出action的策略(一直向v(s)减小的方向走)
(2)基于策略的Agent(policy-based agent)
-
这种Agent,给一个state,就输出一个action的概率分布
- 显式学习:policy
- 不学习:value function
-
对于迷宫任务,value-based agent直接学得每个state下的policy,不学价值价值函数
(3)Actor-Critic agent
- 这种Agent,同时学policy和value function,通过交互获得最佳action
- 显式学习:policy和value function
2. 按模型分
(1)基于模型的Agent(model-based agent)
- 显式学习:model(即环境中状态的转移)
- 隐式学习:policy 和/或 value function可学可不学
(2)不基于模型的Agent(model-free agent)
- 显式学习:policy 和/或 value function
- 没有model
3. 小结
- 基于value function、policy、model这三个方面的有无,可以把模型以下各类
五、探索-利用窘境(Exploration-Exploitation dilemma)
- Agent的经验全部来自于其action后的结果
- Agent如何平衡其action?
- 探索(Exploration):agent尝试新的action,探索其价值,这有助于未来做出更好的决策
- 利用(Exploitation):使用经验中曾获取最好reward的action,这能保证当前可以获取已知范围内最大的价值
- 探索-利用窘境:要探索潜在的更好的action,就不得不牺牲短期的reward
- 例子:选餐馆
- Exploration:尝试一家没吃过的餐厅,但是可能踩雷
- Exploitation:选一家以前吃过感觉不错的餐厅,但是这样也失去了发现更好餐馆的机会