强化学习(AC&A3C)
global network下面有n个worker线程,每个线程里有和公共的神经网络一样的网络结构,每个线程会独立的和环境进行交互得到经验数据,线程之间互不干扰,独立运行。每个线程和环境交互到一定量的数据后,就计算在自己线程里面的神经网络损失函数的梯度,但是这些梯度并不更新自己先线程里的神经网络,而是去更新公共的神经网络。A3C中可以将两个网络放到一起,输入状态s,可以输出状态价值和策略,也可以将
接上一篇的PG
:从t时刻开始的未来总奖励,的计算是依赖于策略与环境的交互轨迹,而这个轨迹又具有随机性,因此最终的优化目标是的期望最大。
策略梯度中只有actor网络,没有critic网络
AC——Actor-Critic
AC具有两个网络,原因:AC中是用代替,而是通用神经网络来求解的。
网络一:Actor网络,根据状态指导智能体输出动作的网络,即策略网络。
网络二:critic网络,用来评价当前状态下选择动作的好坏,输出。
b为baseline
A2C——Advantage Actor Critic
一般情况下b可以为的期望,的期望就是状态的价值
其中,就是优势函数,但是会有一个明显的缺点,就是需要再增加一个额外的网络来计算,耗费资源还增加风险。
V和Q是可以相互转化的:
去掉期望后,为:
如此,只需要一个估计状态价值的网络,梯度可以表示为:
算法流程:
输入:迭代次数T,状态特征维度n,动作集A,步长、,探索率,critic网络和actor网络结构
输出:actor网络的参数,critic网络的参数
1、随机初始化所有的状态和动作对应的价值Q
2、for i from 1 to T,进行迭代
a) 初始化s为状态序列的第一个状态,拿到其特征向量
b) 输入到actor网络中,输出动作A,基于动作A得到下一时刻的状态和奖励r
c) 、分别输入到critic网络中,得到输出、
d) 计算TD误差
e) 使用均方差损失函数作为critic网络参数的梯度更新
f) 更新actor网络:
A3C——Asynchronous Advantage Actor-Critic A2C结合异步
相比于AC,A3C的优点:
①异步训练框架
global network:是一个公共的神经网络模型,包含actor网络和critic网络两个部分的功能。
global network下面有n个worker线程,每个线程里有和公共的神经网络一样的网络结构,每个线程会独立的和环境进行交互得到经验数据,线程之间互不干扰,独立运行。每个线程和环境交互到一定量的数据后,就计算在自己线程里面的神经网络损失函数的梯度,但是这些梯度并不更新自己先线程里的神经网络,而是去更新公共的神经网络。每隔一段时间,线程会将自己的神经网络的参数更新为公共神经网络的参数,进而指导后面的环境交互。
②网络结构优化
A3C中可以将两个网络放到一起,输入状态s,可以输出状态价值和策略,也可以将actor网络和critic网络独立开,分别处理。
③critic评估点的优化
A3C中采用了n步采样,以加速收敛。
A3C中的优势函数:
A3C算法流程(异步多线程,对任意一个线程进行描述)
输入:公共部分A3C神经网络结构,对应参数、,任意一个线程中的A3C神经网络,对应参数、,全局共享的迭代轮次T,全局最大迭代次数,线程内单次迭代时间序列最大长度,状态特征维度n,动作集A,步长、,熵系数c,衰减因子
输出:公共部分的A3C网络的参数、
step 1:初始化公共网络的参数、
step 2:任意一个线程的参数更新:,
step 3:获取状态,基于策略选择动作
step 4:执行得到奖励和下一时刻的状态
step 5:循环执行step 3与step 4,当t达到,计算Q
step 6:计算优势函数,累计actor网络的本地梯度更新,累计critic网络的本地梯度更新,更新公共部分的模型参数,
step 7:如果达到,输出、,否则循环进入step 2。
A2C理论上是优势函数A,但是实际上是基于TD的error作为评估点;A3C采用的是n-step思想,使用n-step的TD error作为评估点
更多推荐
所有评论(0)