强化学习知识总结

参考文章
研一接触了强化学习,然后对其就产生了很大的兴趣。虽然有在莫烦Python上学习,也自己做过很简单的项目,但是之前对RL的学习比较混乱并不系统。正好看到这篇文章,感觉对自己有很大的帮助,就根据作者列出的知识点进行扩展学习。

1. 区分强化学习、监督学习和无监督学习

  • 首先讲下监督学习与无监督学习,这两种方法是机器学习中常用到的手段。监督学习是通过训练样本来训练得到一个最优的模型,其主要应用就分类问题。利用这个模型可以将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,进而具有了对未知数据进行分类的能力。
  • 而无监督学习与监督学习的主要不同就在于无监督学习不需要训练样本,其典型的例子就是聚类问题(如K-means算法),主要目的就是将相似的东西聚为一类就ok。
  • 强化学习则是让计算机自己去学会知识,或是会学解决问题的方法与规律,当然也不需要样本来训练。而让计算机找到解决问题方法就需要让它不断地去探索与试错,而我们只需要设计一个评分机制,对计算执行的动作进行一个评判来判断其是好是坏。这样让计算通过不断地试错,同时借助评分机制在这两方面的帮助下进而能找到解决问题的最优方法。

2. 区分Model-Free和Model-Based

强化学习分类图
Model-free就是不去学习和理解环境,环境给出什么信息就是什么信息,常见的方法有policy optimization和Q-learning。

Model-Based是去学习和理解环境,学会用一个模型来模拟环境,通过模拟的环境来得到反馈。Model-Based比Model-Free多了模拟环境,通过模拟环境预判接下来会发生的所有情况,然后选择最佳的情况。

3.区分Policy-Based和Value-Based

Policy-Based的方法直接输出下一步动作的概率,根据概率来选取动作。但不一定概率最高就会选择该动作,还是会从整体进行考虑。适用于非连续和连续的动作。常见的方法有policy gradients。

Value-Based的方法输出的是动作的价值,选择价值最高的动作。适用于非连续的动作。常见的方法有Q-learning和Sarsa。

4.区分On-Policy和Off-Policy

在线学习(on-policy)指的是学习的过程agent必须参与其中,典型的算法为Sarsa。

离线学习(off-policy)指的是既可以自己参与其中,也可以根据他人学习过程进行学习。典型的方法是Q-learning,已经Deep-Q-Network。

5. 区分强化学习中Agent的实际奖励(r)(Return(s,a))

  • 对于Agent实际的奖励,是其在环境中状态s下执行动作a后由环境(或说是我们自己设置的评分机制)反馈给Agent的单步奖励值。
  • 而对于(Return(s,a))是在状态s下,对往后n步的奖励值组合。强化学习的目的就是最大化(Return(s,a)),Agent执行的每一步都是最优的决策。

6.强化学习中的策略(Policy)

(pi(s) ightarrow a)根据当前 state 来产生 action,可表现为(a=pi(s))(pi(a|s)=Pleft ( a|s ight )),后者表示某种状态下执行某个动作的概率。

7.回报(G_{t})(Return)——值函数(Value Function)和动作值函数(action-value function)

参考文章

  • 回报描述了从时(t)起的总折扣奖励, 即(G_{t}=R_{t+1}+gamma R_{t+2}+...= sum_{k=0}^{infty }gamma ^{k}R_{t+k+1})
  • 我们的最终的目标就是让回报的期望(expected return)最大。我们如何去衡量一个agent转移到一个state对于我们达到目的有“多有用”呢?上面也提到了,那就是使回报的期望最大,而agent每一步得到的reward与其采取的action有关,所以值函数是在一个(一组)action下定义的,我们称之为策略(policy)。
  • 所以 MDP中一个状态s在策略(pi)下的值函数记为(v_{pi}(s)),它代表从s开始的回报的期望:(v_{pi}(s)=E_{pi}[G_{t}|S_{t}=s])
    相似的,我们定义从状态s开始,并执行动作a,然后遵循策略(pi)所获得的回报的期望记为动作值函数(action-valuefunction):
    (q_{pi}(s,a)=E_{pi}[G_t|S_{t}=t,A_{t}=a])
    值函数和动作值函数是两个概念,前者是对环境中某一个状态的价值大小做的评估,后者是对在某状态下的动作的价值大小的评估。概念类似,但主要区别应该是体现在用途以及算法上吧,比如对于离散型的动作空间,可以单纯基于动作Q值去寻优(DQN算法),如果是动作空间巨大或者动作是连续型的,那么可以判断状态价值并结合策略梯度来迭代优化(AC算法).
原文地址:https://www.cnblogs.com/liuxgblog/p/14698204.html