最近了解了强化学习方面的知识,准备进行下整理和总结。本文先介绍强化学习中一些基础概念。
强化学习
强化学习,监督学习,非监督学习是机器学习的三种学习方式。
强化学习是智能体在环境中通过不断探索未知和利用已有知识进行试错和学习,然后通过学习到的策略(在什么状态下应该采取什么行为)进行一系列行为来获取长期的最大累计收益。
监督学习,非监督学习,强化学习的区别
监督学习需要训练数据具有输入和标签,从标签中学习输入的期望输出。而强化学习并没有标签值,只有激励和惩罚,需要不断和环境进行交互,通过不停试错来学习最佳策略。
非监督学习没有标签也没有奖励值,而是通过学习数据的隐藏特征,通常用于进行聚类。而强化学习是需要一个反馈的。
监督学习和非监督学习是没有序列依赖关系的,而强化学习的奖励计算是有序列依赖关系的,它是一个延时回报。
马尔科夫决策过程(MDP)
下面我们先了解MDP,他是强化学习的一个理论基础。对我们了解强化学习中的智能体的决策,值函数等概念有更清晰的认识。
MDP由四元组构成, M=(S,A,P,R)
S: 表示状态集,其中 S_i 表示第i个时刻的状态,s \in S
A:表示动作集,其中 a_i 表示第i个时刻的动作, a \in A
P:表示转移概率。 P_{sa} 表示从状态s执行动作a后,转移到另一个状态的概率。
R:表示回报函数。从状态s执行动作a。注意这里的回报是立即回报。其中从S状态到A动作的映射,就是行为策略,记为策略\pi:S \rightarrow A。
MDP 的动态过程如下图:智能体从状态s_1,采用动作a_1,进入状态s_2,同时得到回报r_1。然后从状态s_2采取动作a_2进入状态s_3,得到回报r_2....
MDP具有马尔科夫性,也就是写一个状态只与当前状态有关,无后效性。MDP同时考虑了动作,它假设从当前状态转化到下一个状态的概率只与当前状态和要采取的行动有关,与之前的状态无关。
值函数(value function)
上面我们提到MDP中的回报函数是立即回报,但是在增强学习中,我们关心的并不是当前的立即回报,而是状态在策略下的长期收益。
我们先抛开动作,定义值函数(value function)来表示当前状态下策略π的长期影响。
定义 G_t 表示从时刻 t 开始未来总的带折扣的回报之和:
其中γ∈(0,1)称为折合因子,表明了未来的回报相对于当前回报的重要程度。γ=0时,相当于只考虑立即不考虑长期回报,γ=1时,将长期回报和立即回报看得同等重要。
价值函数 V(s)定义为状态 S 的长期价值,即 G_t 的数学期望
然后再考虑MDP过程还有一个策略和动作,给定策略π和初始状态s,则动作a=π(s),我们就可以定义
状态值函数:
动作值函数(给定当前状态s和当前动作a,在未来遵循策略π):
在q_π(s,a)中,不仅策略π和初始状态s是我们给定的,当前的动作a也是我们给定的,这是q_π(s,a)和Vπ(s)的主要区别。
一个MDP的最优策略就是最优状态-价值函数:v_*(s) =\underset {\pi}{\max}v_{\pi}(s) 状态s下,选择一个能使价值最大的策略。
求解最优策略
上面提到我们的目的是找到一个让值函数最大的策略,求一个最优解问题。
主要使用的方法有:
- 动态规划法(dynamic programming methods)
通过公式看出DP计算值函数用到了当前状态s的所有s’处的值函数,也就是bootstapping方法(用后继状态的值函数估计当前值函数)。而后继状态是用模型 p(s',r|S_t,a) 计算得到的。
所以DP是存储每个状态的值函数Q表,根据Q表通过迭代方法得到最佳的策略。存储Q表后,利用后续状态值函数估计当前值函数,可以实现单步更新,提升学习效率。
优势:提前得到Q表后,不需要再与环境交互,直接通过迭代算法得到最佳策略。
劣势:实际应用中,状态转移概率和值函数是很难得到的
- 蒙特卡罗方法(Monte Carlo Methods)
其中G_t是每个探索结束后得到的累计回报,\alpha为学习率。我们用S_t的累计回报Gt和当前估计V(S_t)的偏差值乘以学习率来更新当前的V(S_t)的新的估计值。因为没有模型得到状态转移概率,所以MC是用经验平均值估计状态的值函数。
蒙特卡罗方法是通过采样的方法(试错,和环境进行交互)来估计状态的期望值函数。采样之后,环境给出奖励信息,体现在值函数中。
优势:不需要知道状态转移概率,而是通过经验(采样和试错实验)去评估期望值函数,只要采样的次数足够多,保证每个可能的状态-动作都能采样到,就可以最大程度的逼近期望。
劣势:由于值函数是要从状态s到最终状态累计奖励,所以每次实验都必须执行到终态才能得到状态s的值函数,学习效率很低。
- 时间差分法(temporal difference)
最后看时间差分法(TD)算法的值函数更新公式:
其中r_{t+1}+ \gamma V(S_{t+1}) 和MC中的G_t对应,不需要使用状态转移函数的模型,同时它不需要执行到终态得到累计回报,而是使用下一个时刻的即刻回报和值函数,类似DP的bootstapping方法。
时间差分法结合了动态规范思想和蒙特卡罗采样思想。在没有环境互动情况下避免对状态转移概率的依赖,采用采样估计状态的值函数。从经验直接进行学习,类似蒙特卡罗方法。同时又允许没到最终状态就基于后续状态的值函数估计当前值函数实现单步更新,类似动态规划法提升效率。
强化学习要素
通过以上基础知识后,我们再回头看强化学习的框架:
agent智能体:决策者
environment环境: 与智能体交互的事物
State 状态:当前agent在环境中所处的状态
action动作:agent每次处于的状态和上一个状态的reward以及策略一起确定了当前需要执行的动作
reward奖励: 环境对于动作返回的奖励
policy策略:agent的行为,从state到action的映射
强化学习项目我们要做的事情是,针对一个问题首先提取出一个环境和与之交互的智能体,从环境中抽取出状态(S)和动作(A),以及执行某个动作能得到的即时奖励(R),智能体决策出一种最优策略算法,在此策略下能够让智能体在环境状态下执行最优动作,得到的累计reward最大。
如果有理解不正确的地方,欢迎指出~
参考资料: