作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学习的基础知识,后面也会更新强化学习的论文阅读专栏。本来是想每一篇多更新一点内容的,后面发现大家上CSDN主要是来提问的,就把很多拆分开来了(而且这样每天任务量也小一点哈哈哈哈偷懒大法)。但是我还是希望知识点能成系统,所以我在目录里面都好按章节系统地写的,而且在github上写成了书籍的形式,如果大家觉得有帮助,希望从头看的话欢迎关注我的github啊,谢谢大家!另外我还会分享深度学习-基础知识专栏以及深度学习-论文阅读专栏,很早以前就和小伙伴们花了很多精力写的,如果有对深度学习感兴趣的小伙伴也欢迎大家关注啊。大家一起互相学习啊!可能会有很多错漏,希望大家批评指正!不要高估一年的努力,也不要低估十年的积累,与君共勉!
Problem of Imitation Learning
在模仿学习中,误差主要来自两个方面,一个是对于未见过的observation的泛化误差,另一个是对于已见过observation的拟合误差。对于bahaviroal cloning和DAgger而言,都是在尽可能通过增加数据,减少第一种误差。
Non-Markovian bahavior
前面的博客里给大家分享过observation和state的差别,简单来说,state表示了当前状态(全部信息),而observation是state生成的结果(里面只有部分信息)。比如在自动驾驶这个场景下,人类在标注数据进行决策的时候,考虑到的并不仅仅是当前这一帧的observation,而是根据过去的许多信息来做出判断的,对于同样一帧图像,可能由于前面的信息不同,人类会做出不一样的决策。对于这样的数据,算法在学习的时候是有可能产生混淆的,这也就导致算法对于数据的拟合效果不够好。
针对于这个问题,最直观的方法就是不只是把当前帧作为输入,而是使用过去若干帧作为输入并从中提取有用的信息,前面讲Nature DQN时也是这么做的。比如说我们可以用RNN或者LSTM去提取时序信息,这种做法带来的问题就是它需要更多的参数,从而使模型变得很大。
在NIPS 2019上, Sergey Levine发表了一篇论文“ Causal Confusion in Imitation Learning”,指出在模仿学习中如果忽略因果性,可能会造成“ causal misidentification”,使得拿到越多的信息反而会造成越差的效果。这是因为信息越多的时候,代表着干扰信息(论文中称为confounder)也越多,因此在决策时,如果忽略了因果性,策略可能会觉得confounder时是造成结果的原因,而忽略了造成结果的真正的原因。比如在下面的两个图当中,左边的图比右边的图多了一个仪表盘的信息,每一次看到前方有行人时,专家策略都会踩下刹车,仪表盘的刹车灯就会亮,所以左边的智能体就认为应该在刹车灯亮的时候踩下刹车,这就与我们想要的完全不一致。而右边的图没有了仪表盘的信息反而不会出现这个问题。针对这个问题,像DAgger这种不断增加人工标注的方法就不能解决了,因为即使进行再多的标注,因果性的问题依旧会造成结构性的困难。
Multimodal behavior
有时候在一个问题中可能存在多个可行解,比如在下图中有一颗树,专家可以往左边走,也可以往右边走。而当我们的输出值时连续值,使用高斯分布或者其他分布进行策略选择的时候,就可能导致我们最终的决策时直直地向前走。
针对这个问题一般存在三种方法:
-
Output mixture of Gaussians
这个想法相对比较简单也比较直观,也就是我们在输出时不是输出一个高斯分布,而是对多峰进行模拟,这样就不会出现前面所说的那种“中和”的情况。但是,这种方法会随着问题维度的上升复杂度呈现指数级上升。
-
Latent variable models
这种方法最终的输出还是一个高斯分布,只不过在输入上加入一些隐变量,这个隐变量我觉得也可以直接理解为噪声,噪声有用的原因在于对原数据产生了扰动,使得原先多峰的label变成了单峰的label,从而缓解多峰的问题,这种方法更加expressive,但是实现起来比较困难。在具体实现时,会有以下技巧:
- Conditional variational autoencoder
- Normalizing flow/realNVP
- Stein variational gradient descent
-
Autoregressive discretization
这种方式采用的是将动作空间离散化的方式,如果连续的action有很多个维度,则可以一个维度一个维度地输出。首先得到第一个维度的action,然后将它作为第二个维度的输出,并得到第二个维度的输出,如此循环。这种方法可以卡成是前面两种方法的折中,既有比较强的表达能力,实现起来也不会太复杂。
Limited Data
-
人类(专家)只能提供有限的数据,当数据足够丰富时,深度学习往往会表现更好。
-
人不擅长提供某一些类型的动作,比如下面的场景中:
上一篇:强化学习的学习之路(五十五)2021-02-24 模仿学习介绍
下一篇:强化学习的学习之路(五十七)2021-02-26 模仿学习的理论分析