强化学习DQN和Actor-Critic算法

1、DQN

用神经网络代替Q表格

用经验回放稳定训练

用目标网络防止震荡

问题1:状态太多,Q表格爆炸。

解决方案:不用表格,用神经网络拟合Q函数。

输入:当前画面(像素)

输出:每个动作的Q值(比如左=1.2,右=0.8,开火=2.5)

经验回放:把智能体玩过的经历存进一个大仓库,训练时随机抽样,打破数据相关性,稳定学习。

经验回放的定义:

【目标网络】

DQN有两个结构相同的神经网络:

主网络(Online Network):参数θ,用于选择动作和计算当前Q值

目标网络(Target Network):参数θ-,只用于计算TD目标,不参与梯度更新

目标网络更新很慢,每隔C步(比如1000步)才把主网络参数复制过去:

θ → θ-

为什么需要目标网络,自举(bootstrapping)问题。

Q-learning的更新目标是:

目标网络如何解决?

用固定的目标网络计算y:

学开车的举例:

经验回放:把每次练车录像存下来,回家随机看片段复盘

目标网络:教练说"本周目标:平稳起步",你按这个目标练,而不是每秒改目标。

【主网络和目标网络的区别】

主网络:负责当前怎么玩,当前认为值多少分。参与动作选择和参数更新。

目标网路:只负责告诉主网络未来理想能得多少分。仅用于计算目标值,不更新参数。

DQN的核心是最小化TD误差的平方损失:

2、价值方法/策略梯度方法

价值方法:先学每隔状态/动作值多少分,再选最高分的动作。比如:先查地图(Q表),再决定走哪条路。

策略梯度方法:直接学在什么状态下该做什么动作。好比:直接训练一个本能反应的智能体。

  1. 价值方法

优点:

-理论成熟,收敛性有保证

-DQN能处理高维输入(如图像)

-off-policy版本(如Q-learning)可复用任意数据

缺点:

-只能处理离散动作空间,因为要取

-策略是间接的,无法输出概率分布

-在连续动作空间中,max操作难以计算

  1. 策略梯度方法

3、策略梯度定理

我们的目标:训练一个智能体,让它在环境中获得尽可能多的总奖励。

它的行为由一个带参数 θ 的策略 π(a|s;θ) 决定。比如:在状态 s(如"球在左边"),以概率 π(左|s;θ)=0.8 按左键。

我们的目标函数是:

如何调整 θ,让 J(θ) 变大?

但问题是:J(θ) 无法直接求导。

核心思想:用对数导数技巧绕过难题。

策略梯度 = 在很多局游戏中,对每一步:

("如何调整参数才能更常选这个动作") × ("选了这个动作后总共得了多少分")

然后求平均。

问题:方差太大。G_t是整局回报,受后面很多随机因素影响。即使某步动作很好,也可能因为后面运气差导致G_t很小。

改进:引入Critic价值函数。

目的:不要只看总得分,要看这个动作比平常做得好还是差。

引入两个价值函数:

4、Actor-Critic算法

1)用TD误差来替代A(s,a)

为什么可以替代:

2)学习流程

第1步,初始化

第2步,与环境交互,收集一步经验

第3步,Critic进行评估,计算TD误差

第4步,更新Critic,让它预测更准

第5步,更新Actor,根据Critic的反馈调整策略

Actor 的目标是:多做那些被 Critic 认可的动作,少做被否定的动作。

第6步,进入下一步或新episode

重要优势:

-Actor-Critic不需要等一整局结束就能学习

-每走一步,就可以更新一次,样本效率高、学习快。

终极总结(5步口诀)

5、策略梯度到Actor-critic的演进

相关推荐
清酒难咽7 小时前
算法案例之递归
c++·经验分享·算法
让我上个超影吧7 小时前
【力扣26&80】删除有序数组中的重复项
算法·leetcode
张张努力变强8 小时前
C++ Date日期类的设计与实现全解析
java·开发语言·c++·算法
沉默-_-8 小时前
力扣hot100滑动窗口(C++)
数据结构·c++·学习·算法·滑动窗口
钱彬 (Qian Bin)8 小时前
项目实践19—全球证件智能识别系统(优化检索算法:从MobileNet转EfficientNet)
算法·全球证件识别
feifeigo1238 小时前
基于EM算法的混合Copula MATLAB实现
开发语言·算法·matlab
漫随流水9 小时前
leetcode回溯算法(78.子集)
数据结构·算法·leetcode·回溯算法
IT猿手9 小时前
六种智能优化算法(NOA、MA、PSO、GA、ZOA、SWO)求解23个基准测试函数(含参考文献及MATLAB代码)
开发语言·算法·matlab·无人机·无人机路径规划·最新多目标优化算法
We་ct9 小时前
LeetCode 151. 反转字符串中的单词:两种解法深度剖析
前端·算法·leetcode·typescript
芜湖xin9 小时前
【题解-Acwing】AcWing 5579. 增加模数(TLE)
算法·快速幂