在学习强化学习的过程中,有两个名词早晚会出现在我们面前,就是Model-Based 和Model-Free。在一些资料中,我们经常会见到“这是一个Model-Based 的算法”或者“这个方法是典型的Model-Free的算法”的说法。“Model-Based”通常被翻译成“基于模型”,“Model-Free”通常被翻译成“无模型”。可能有人会问:为什么会有这样两个算法呢?这就要从它们各自的含义说起。
本文选自《白话强化学习与PyTorch》一书。
“Model-Based”既然被翻译成“基于模型”,那么关键就在于理解什么是模型。这里的“模型”,是我们常说的用机器学习的方法训练出来的模型吗?不是。这里的模型是指,在一个环境中各个状态之间转换的概率分布描述。还是以天气为例。我们想要用“模型”的概念描述天气(或者说建立一个天气模型),应该怎么做呢?首先想办法建立一个表格,如下表。
左侧的纵坐标表示第一天的天气状况,上方的横坐标表示第二天的天气状况。经过长期的统计,得到了这样一个天气转移概率表。其中,第3 行第5 列表示在第一天是阴天的情况下第二天有雨的概率。
这就是一个天气模型。拥有了这样的模型(Model),我们能做什么呢?不管是否满足马尔可夫特性,只要有这么一个模型存在,就必然能够在初始状态确定的情况下找出一条满足特定要求的路径。只要模型是确定的,转移概率就是确定的。只要转移概率是确定的,我们就能知道对应于→ ′ 的转移概率,以及在状态 下做什么样的动作 会有最高的回报值。这样,一个状态的估值 (),以及一个状态下的动作估值 (, ),就比较容易被准确地估计出来了。
在《强化学习研究什么?用白话讲就是……》中,我们提到过一个在四四方方的城市范围内导航的例子,它就是一个比较典型的规划问题的例子。
规划问题(Planning Problem)是运筹学的一个分支,是用于解决决策问题的,或者说,是用于在一定的约束条件下得出最优决策的。规划问题常用的套路,要么是解方程组,要么是解不等式组,并试着求出满足限制条件的极大值或者极小值。这个导航的例子比较理想化,由于解的空间比较小,我们采用了最为直接的穷举排序的方式来求出满足路程成本极小值的路径。对于解的空间较大,尤其是解的空间是连续值的情况,通常就要使用其他解法了,例如梯度下降(上升)法、模拟退火算法、遗传算法等(求解一个函数处于极小值时的函数自变量)。
导航的例子中我们曾经说过,由于开启了“上帝视角”,用GPS 等高科技手段掌握了全城的道路情况,在求解这个问题时,我们根本不需要建立一个含有待定系数的模型、通过正向传播让它产生误差、最终通过最优化的手段把极小值解出来的过程——在这里,完全没有使用强化学习的必要。
这就是规划问题的应用场景了。如果在一个环境中,能够得到在一个状态下做某个动作后转移到另一个状态的概率,并且清楚地知道在这个过程中获得的奖励值的数学期望值,那么,这个问题就是一个规划问题。也就是说,可以通过遍历树、解方程、解不等式等一列工程方法求一个函数的极小值来获解,不需要采用机器学习的手段,更不需要采用强化学习的手段。我想,编过代码、写过遍历树的程序员朋友,一定明白我在说什么。
理解了Model-Base 的概念,就可以理解Model-Free 的概念了——Model-Base 的对立面。
在前面提到过,如果一个问题看起来满足规划问题的条件,那就把它当成规划问题来解决,不需要使用强化学习算法。可是,模型的建立工作由谁来完成呢?如果在环境建立之后没有人去建立模型,我们就不能进行人工智能手段上的策略探索和学习了吗?答案是否定的。事实上,情况恰恰相反:有人帮我们做好模型的情况很少出现。在绝大多数场景中,模型是未知的,至少是未曾精确量化的。怎么办?其实,这才是强化学习希望得到的更具普适性的方式和方法。
随着学习的深入,你会了解更多的Model-Free 算法。现在,你可以先建立一个基本的印象。例如,Q-Learning 是通过不断求解一个状态下的动作估值函数 (, ) 来进行策略学习的,它并没有采用先根据统计结果做出一个模型再做规划的方法,而是直接以类似查表的方法,估算 (, )中每个“小格子”的值,从而进行建模和求解的。这个思路是很好的——我们不是“先知”,怎么知道模型长什么样?因此,采用一个直观的方法来解决问题会更靠谱。
《白话强化学习与PyTorch》一书将带你紧扣Model-Free 思想下的算法族和算法体系进行讨论,这些都是理解强化学习思维的重点。
本书希望服务的读者,主要是对强化学习感兴趣,但掌握的知识比较有限的读者,因此,只能在有限的篇幅内进行适当的取舍,以强化学习为主线,串联讲解必须掌握的知识点,并通过前后呼应的方式让读者跟随书的内容反复学习。只有这样,才能尽量避免出现“零零散散地阅读了一大堆概念,但在脑子里还是无法将它们联系起来”的问题。
希望在阅读过程中你会感觉到,这不是一本照本宣科的教条手册,而是一个能与你一起聊天、一起思考的伙伴。
第1章到第5章 ,讲的是传统强化学习的研究目标与脉络,主要介绍了从一个程序员的角度怎么理解强化学习最为轻松,侧重于理解方式的诱导。
第6章到第11章,是本书的核心内容,讲的是深度学习的原理、PyTorch框架的基本知识及深度强化学习的常用算法模型。
第12章到第15章,讲的是扩展性的知识。例如,其他有助于训练模型的算法思路,第三方工具插件,可供实验的环境,一些有趣的强化学习算法和观点,甚至模型落地过程中的优化与压缩。
附录A中详细记载了本书涉及的各种软件环境的安装和配置过程。
,