前言:
1.这篇文章是对本人该学期强化学习课程作业的整合与概括,仅作为强化学习的入手练习,因此难免会有诸多的疏漏,还请包涵。
2.信息获取的部分主要参照了B站up蓝魔digital的强化学习&机器学习打只狼教程【B站链接】,这位大佬所使用的方法简单易用,并且可以拓展运用在除了只狼以外的任意一款游戏中,感兴趣的大佬们也可以自己试一试,可以肯定的说,运用与尝试的过程极其有趣。
3.之所以选用《只狼》与《黑魂》,是因为它们作为角色扮演动作游戏,与其它许多游戏有着诸多的不同,一是由于我们能通过一些人为的约束,有效地减少输入动作的数量,并且使其在仅使用少数几种动作的情况下也能达到训练的目的(例如击杀某只精英怪,或者是击杀某位boss)
4.由于时间和能力有限,在本文中仅仅使用了最简单DQN结构与AC结构。
1.DQN的基础理论
首先,我们假定在看这篇文章的你对强化学习中的一些简单模型已经有了一定的了解(如果没有,这么简单好学又有趣的东西不妨先自学一下)。我们以SARSA与Q-learning为例,它们都将动作值函数存储到一个“表格”中,并用表格中的数据来评价不同状态下的不同动作。若状态和动作空间是离散且维度不高时,是比较有效的;若状态和动作空间是高维连续时,就会出现“curse of dimensionality”,即随着维数的增加,计算量呈指数倍增长。
值函数近似
既然我们无法用一个表格来精确地存储与表示 Q 值,我们可以用一个 parameterized 函数来近似地表示动作值函数,即
有很多 differentiable function approximators,如:
- 线性模型(Linear combinations of features)
- 神经网路(Neural network)
- 决策树(Decision tree)
- 最近邻(Nearest neighbour)
- ...
DQN
DQN(Deep Q-Network)是深度强化学习(Deep Reinforcement Learning)的开山之作,将深度学习引入强化学习中,构建了 Perception 到 Decision 的 End-to-end 架构。DQN 最开始由 DeepMind 发表在 NIPS 2013,后来将改进的版本发表在 Nature 2015。
深度学习是监督学习,需要有标签数据来计算损失函数,通过梯度下降和误差反向传播来更新神经网络的参数,那在强化学习中如何获得标签呢?
回想上文 Q-learning 中,我们用 来更新 Q 值,在这里我们可以将其作为标签 Q 值(TargetNet):
经验回放 Experience Replay
DQN 面临着几个挑战:
- 深度学习需要大量带标签的训练数据;
- 强化学习从 scalar reward 进行学习,但是 reward 经常是 sparse, noisy, delayed;
- 深度学习假设样本数据是独立同分布的,但是强化学习中采样的数据是强相关的
因此,DQN 采用经验回放(Experience Replay)机制,将训练过的数据进行储存到 Replay Buffer 中,以便后续从中随机采样进行训练,好处就是:1. 数据利用率高;2. 减少连续样本的相关性,从而减小方差(variance)。
NIP 2013 中 DQN 的伪代码如下图所示:

Nature 2015 中 DQN 做了改进,提出了一个目标网络(Target Net)与策略网络(Policy Net)的结构,每经过N个回合,目标网络会自动获取策略网络的参数,这一改动的目的主要是为了使训练过程更加稳定可控。
整个DQN的流程图如下所示:

2.AC框架
在正式开始讨论Actor-Critic算法之前,我想先谈论一下PG算法。
在PG算法中,我们的Agent又被称为Actor,Actor对于一个特定的任务,都有自己的一个策略π,策略π通常用一个神经网络表示,其参数为θ。从一个特定的状态state出发,一直到任务的结束,被称为一个完整的eposide,在每一步,我们都能获得一个奖励r,一个完整的任务所获得的最终奖励被称为R。这样,一个有T个时刻的eposide,Actor不断与环境交互,形成如下的序列:

PG算法将离散动作空间拓展到了连续动作空间。我们的目标是要寻找一个能够使期望收益达到最大的策略,并沿着梯度方向更新其参数。
Actor-Critic算法分为两部分,actor的前身是policy gradient,它可以轻松地在连续动作空间内选择合适的动作,value-based的Q-learning只能解决离散动作空间的问题。但是又因为Actor是基于一个episode的return来进行更新的,所以学习效率比较慢。这时候我们发现使用一个value-based的算法作为Critic就可以使用TD方法实现单步更新,这其实可以看做是拿偏差换方差。这样两种算法相互补充就形成了我们的Actor-Critic。
Actor 基于概率分布选择行为, Critic 基于 Actor 生成的行为评判得分, Actor 再根据 Critic 的评分修改选行为的概率。
优点:可以进行单步更新,不需要跑完一个episode再更新网络参数,相较于传统的PG更新更快。传统PG对价值的估计虽然是无偏的,但方差较大&

最低0.47元/天 解锁文章
749

被折叠的 条评论
为什么被折叠?



