「学习内容总结自 udacity 深度学习课程,截图来自 udacity 课件」
RL的基本框架如下图所示,主要是指智能体(Agent)如何学习与环境(Environment)互动的过程。 将时间离散化看待,在最开始的时间步中,环境会向智能体展示一些情景或者说智能体会观察环境得到一个结果(observation),然后智能体必须向环境做出响应动作(action)。在下一个时间步中,环境会给出新的情景,同时也向智能体提供一个奖励(reward),该奖励表示智能体是否对环境做出了正确的响应。 在后面的每个时间步中,环境都向智能体发送一个情景和奖励,智能体则必须做出对应的响应动作。
在课程中,会大大简化数学算法,假设智能体能够完全观察环境所处的任何状态,此时不再称为观察环境的结果,而是接收环境的状态(state)。
(1) 将过程符号化,在时间步 t0 时,有: 环境状态 S0,智能体做出的响应动作A0 (2) 在下一个时间步 t1 时,有: 针对上一时间步智能体的响应动作,环境状态转换为S1,并给予智能体奖励 R1,然后智能体选择响应动作 A1 (3) 后面的时间步同理,都会有对应的Rn,Sn和 An 这些一系列的动作,状态和奖励,就是智能体与环境的互动表现。智能体的目标就是将预期的累积奖励最大化。
(1) 具有清晰起始点和结束点的任务称为阶段性任务(Episodic Task)。将从头到尾一系列完整的互动过程(从起始点到结束点),称为一个阶段。
(2) 一直持续下去,没有结束点的任务称为连续性任务(Continuing Task)。
对于强化学习的框架来说,目标是最大化期望累积奖励。应用强化学习框架来解决机器人学习走路的问题,但是对于学习如何走路的机器人来说,奖励是什么概念?如何对奖励下一个具有科学意义的定义?
首先,要了解一个背景。要注意“强化”和“强化学习”这两个术语来自行为科学。是指在行为之后立即发生的刺激,以使该行为在未来更有可能发生。采用这一名称并非偶然。实际上,在强化学习中,有一个重要的定义假设,即智能体的目标始终可以描述为最大化期望累积奖励,将这种假设称之为奖励假设。
在训练过程中,如果机器人表现良好,能够像人一样正常走路,这时候就会给予像“好极了,没有跌倒!”,“糟糕,没有躲避楼梯跌倒了”这样的奖励提示。但这些只是总体的概念,缺乏直观的表示。在强化学习框架中,奖励表示会更为科学和具体。就如下图DeepMind在论文中提出的奖励公式一样,非常直观的描述了每个时间步的奖励计算方法。会根据是否走得快,是否向前走,是否走得自然顺滑,是否长时间行走这四个方面给予奖励。
对于时间步 t,此时所有之前的时间步的奖励已被确定,只有未来的奖励受到智能体的控制。
将后续奖励之和称为回报(return),表示为 G,公式如下所示:
Gt = Rt+1 + Rt+2 + Rt+3 + Rt+4 + Rt+5 + Rt+6 + Rt+7 + Rt+8 + Rt+9 + Rt+10 + ···
如果希望前面发生的时间步权重更大,则可以给每项都添加上一个系数,表示时间越远的奖励将乘以更小的值。这时候的奖励之和为新的累加和,称为折扣回报(discounted return)。折扣的含义是更关心近期的奖励,而不是遥远未来的奖励。公式如下所示:
Gt = Rt+1 + γRt+2 + γ2Rt+3 + γ3Rt+4 + γ4Rt+5 + γ5Rt+6 + γ6Rt+7 + γ7Rt+8 + ···
其中γ表示折扣率,其范围为 [0 , 1] 。 当γ = 1 时, Gt = Rt+1 + Rt+2 + Rt+3 + ···,此时就等于之前的无折扣回报。 当γ = 0 时, Gt = Rt+1,此时就只有一个近期的奖励。 可以发现当γ越大,智能体对未来的关注越高。γ越小,表示折扣力度越大。
p(s', r | s, a) = P(St+1 = s', Rt+1 = r | St = s, At = a) , for all s,s',a and r
在前面提出的马尔科夫决策过程,就是正式地定义想要通过强化学习解决的问题。这里主要针对该问题提出解决方案。
策略就是将智能体的每个状态与动作建立联系的过程。策略分为以下两种:
值函数(Value Functions)包括状态值函数和动作值函数。先介绍状态值函数。策略π的状态值函数(State-Value Function)表示为 v π(s) , 是指对于每个状态 s∈S ,其都生成智能体从状态 s 开始,然后在所有时间步根据该策略选择动作的预期回报。公式如下所示:
νπ(s) = Eπ [ Gt | St = s ]
策略 π 的动作值函数表示 qπ 。对于每个状态 s∈S 和动作 a∈A,它都生成智能体从状态 s 开始并采取动作 a,然后在所有未来时间步遵循该策略时产生的预期回报。公式如下所示:
qπ(s,a) = Eπ[ Gt | St = s, At = a ]
vπ(s ) = Eπ[ Rt+1 + γvπ(St+1) | St = s ]
对于任意随机性的策略则有以下公式:
vπ(s ) = ∑ s'∈ S, r ∈ R ,a ∈ A(s) π(a|s)p(s', r | s, a)(r + γvπ(s' ))
qπ(s,a ) = Eπ[ Rt+1 + γqπ(St+1, At+1) | St = s ,At = a ]
对于任意随机的策略则有以下公式:
qπ(s,a ) = ∑ s'∈ S, r ∈ R p(s', r | s, a)(r + γ∑ a'∈A(S) π(a'|s') qπ(s',a' ))
如果策略π'的值函数vπ'(s )大于或等于策略π的值函数vπ(s ),则认为策略π'的效果比策略π好或者效果相同。需要注意的是:经常会遇到两个策略不能比较的情况。但始终至少有一个策略比其他策略效果好或者效果相同。 始终至少存在一个策略比其他策略效果好或者效果相同,将这样的策略称之为最优策略,需要注意的是:肯定存在这样的策略,但不是唯一的。
最优策略就是智能体要寻找的策略,其也是MDP的解决方案和实现目标的最优策略。所有最优策略都具有相同的值函数,表示为 v∗。
要找到最优策略就必须借助动作值函数。智能体与环境进行一系列的互动,通过这些互动可以估算出最优的动作值函数q∗,然后智能体通过该动作值函数得出最优策略π∗。(如何估算出最优的动作值函数q∗这个在后续的课程中会讲解。)
v∗(s ) = maxa ∈A(s) E[Rt+1 + γv∗(St )| St = s ] = maxa ∈ A(s) ∑s'∈ S, r ∈ R p(s', r | s, a)(r + γv∗(s' ))
q∗(s,a ) = Eπ[ Rt+1 + γmaxa' ∈ A(St+1) q∗(St+1, a') | St = s ,At = a ] = ∑ s'∈ S, r ∈ R p(s', r | s, a)(r + γmaxa' ∈ A(s') q∗(s', a'))