Actor:输入状态S 输出策略选择动作
Critic:负责计算每个动作的分数
TD-error
算法流程
定义两个network:Actor 和 Critic
进行N次更新。
重点:
用网络求解连续动作型问题;
进行N步更新;
重要性采样及PPO网络的更新学习。
用网络求解连续性动作
N步更新(TD(n))
重要性采样
算法流程
1、将环境信息s输入到actor-new网络, 得到两个值, 一个是mu, 一个是sigma, 然后将这两个值分别当作正态分布的均值和方差构建正态分布(意义是表示action的分布),然后通过这个正态分布sample出来一个action, 再输入到环境中得到奖励r和下一步的状态s-new_,然后存储[(s,a,r),…], 再将s-new输入到actor-new网络,循环步骤1, 直到存储了一定量的[(s, a, r), …], 注意这个过程中actor-new网络没有更新。
2、将1循环完最后一步得到的s-last输入到critic网络中, 得到状态的v-last值, 然后计算折扣奖励:
R_St = r + GAMMA * V_St+1, 得到R = [R[0], R[1],…,R[t],…,R[T]],其中T为最后一个时间步。
3、将存储的所有s组合输入到critic网络中, 得到所有状态的V_值, 计算At = R – V_
4、求c_loss = mean(square(At )), 然后反向传播更新critic网络。
5、将存储的所有s组合输入actor-old和actor-new网络, 分别得到正态分布Normal1和Normal2, 将存储的所有action组合为actions输入到正态分布Normal1和Normal2, 得到每个actions对应的log(prob1)和log(prob2), 然后用2除以1得到important weight, 也就是ratio。
6、采用PPO2的方式计算a_loss = mean(min((ration* At, clip(ratio, 1-ξ, 1+ξ)* At))), 然后反向传播, 更新actor-new网络。
7、循环5-6步骤, 一定步后, 循环结束, 用actor-new网络权重来更新actor-old网络
8、循环1-7步骤。
简介
DDPG中的actor,critic
和DQN一样,更新的时候如果更新目标在不断变动,会造成更新困难。所以DDPG和DQN一样,用了固定网络(fix network)技术,就是先冻结住用来求target的网络。在更新之后,再把参数赋值到target网络
1、将环境信息s输入到actor eval网络, 输出为action, 将action输入环境, 得到奖励r和下一个环境信息s_, 存储当前环境s, 选择的action, 得到的奖励r这4个信息, 然后再将s_输入到actor eval网络, 循环步骤1, 直到存储了一定量的记忆[(s, a, r, s-new), …], 注意这个过程中actor eval网络没有更新。
2、从第一步中存储的记忆中sample出部分[(s, a, r, s-new), …]
3、将sample出来的s全部输入到actor eval网络中得到action, 再将此action与s输入到critic eval网络中得到q值。
4、求a_loss = mean(q), 反向传播更新actor eval网络
5、将sample出来的s-new输入到actor target网络得到action-new。
6、将sample出来的s-new和第6步得到的action-new一起输入critic target网络, 得到q-new值。
7、计算q_target = sample出来的r + gamma * q-new 。
8、计算c_loss = MSE(第3步的结果q, q_target) 。
9、通过c_loss反向传播更新critic eval网络
10、循环1-9步骤, 在一定步骤后更新actor target、critic target网络,更新方式为:
W(actor target) = W(actor eval) * μ + W(actor target) * (1- μ)
W(critic target) = W(critic eval) * μ + W(critic target) * (1- μ)
也就是说actor target、critic target网络权重只是小步幅更新。