强化学习[Reinforcement Learning]是一个独立的机器学习研究领域,主要任务是根据不同的环境通过训练机器学习的模型来进行一系列决策。

Reinforcement Learning is an area of machine learning concerned with how intelligent agents ought to take actions in an environment in order to maximize the notion of cumulative reward. – Wikipedia

RL有几个重要的研究对象

  1. Agent: 就是强化学习中的智能主体部分,就主要功能是根据学习模型进行动作并且和环境交互。它到底应该叫什么,其实不重要。我们只需要知道,它就是我们放到环境中去探索和学习用的主体。

  2. Environment: 是指Agent所处的环境,没有特别苛刻的定义,就是客观环境[可以是一个游戏程序,也可以是其他复杂的环境]。

  3. Observation: 是指Agent能够观测或感知到的环境信息。因为我们无法开启上帝视角,所以只能在非常有限的视野里观测周围的情况。因此,能感知什么,把什么当成Observation[所以很多时候,它可能是高维的]

  4. Action: 是指由Agent发出的行为和动作,以及Agent与Environment之间发生的动作交互。Action的内容定义可以描述成是否做某个动作[用类似1,0这样的值来表示],也可以描述成一个连续的向量[0.35, 0.21, 0.7],具体要看强化学习的问题定义。要注意的是,Action可能会[也可能不会]影响下一时刻的状态。例如,一个人今天有没有打伞,其实不会影响明天下雨的概率,因此,在这个场景中,打伞这个动作不会对Environment或者Observation有任何影响,该观测到下雨还是会观测到下雨。同时,在下棋时,一个人的走棋会在直接影响下一时刻的棋盘局势[也就是下一刻],也很大程度上影响另一个人接下来的走棋,因此,在这个场景中,每个Action都会直接影响后续的局势。当然,后者场景更为简单。

  5. Reward: 一般翻译为奖励值,回报值,或得分。Reward是强化学习过程中最为精妙和复杂的一个对象[或者超参数,就是预先设定并且无法通过训练自动学会的参数]。在强化学习中,Reward是指Agent在做了一个动作后[或者在某一时刻]得到的用来描述其行为好坏的值[并且一定会获得这个值]。如果一个行为很好,那么Agent可能会得到一个很大的奖励值,反之,Agent可能会得到一个很小的奖励值,甚至可能负值。

综合前面五个对象,从Agent的角度看,根据当前状态$S_t$,做一个动作$A_t$,通过观测环境得到一个观测值$O_t$,以及一个标量奖励值$R_t$的反馈。同时,环境会过渡到$S_{t+1}$。在某些环境中,Agent可观测到全部状态,此时$O_t$和$S_t$是一样的,或者$O_t=S^e_t$。在另一些环境中,Agent只能观测到部分状态,此时就要注意区分$O_t$和$S_t$。此时我们就获得了一个类似MDP的状态转移流程, \(S_t \rightarrow A_t \rightarrow R_t \rightarrow S_{t+1}\)

Policy 策略

在强化学习的最终目标是通过不断的训练来获得一个足够好的策略。这个目标直接引出两个问题:什么是策略,什么是足够好。

Policy Definition

策略是Agent通过训练得到的模型进行Action的过程。一般可以使用$a = \pi(s)$来来描述,即策略是一个函数,只要输入一个状态$s$,就输出一个动作$a$。这个策略函数也可以包含一些参数$\theta$,即$a = \pi(s \mid \theta)$,参数$\theta$可以是简单或者复杂的参数。不过无论简单还是复杂,都需要通过强化学习的过程训练得到合适的$\theta$。策略函数还有可能输出一个概率分布,而不是一个确定的值,这种情况下,一般写作$\pi(a \mid s) = P[A_t=a \mid S_t=s]$ [很多时候,我们会默认选择概率最大的那个动作]。

Policy Evaluation

如何评价一个策略,是一个重要的问题。本质上说,评价策略就是在同样的环境中比较它们的得分,更准确地说,是比较它们得分的数学期望值[算数平均值]。哪个策略能在环境中长期稳定地得到高分也就是得到更多的奖励值,就是好的策略。这里所说的得分,不同环境中会有不同的定义和计算方式,但是基本上都和状态$S$和动作$A$相关。

比如,如果强化学习算法的场景中存在一个环境实体可以和Agent交互并且针对Agent的每个动作进行打分,那么依据当前的状态$S$和选择的动作$A$,就可以直接从环境获得得分。如果,场景中不存在这样一个环境实体便无法和Agent进行交互,也就不能对每个Action进行打分。以围棋为例,Agent的一个动作就是下一步棋,但是我们无法针对这步棋本身进行评价[因为这没有任何意义,总不能说下棋的姿势是否优美吧],只能通过评估下完这步棋的局势以及后续可能的局势进行评分。

Policy Optimzation

无论通过哪种方式,我们都可以对一个既定策略进行评价,然后根据策略评分对策略进行更新,每次迭代结束后,都会对策略进行更新,只要将这个过程持续下去,总会收敛到最优策略上。

Reference:

  1. 白话强化学习和PyTorch