回答一下第二个问题:
model-based和model-free的RL主要区别在于:是否对环境建模,这是大部分RL文章中对这两个RL类别的描述。要理解这两类的区别,我们必须明白这里的model指的是什么?通俗理解我认为有没有model就是:你的算法是否包含了对状态转移概率T(s_{t+1}|s_t, a_t)和奖励函数R(s_t, s_{t+1})的建模。如果发现这个模型通过某种方式近似(比如用神经网络近似)在学习状态转移概率或者奖励函数,那么就可以认为这个算法是model-based的算法,如果没有学习状态转移概率和奖励函数,只是在和环境直接交互学习策略或者价值函数,那么它就是model-free的算法。此外,model-based的算法很可能也会对环境特有的性质进行建模,比如场景中只有一个动态的东西、或者场景中的东西移动较慢以及场景中存在的因果关系等等环境具有的内在特质都可以成为建模的一部分。他们的区别可以看下表:
关于第二点,AlphaGo我认为是一个Model-based的算法。AlphaGo的决策核心是蒙特卡罗树搜索算法(MCTS),我们来看看它做的是什么就明白了。下图是AlphaGo的大概框架:
关于AlphaGo大概提一嘴算法大概是怎么做的:它首先通过行为克隆(Behavior Cloning)的方式,通过监督学习来学习一个基本的策略,用来监督的数据是围棋选手们对弈的棋局,大概有13万盘,形成的数据集就叫做KGS数据集。(因为不用BC直接用RL它们发现学起来效率低,估计是学不出来)这部分就是上图中最上面的Policy Network。在学到一个简单策略之后,AlphaGo开始了self-play的阶段,即通过自我博弈的方式来训练网络(能自我博弈我认为原因是围棋双方是完全对称的)。这里训练过程中,在每做出一步决策之前,会在脑子中思考怎么走才好,这里思考的过程就是MCTS。通过MCTS模拟出走每个位置的胜率(可以理解为状态转移概率,这也是我认为其为Model-based算法的原因),而MCTS
分为四个阶段:选择(Selection)、展开(Expansion)、模拟(Simulation)、回溯(Backup)。在AlphaGo的simulation阶段用到了上图中的fast policy network,不直接用第三个policy network的原因是MCTS是在脑海中对局,用大决策网络太慢了,所以用了个小决策网络去做这一步(有证明说明simulation阶段任何策略都可以,甚至可以随机游走,此时退化为完全的搜索了。好的策略能够在模拟情况比较少的情况下得到一个好的胜率)。
上图是模拟与回溯部分,回溯部分用到了value network来评估下一步走的价值,最后经过成千上万次模拟后取平均构成Q(a),即UCT公式(图中黄色那个score公式)中的第一项;至于前面图中第三个policy network,是一个较大的网络,构成了UCT公式中的第二项。从那个黄色的UCT公式可以看出,当模拟次数较少时,即N很小时,此时决策中占比较大的是策略网络\pi(a|s;\theta),而经过成千上万次模拟,这时候的决策就已经完全依赖于第一项MCTS的结果了。在经过很多次模拟后可以得到:我总共模拟走这一步的次数和走这一步赢的次数,就能算出胜率,接下来就能用各个位置模拟的胜率大小来决定走哪一步了。这部分其实就是对状态转移概率和价值的近似,所以可以认为AlphaGo的MCTS是model-based的方法,而AlphaGo的核心就是结合了RL的MCTS。
写了很多不对题的部分,抱歉!