目录
Actor-Critic Methods
Actor-Critic Methods可以视为将前面讲到的基于价值与基于策略的两种学习方法相结合
状态函数预测与网络结构
因为状态函数定义为:
但遗憾的是策略函数π以及动作价值函数Qπ我们都是未知的,因此在AC算法下,我们使用两个神经网路来分别近似策略函数与动作价值函数。将策略函数(Policy)视为“执行者”(Actor),而将动作价值函数视为“打分员”(Critic),就可以借助神将网络参数θ和w,将策略函数与动作价值函数向准确值趋近(Approximation):
Actor网络:
Critic网络:
同时训练 这两个神经网络就称为Actor-Critic网络
网络训练(Train the networks)
- 定义:
- 训练:更新参数θ和w
- 更新策略网络π来提高状态价值函数V
- 更新价值网络来更好地预测回报(return)
-
Actor 表现地越来越好,裁判Critic的评价越来越标准
-
TD算法更新价值网络(Value Network)
-
策略梯度(Policy Gradient)更新策略函数π:
每次迭代的步骤汇总:
注意:第九步使用的qt可以替换为第5步计算出的δt,前者是标准算法,后者称为Policy gradient with Baseline,实际使用中使用δt 的效果会较好
AlphaGo
AlphaGo与围棋简介
围棋棋盘有19×19个网格,相交点处可以放置棋子,也即有361个点。可以使用两个二维的矩阵来分别描述黑棋、白棋的位置分布,即棋盘的状态可以使用一个19×19×2的张量来表示。(AlphaGo使用的是一个19×19×48的张量)
AlphaGo的训练 主要分为三个部分:
1.学习策略网络,使用Behavior Cloning(是一种有监督学习,而不是强化学习)
2.使用策略梯度训练策略网络(两个策略网络互相博弈)
3.使用训练好的策略网络去训练价值网络
AlphaGo比赛时:
主要使用蒙特卡洛树搜索(MCTS)算法,并使用策略与价值函数作为辅助引导。
AlphaGo Zero的状态解析:
Behavior Coloning(不是强化学习!)
Behavior Coloning是一种模仿学习的方法,其余强化学习的根本区别在于有没有环境的奖励。
开始时,网络的参数是随机生成的,如果直接使用策略网络相互博弈,会需要很长的训练时间,因此首先使用了Behavior Coloning这一技术来学习现有的棋盘数据,在初步学习了16万局高阶玩家的对局后,AlphaGo已经具备了一定的围棋技术。
AlphaGo2016 版本使用了Behavior Coloning技术,而最新的AlphaGo Zero则没有使用这一技术
Behavior Coloning的弊端在于,如果出现了训练集中没有的状态 s,Agent可能会执行一次很坏的动作 a,并因为这一次较坏的决定,使得后边进一步的错误持续叠加。
策略网络训练(Policy Network)
强化学习会探索更多的状态,并且通过奖励来知道某种状态下应该执行什么样的动作。
工作流程:
- 两个策略网络互相博弈直到一局游戏结束(Player VS Opponent)
- 得到并记录一个轨迹,即状态与动作的序列s,a,s,a……
- 游戏结束后,更新玩家(player)的策略函数
- player的回报(return): 赢的话所有的步骤都记为回报为1,否则所有均为-1
- 求和所有的策略梯度:
- 更新策略网络中的θ(只更新player的策略网络,Opponent的策略从历史的Player中随机取出)
价值网络训练(Value Network)
前面的博客中的价值网络用来近似Q函数,而这里AlphaGo采用价值网络用来近似V函数
使用神经网络来近Vπ(s),用来评估当前当前状态是不是好的。
最新的神经网络AlphaGo Zero将两个网络共享一个卷积层
AlphaGo的训练方法是先训练策略网络,再训练价值网络,用策略网络的训练结果来辅助价值网络。因此AlphaGo严格意义上采用的并不是Actor-Critic Methods,后者往往是将策略网络与价值网络一起训练。
工作流程:
- 进行一局博弈知道游戏结束,让每一个状态的回报u1~uT等于1或-1,也即对应每一个状态的价值函数的“真实值”,训练的目的便是使最后的Vπ能近似与这个真实状态
- 也即Loss函数逐渐减小的过程:
- 便可以通过梯度下降来实现这一过程:
蒙特卡洛树搜索(Monte Carlo Tree Search)
AlphaGo会从未来的可能状态中个搜索查询出一种胜算较大的状态。
Step1:Selection 搜索/选择
观测状态st,一般会有几步可以选择的下棋位置 ,对于每个动作a,网络可以对其进行打分:
Q(a):MCTS计算得到的动作价值(To be defined)
π(a|s;θ):已经训练过的策略网络
N(a):给定的状态st,之前的状态中已经选择过动作a的次数
随着游戏的进行,score的打分机制受到策略函数π的影响会 越来越小(N逐渐变大),也使得AlphaGo越来越能做出更优的动作决策。
Step2:Expansion 扩展
用策略网络来模拟对手的动作。
给定一个假想的动作 at,此时假想的对手Opponent的动作at'会将带来一个新的状态st+1,对手的动作随机取样自策略函数:
注意,这里的st'是由对手Opponent观测到的状态
Step3:Evaluation 评估
- 从状态st+1直到游戏结局,后续的player与Opponent的决策全部依照策略函数π来进行决策,并根据最终的结果胜负得到回报r
- 此外,根据已经训练好的状态价值函数V,同样夜里可以得到一个得分v
- 则状态st+1的得分就可以由这两个分数的平均值计算得出:
Step4 Backup 回馈
蒙特卡洛树搜索完成了一个动作下对应的多个状态以及之后的整个价值序列,将at下的所有价值计算平均值,记为动作的Q值(即Step1中的Q项):