深度学习算法(第36期)----强化学习之时间差分学习与近似Q学习

上期我们一起学习了强化学习中的马尔科夫决策过程的相关知识,
深度学习算法(第35期)----强化学习之马尔科夫决策过程
今天我们学习强化学习中的时间差分学习与Q学习的相关知识。

时间差分学习

具有离散动作的强化学习问题通常可以被建模为马尔可夫决策过程,但是智能体最初不知道转移概率是什么,并且它不知道奖励会是什么。它必须经历每一个状态和每一次转变并且至少知道一次奖励,并且如果要对转移概率进行合理的估计,就必须经历多次。

时间差分学习(TD 学习)算法与数值迭代算法非常类似,但考虑到智能体仅具有 MDP 的部分知识。一般来说,我们假设智能体最初只知道可能的状态和动作,没有更多了。智能体使用探索策略,例如,纯粹的随机策略来探索 MDP,并且随着它的发展,时间差分学习算法基于实际观察到的转换和奖励来更新状态值的估计,如下:

其中 α是学习率(比如:0.01)。
TD 学习与随机梯度下降有许多相似之处,特别是它一次处理一个样本的行为。就像 SGD 一样,只有当你逐渐降低学习率时,它才能真正收敛(否则它将在极值点震荡)。

对于每个状态S,该算法只跟踪智能体离开该状态时立即获得的平均奖励,加上它稍后得到的奖励(假设它的行为最佳)的期望。

类似地,此时的Q 学习算法是 Q 值迭代算法的改编版本,适应于转移概率和回报在初始未知的情况如下:

对于每一个状态动作对(s,a),该算法跟踪智能体在以离开状态S到动作a时获得的即时奖励平均值r,加上它稍后得到奖励的期望。由于目标策略将最优地运行,所以我们取 Q 值的最大值作为下一个状态的估计值。

以下是如何实现 Q 学习:

import numpy.random as rnd
learning_rate0 = 0.05
learning_rate_decay = 0.1
n_iterations = 20000
s = 0 # 在状态 0开始
Q = np.full((3, 3), -np.inf)  # -inf 对应着不可能的动作
for state, actions in enumerate(possible_actions):
    Q[state, actions] = 0.0  # 对于所有可能的动作初始化为 0.0
for iteration in range(n_iterations):
    a = rnd.choice(possible_actions[s])  # 随机选择动作
    sp = rnd.choice(range(3), p=T[s, a]) # 使用 T[s, a] 挑选下一状态
    reward = R[s, a, sp]
    learning_rate = learning_rate0 / (1 + iteration * learning_rate_decay)
    Q[s, a] = learning_rate * Q[s, a] + (1 - learning_rate) * (reward + discount_rate * np.max(Q[sp]))
    s = sp # 移动至下一状态

给定足够的迭代,该算法将收敛到最优 Q 值。这被称为离线策略算法,因为正在训练的策略不是正在执行的策略。令人惊讶的是,该算法能够通过观察智能体的随机行为进行学习(好比是醉酒的猴子教你怎么打高尔夫球一样)最佳策略。我们能做得更好吗?

探索策略

当然,只有在探索策略充分探索 MDP 的情况下,Q 学习才能起作用。尽管一个纯粹的随机策略能够保证最终多次访问每一个状态和每个转换,但这却需要很长的时间去完成。因此,一个更好的选择是使用 ε 贪婪策略:在每个步骤中,它以概率ε随机地或以概率为1-ε贪婪地选择具有最高 Q 值的动作。ε 贪婪策略的优点(与完全随机策略相比)是,它将花费越来越多的时间来探索环境中有趣的部分,因为 Q 值估计越来越好,同时仍花费一些时间访问 MDP 的未知区域。以ε为很高的值(例如,1)开始,然后逐渐减小它(例如,下降到 0.05)是很常见的。

相比于依赖于探索的机会,另一种方法是鼓励探索策略来尝试它以前没有尝试过的行动。这可以作为附加于 Q 值估计的奖励,如下:

其中:

  • N计算了在状态s时选择动作a的次数

  • f是一个探索函数,例如f(q,n)=q+K/(1+n),其中K是一个超参数,它衡量智能体被吸引到未知状态的程度。

近似 Q 学习

Q 学习的主要问题是,它不能很好地扩展到具有许多状态和动作的大型(甚至中等)的 MDP。比如试着用 Q 学习来训练一个智能体去玩 Ms. Pac-Man。Ms. Pac-Man 可以吃超过 250 粒小球,每一粒都可以存在或不存在(即已经吃过)。因此,可能状态的数目大于 2 的 250 次幂,约等于 10 的 75 次幂(并且这是考虑颗粒的可能状态)。这比在可观测的宇宙中的原子要多得多,所以你绝对无法追踪每一个 Q 值的估计值。

解决方案是找到一个函数,使用可管理数量的参数来近似 Q 值。这被称为近似 Q 学习。多年来,人们都是手工在状态中提取并线性组合特征(例如,最近的小鬼的距离,它们的方向等)来估计 Q 值,但是 DeepMind 表明使用深度神经网络可以工作得更好,特别是对于复杂的问题。它不需要任何特征工程。用于估计 Q 值的 DNN 被称为深度 Q 网络(DQN),并且使用近似 Q 学习的 DQN 被称为深度 Q 学习。

好了,至此我们大致了解了时间差分学习和近似Q学习的一些知识,下期我们将使用深度 Q 学习来训练一个智能体去玩 Ms. Pac-Man,就像 DeepMind 在 2013年所做的那样。代码可以很容易地调整,调整后学习去玩大多数 Atari 游戏的效果都相当好。在大多数动作游戏中,它可以达到超人的技能,但它在长时运行的游戏中却不太好。希望有些收获,欢迎留言或进社区共同交流,喜欢的话,就点个赞吧,您也可以置顶公众号,第一时间接收最新内容。


智能算法,与您携手,沉淀自己,引领AI!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度强化学习优化调度是指利用深度强化学习算法来优化调度问题。调度问题是指在资源有限的情况下,合理地安排任务的执行顺序和资源配,以达到最优的效果。 深度强化学习是一种结合了深度学习强化学习的方法,它可以通过学习和优化策略来解决复杂的决策问题。在调度问题中,深度强化学习可以通过学习一个智能体(agent)来进行决策,智能体通过观察环境状态和执行动作来最大化累积奖励。 在深度强化学习优化调度中,通常需要定义以下几个要素: 1. 状态(State):描述当前环境的特征,例如任务的到达时间、任务的执行时间等。 2. 动作(Action):智能体可以执行的操作,例如选择执行哪个任务、配多少资源等。 3. 奖励(Reward):用于评估智能体执行动作的好坏,例如完成任务的效率、资源利用率等。 4. 策略(Policy):智能体根据当前状态选择执行的动作的策略。 深度强化学习优化调度的过程可以简单描述为: 1. 初始化智能体的策略和网络参数。 2. 根据当前状态选择执行的动作。 3. 执行动作,观察环境的反馈,包括奖励和下一个状态。 4. 根据观察到的反馈更新智能体的策略和网络参数。 5. 重复步骤2-4,直到达到预定的终止条件。 通过不断地与环境交互和学习,深度强化学习可以逐渐优化调度策略,提高任务执行效率和资源利用率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值