最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github。
本文主要讲解有关强化学习的基本概念以及马尔科夫决策过程的相关内容。
关于强化学习的教程,我见过多种版本,每个老师所讲的内容提纲也有所差异,自己还没有完全搞清楚整个知识体系框架,所以下面先讲哪些共有的部分。
一、强化学习概述
机器学习可以分为监督学习、无监督学习和强化学习(Reinforcement Learning)三个类别。有监督学习是任务驱动的,无监督学习是数据驱动的,强化学习是通过对环境的反馈来学习。
1. 强化学习的基本概念
智能体(Agent): 强化学习系统;
环境(Environment): 与智能体交互的外部;
状态(State): 决定下一步将要发生什么的信息,t 时刻的状态通常记为 S t S_t St;
动作(Action): 智能体根据当前状态所采取的动作,t 时刻的动作通常记为 A t A_t At;
奖励(Reward): 一个及时的反馈信号,它表示智能体在第 t 步的表现,智能体的目的就是最大化累计奖励值。t 时刻的奖励通常记为 R t R_t Rt;
收获(return): 在一个马尔科夫奖励链上从 t 时刻起往后所有奖励 R 的有衰减的累计和;
策略(Policy): 策略(通常记为 π \pi π)是决定智能体的行为的机制,是从一个状态到一个动作的映射,可以是确定的,也可以是不确定的。确定性策略: a = π ( s ) a=\pi(s) a=π(s);随机策略: π ( 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);
值函数(Value function): 值函数是一个未来奖励的预测,用来评价当前状态的好坏程度。
状态转移概率矩阵: 在状态 s 下采取动作 a 时,转移到下一个状态 s‘ 的概率,用 P s s ′ a P_{ss'}^a Pss′a 表示。
下面是几个不常用的概念,只做了解就好。
学习(Learning): 在环境未知的情况下,智能体通过和环境交互来提升自己的策略;
规划(Planning): 在环境的模型已知的情况下,智能体只通过模型的计算来提升自己的策略;
学习和规划是序列决策中的两个基本问题。
探索(Exploration): 寻找关于环境的更多信息;
开发(Exploitation): 根据已知信息去最大化奖励;
开发就是在自己之前吃过的饭店里选一家最好吃的,而探索就是在没有吃过的饭店里不断尝试。
预测(Prediction): 给定策略去预测值函数;
控制(Control): 寻找最优策略;
2. 强化学习的基本思想及分类
强化学习可以表示为智能体和环境的马尔科夫决策过程:智能体在第 t 步时执行行动 A t A_t At,获得状态值 S t S_t St 和奖励值 R t R_t Rt。环境接收到动作 A t A_t At,产生新的状态 S t + 1 S_{t+1} St+1 和奖励 R t + 1 R_{t+1} Rt+1。智能体根据奖励值不断调整自己的动作模式,以期得到最大的奖励值。以下为强化学习过程的示意图:
强学学习主要有两种分类方式:
(1) 根据是建立对状态价值的估计来解决问题还是建立对决策的估计来解决问题,分为基于价值(Value-Based) 的 RL 和基于策略(Policy-Based)的 RL 两种。基于价值的RL输出所有动作的概率,按照概率分布选择动作,具体的算法有 Policy Gradients。基于价值的 RL 输出所有动作的价值,会根据最高价值来选择动作,具体的算法有 Q-Learning 和 Sarsa等。而 Actor-Critic 是两者的结合。
(2) 根据智能体在解决强化学习问题时是否需要建立环境模型,分为基于模型(Model-based)的 RL 和不需要模型(Model-free)的 RL 两类。
3. 举个例子
在上图所示的走迷宫例子中,红色的是智能体,黄色的是迷宫出口,黑色的陷阱,整个迷宫就是环境,迷宫一共有 4 × 4 = 16 4\times 4=16 4×4=16 个格子,所以一共16个状态。智能体所能采取的动作只有四个——往上下左右方向移动。当智能体到达迷宫出口时奖励值为1,当智能体落入陷阱时奖励值为-1,其他情况奖励值为0。当然奖励值是需要事先给定的。我们的目标就是使智能体到达迷宫出口时获得的奖励值的总和最多。
二、马尔科夫决策过程
在实际情况下,价值函数 v π v_\pi vπ 不仅与上一个状态和动作有关,而且还应该和之前所有的状态和动作有关。策略 π ( a ∣ s ) \pi(a|s) π(a∣s) 和状态转移概率 P s s ′ a P_{ss'}^a Pss′a 也是同理。但是这样会导致模型变得十分复杂, 为了简化模型,可以假设模型具有马尔科夫性。
1. 马尔科夫性
马尔科夫性是指当前状态只取决于前一个状态,即 P ( S t + 1 ∣ S t ) = P ( S t + 1 ∣ S 1 , S 2 , . . . , S t ) P(S_{t+1}|S_t)=P(S_{t+1}|S_1,S_2,...,S_t) P(St+1∣St)=P(St+1∣S1,S2,...,St)。
2. 马尔科夫过程(马尔科夫链)
马尔科夫过程是一个具有马尔科夫性的随机状态序列 S 1 , S 2 , . . . S_1,S_2,... S1,S2,... 。可以表示为二元组 < S , P > <S,P> <S,P>,其中 S 是一个有限的状态集合,P 是一个状态转移概率矩阵: P s s ′ = P ( S t + 1 = s ′ ∣ S t = s ) P_{ss'}=P(S_{t+1}=s'|S_t=s) Pss′=P(St+1=s′∣St=s),即从一个状态转移到另一个状态的概率。
3. 马尔科夫奖励过程
马尔科夫奖励过程就是一个具有奖励值的马尔科夫链,可表示为四元组 < S , P , R , γ > <S,P,R,\gamma> <S,P,R,γ>,其中 R 是奖励函数 R s = E ( R t + 1 ∣ S t = s ) R_s=E(R_{t+1}|S_t=s) Rs=E(Rt+1∣St=s),即当前状态可获得的奖励的期望值; γ \gamma γ 是衰减因子, γ ∈ [ 0 , 1 ] \gamma\in[0,1] γ∈[0,1]。
4. 马尔科夫决策过程
MDP是一个具有策略的马尔科夫奖励过程,可表示为五元组 < S , A , P , R , γ > <S,A,P,R,\gamma> <S,A,P,R,γ>,其中 A 是一个有限的动作集。P 是状态转移概率矩阵 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 是奖励函数 R s a = E ( R t + 1 ∣ S t = s , A t = a ) R_s^a=E(R_{t+1}|S_t=s,A_t=a) Rsa=E(Rt+1∣St=s,At=a)。
5. 常用概念的数学表达式
当假设模型具有马尔科夫性后,一些概念的数学表达式就得到了进一步的简化。
策略: 策略 π \pi π 是一个给定状态 s 下关于动作 a 的分布: π ( 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);
收获: 在一个马尔科夫奖励链上从 t 时刻起往后所有奖励的有衰减的累计和。其中衰减系数
γ
\gamma
γ 体现了未来的奖励在当前时刻的价值比例。记为:
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
.
.
.
=
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+...=\sum_{k=0}^\infty{\gamma^kR_{t+k+1}}
Gt=Rt+1+γRt+2+γ2Rt+3+...=k=0∑∞γkRt+k+1
衰减系数的引入可以避免存在环的马尔科夫链中奖励值无限大的情况。
(状态)值函数: 从给定状态 s 出发,遵循策略
π
\pi
π,获得的回报
G
t
G_t
Gt 的期望,记为:
v
π
(
s
)
=
E
π
(
G
t
∣
S
t
=
s
)
v_\pi(s)=E_\pi(G_t|S_t=s)
vπ(s)=Eπ(Gt∣St=s)
动作值函数: 从给定状态 s 出发,采取行动 a,遵循策略
π
\pi
π,获得的回报
G
t
G_t
Gt 的期望,记为:
q
π
(
s
,
a
)
=
E
π
(
G
t
∣
S
t
=
s
,
A
t
=
a
)
q_\pi(s,a)=E_\pi(G_t|S_t=s,A_t=a)
qπ(s,a)=Eπ(Gt∣St=s,At=a)
要计算值函数的话就需要将所有可能的路径列举出来,然后计算总奖励的期望,但是对于复杂问题而言穷举是不可能的,所以就需要各种算法来解决这个问题。