Advertisement

【强化学习】Actor-Critic Methods

阅读量:

嗨!这里是喵一只电子喵o( =∩ω∩= )m。今天要研习 actor-critic methods 一文 ,这是一篇值得研读的笔记哦!我觉得比起视频 ,读这篇笔记似乎更快呢!今天的视频链接是 强化学习 ,老师讲解清晰透彻 ,内容深入浅出 。关于 policy-based RL 方法与价值型 RL 方法 另一位大佬的博客 中有详细的阐述哦!实在是一篇高质量的文章!好啦 ,废话不多说 ,让我们开始今天的研习之旅吧! (#.#)

actor可以看做运动员(大头和莎莎),critic看成裁判

agent扮演着策略网络的角色,在此框架中扮演着价值网络的角色。当前的方法旨在融合过去讨论的价值型方法与策略型方法。接下来回顾状态价值函数Vπ(s),它是动作值函数Qπ的期望值计算公式。

π(a|s)表示在状态s下采取动作a的概率密度函数;价值函数Qπ衡量了执行动作序列所能获得的平均回报;它反映了采取该动作相对于其他可能动作的优势。

但是这两个函数(π、Qπ)我们都不知道,该怎么办呢?我们可以使用神经网络

i

来近似π(a|s),q(s,a;w)来近似Qπ。

heta

和w都是神经网络参数

现在来搭policy Network(actor):

i

首先输入状态s(例如游戏地图的一张截图)。将其放入卷积层中以提取图像特征并生成特征向量;随后通过全连接层(Dense)将这些特征映射至对应的紫色向量位置;因为所有动作的概率总和恒等于1;因此经过Softmax激活函数处理后获得概率分布;例如,在图中最终计算出各个方向的动作概率分别为:向左为0.2, 向右为0.1, 向上为0.7;而策略网络的作用是根据当前状态输出对应各个可执行动作的概率分布

然后来搭value network :q(s,a;w)

作为状态s和动作a的输入,在经过卷积层处理后生成一个特征向量。接着对所有动作进行独热编码(one-hotcode)。超级玛丽游戏仅限于三种动作:左右方向与上下方向的移动。因此可以采用这种编码方式:左右方向分别对应0、1、2号码;上下方向分别对应3、4、5号码。

左【0 0 1】

右【0 1 0】

上【1 0 0】

通过全连接层处理后获得特征向量;随后将之前所得的特征向量进行融合;生成一个更复杂的表征;最终通过全连接层计算出具体的数值作为评估结果。

下面来训练这哥俩网络。

主要是训练两个参数,

heta

采用神经网络来近似策略函数;运用价值网络来训练动作价值模型。

更新

heta

是为了让V函数平均值增加,若固定s,V函数值越大,说明该策略越好;

为了提升评分准确性,在模型训练过程中会对参数w进行持续更新。初始时w被设定为随机数值,在实际应用中这表明最初的评分较为随意。经过对w进行系统训练后其评分精度将不断提升。与此同时裁判根据奖励机制不断优化自身的评分标准以确保公平性和准确性

借助这两套系统的训练过程后发现,在这两项指标上取得了显著提升

总结一下:

1、首先得到当前状态St.

2、将St作为输入,用策略网络π来计算概率分布,然后随机抽样得到动作at

3、agent执行at并得到新的状态

S_{t+1}

并得到reward

r_{t}

基于TD的方式更新参数w(该算法已被之前的讨论所介绍)

5、用梯度更新

heta

下面具体讲解如何更新参数。

1、更新价值网络

首先回顾TD算法。计算q(St,at;Wt)和q(

S_{t+1}

,

a_{t+1}

;Wt)其中at与at+1是通过π来随机抽样的。

amma

是折扣率,

lpha

是学习率。视频之前有讲过。

2、更新策略网络

采用策略梯度算法对策略网络进行优化。回顾之前关于policy-based和value-based的相关视频。或者参考大佬的笔记获取更多信息。

最后两排的算法如下:首先从π中随机选取动作a(以确保无偏性),随后通过梯度上升进行优化。

eta

是学习率。

总结:

当前状态S_t根据策略网络Π获得概率分布函数P(⋅|S_t,Π),通过采样获得动作a_t;
采取动作a_t并生成新的状态S_{t+1}及其奖励r_t;
随后将新状态S_{t+1}代入到策略网络Π中进行采样以生成后续动作a_{t+1};然而,在实际操作中agent并未立即执行a_{t+1};
随后计算两个价值网络分别输出q值和q_{t+1}值;
接着计算基于目标的价值评估误差Δ_t;
最后通过对价值网络进行梯度更新以最小化损失函数L(θ)从而实现参数优化;
更新价值网络参数θ以优化模型性能,

lpha

是学习率,

elta {t}dot d{w,t}

是梯度
8. 对策略网络求导
9. 更新策略网络,

eta

是学习率,

q_{t}dot d_{heta ,t}

是蒙特卡洛近似

其中第9步,可以用

elta _{t }

代替

q_{t}

. 该方法更好。被称为baseline

最后本节课总结:

全部评论 (0)

还没有任何评论哟~