强化学习的学习笔记

本文概述了强化学习中的DQN、Policygradient和Actor-Critic三种方法,通过伪代码描述了它们的思路和算法流程,重点介绍了DQN如何使用TD错误进行在线学习,以及Policygradient和Actor-Critic如何通过预测动作价值和策略梯度进行训练。
摘要由CSDN通过智能技术生成

摘要

本来像搞懂PPO,发信啊没有前置知识我根本看不懂啊。所以今天整体复习了以下强化学习中的DQN、Policy gradient 和 actor critic。这里分别对三者简单说明了思路,然后尝试用pytorch-like伪代码描述流程。希望基于此,最近能进一步看懂PPO。

dqn

整体思维

我们都知道,强化学习就是,有个智能体,可以做出动作a和环境S交互,得到环境的反馈r(同时环境会变为S_),然后智能体会尽量最大化反馈,以使得模型变优秀。

而需要注意的是,很多优化任务并不是单步的,是一个流程。那么整体的反馈return并不能及时的得到。有些做法是把智能体的历史行为数据拿来训练(即离线策略off line policy),但是这样不高效。
dqb用td error使得边跑边训成为可能。

dqn中构建一个神经网络P(价值函数)用于预测某个状态S下动作a将得到的反馈值r。value = P(S)(a)
每次智能体进行交互,会得到一组数据:(S, a, r, S_)
我们很多人都明白了监督学习的那一套,那么从监督学习的角度出发,理论上就可以通过刚才收集到的数据,构建一个常见的MSE损失函数。 l o s s = M S E ( y p r e , y t u r e ) = M S E ( P ( S ) ( a ) , r + γ ∗ m a x ( P ( S _ ) ) ) loss = MSE(y_{pre}, y_{ture}) = MSE(P(S)(a),r + \gamma *max(P(S\_))) loss=MSE(ypre,yture)=MSE(P(S)(a),r+γmax(P(S_)))
但是可能会导致难以收敛????(这里没那么懂)
所以需要将y_pre和y_true中所用到的神经网络参数分离开,所以尝试用一个无梯度的编码器B代替P对y_ture进行计算。
同时,借鉴一个队列数据结构来存储数据集。
说实话这两个改进,真是非常像对比学习moco1中的队列和动量编码器。看来各领域间互相学习是可以碰撞出大火花的。

详细算法流程

P = MLP()
B = P.clone()
env
buffer = queue
S = env.reset()
for i in range(10000):
	# 采集数据
	values = P(S)
	a = argmax(values)
	r, S_ = S.act(a)
	buffer.put([S, a, r, S_])
	# 开始学习
	if i > 5 :# 先收集5代在开始训
		data = buffer.pop() # 随机获取一个batch数据
		y_pre = P(data.S)(a)
		y_ture = data.r + gamma * max(B(data.S_))
		loss = MSE(y_pre,y_ture)
		loss.back_ward()
		B = P.clone()
	## 后面海需要做什么判断终止条件等善后工作

Policy gradient

据说不要对照着dqn学pg,容易混淆。pg感觉就是很简单的,收集了很多历史数据后,收集历史数据计算y_ture = r_1 + \gamma * r_2 + … 。从监督学习的角度来说,这里网络Pi构建用于 预测当前 智能体能走的各动作的概率,即分布logits。
那么整体可以看成,实践阶段,智能体根据当前环境S,预测各动作的概率logits,然后根据logits抽样实际走的路,直到收集了足够多的数据后,停掉智能体,开始学习。学习阶段,从历史数据[S,a,r]中抽出数据计算 y_true和y_pre = env.act(Pi(S))[0]#(即走当前最优步骤所得到的回报)
这只是大致思路,实际不这么做,实际会有一个严格推导出的基于策略梯度的参数更新公式。????
先停在这。

Actor Critic

为了使得pg中不用每次都在结束之后,再用历史数据计算y_ture. 我们再用一个神经网络来预测y_ture。
智能体照例根据神经网络A基于env构建了logits,并且sample出了动作,然后C来评价A的动作,给出y值。那么A通过loss = C(S,a)进行训练。
同时通过td error构建y_true = r_1 + gamma * r_2, 则loss2 = MSE(C(S,a), y_true).
当然其中也用了一个Pi_old,以及重采样技巧. 详细还需仔细看看。

[1]:dqn: https://zhuanlan.zhihu.com/p/630554489

[2]: 深入理解强化学习(七)- Actor-Critic - 莫冉的文章 - 知乎
https://zhuanlan.zhihu.com/p/478709774

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值