提交 15b093d5 编写于 作者: W wizardforcel

2021-01-16 17:53:05

上级 ae8e9769
......@@ -18,9 +18,9 @@ RL 是**人工智能**(**AI**)的领域,与我们在前面各章中介绍
# 深入了解 RL
**代理**是任何 RL 问题的核心。 它是 RL 算法的一部分,它处理输入信息以执行操作。 它探索和利用重复试验中的知识,以学习如何最大化奖励。 代理必须处理的场景称为**环境**,而**动作**是代理可以在给定环境中进行的动作。 采取行动后从环境中获得的回报称为**奖励**,代理根据当前状态决定使用下一行动的行动过程称为**策略**。 相对于短期奖励,带有折扣的预期长期回报称为**值**`q`-**值**与该值相似,但具有附加的当前动作参数。
**智能体**是任何 RL 问题的核心。 它是 RL 算法的一部分,它处理输入信息以执行操作。 它探索和利用重复试验中的知识,以学习如何最大化奖励。 代理必须处理的场景称为**环境**,而**动作**是代理可以在给定环境中进行的动作。 采取行动后从环境中获得的回报称为**奖励**,代理根据当前状态决定使用下一行动的行动过程称为**策略**。 相对于短期奖励,带有折扣的预期长期回报称为**值****Q 值**与该值相似,但具有附加的当前动作参数。
现在,我们已经了解了 RL 的上下文,让我们理解为什么我们应该使用**较深的 RL****DRL**)而不是 RL。 DRL 将 RL 与深度学习相结合,后者使用 NN 解决 RL 问题。
现在,我们已经了解了 RL 的上下文,让我们理解为什么我们应该使用**深度 RL****DRL**)而不是 RL。 DRL 将 RL 与深度学习相结合,后者使用 NN 解决 RL 问题。
深度学习算法可以学习抽象出环境状态的细节,然后学习状态的重要特征。 由于深度学习算法仅具有有限数量的参数,因此我们可以使用它将可能的状态压缩为更少的状态,然后使用该新表示形式来选择一个动作。
......@@ -195,7 +195,7 @@ def cartpole_model(observation_space, action_space):
# 做好准备
在完成本食谱之前,您应该完成本章的 *OpenAI 健身房介绍– Cartpole* 食谱,以便设置`gym`程序包。
在完成本食谱之前,您应该完成本章的“OpenAI Gym 介绍 – Cartpole”食谱,以便设置`gym`程序包。
# 怎么做...
......@@ -334,7 +334,7 @@ if not self.explore_limit:
# 怎么做...
在本食谱中,我们将继续使用 *DQN 类*食谱。 按着这些次序:
在本食谱中,我们将继续使用“DQN 类”食谱。 按着这些次序:
1. 首先,我们需要导入`gym`
......@@ -660,7 +660,7 @@ return total_reward
# 这个怎么运作...
在本食谱中,我们完成了深度遗传算法的一些关键功能。 我们研究了三个不同的功能-第一个功能`eval_agent()`与我们在 *Training DQN* 配方中看到的功能非常相似,其中我们使用了代理,该代理是一种神经网络模型,可以预测 并执行直到`MAX_STEP`(对于`cartpole-v1`为 500)或终端为`True`并返回分数的动作。
在本食谱中,我们完成了深度遗传算法的一些关键功能。 我们研究了三个不同的功能-第一个功能`eval_agent()`与我们在“训练 DQN”配方中看到的功能非常相似,其中我们使用了代理,该代理是一种神经网络模型,可以预测 并执行直到`MAX_STEP`(对于`cartpole-v1`为 500)或终端为`True`并返回分数的动作。
然后,我们使用第二个函数`agent_score()`返回指定数量`runs`之上的平均分数,并返回该平均分数,以确保模型的随机性能不佳。 最后一个函数`all_agent_score()`仅循环遍历一代中的所有代理,并获得一代中所有代理的平均分数。
......@@ -885,11 +885,11 @@ Rewards: 350.0
# 这个怎么运作...
在此配方中,我们改进了深度遗传算法。 根据论文*深度神经进化:我们将超参数设置为*,将`MUTATION_POWER`设置为`0.02`。遗传算法是用于训练深度神经网络以进行强化学习*的一种竞争选择。 我们不需要使用 PyTorch 来进行梯度计算,因为我们不需要依靠梯度下降来改善模型和创建环境。*
在此配方中,我们改进了深度遗传算法。 根据论文《深度神经进化:遗传算法是用于训练深度神经网络以进行强化学习的一种竞争选择》,我们将超参数`MUTATION_POWER`设置为`0.02`。 我们不需要使用 PyTorch 来进行梯度计算,因为我们不需要依靠梯度下降来改善模型和创建环境。
然后,我们创建了一些代理,以开始我们的进化,并通过遍历`generations`将它们运行了预定的代数,在其中我们获得了每一代所有代理的奖励。 然后,我们选择了得分最高的父母,并通过`child_agent`函数传递这些父母指数以获得下一代。 之后,我们打印出前 5 个得分的平均值。
最后,我们使用了与 *Training DQN* 配方中相同的`play_agent`函数,并进行了较小的修改,以补偿模型预测值的差异。 在这里,我们使用精英模型来显示卡特彼勒的性能,每一代之后。 位于代理商列表的末尾。 这是使用`play_agent`功能完成的。
最后,我们使用了与“训练 DQN”配方中相同的`play_agent`函数,并进行了较小的修改,以补偿模型预测值的差异。 在这里,我们使用精英模型来显示卡特彼勒的性能,每一代之后。 位于代理商列表的末尾。 这是使用`play_agent`功能完成的。
# 还有更多...
......
......@@ -571,7 +571,7 @@ CNN(
# 这个怎么运作...
在此食谱中,我们将正常的 PyTorch 模型导出为 ONNX 格式,并使用 ONNX 运行时运行`onnx`模型。 为此,我们采用了权重模型。 在这里,我们使用了第 3 章*卷积神经网络的 CIFAR-10 模型,用于计算机视觉*。 我们从训练中使用了模型的权重,并将模型设置为评估模式,以进行快速,轻便的计算。
在此食谱中,我们将正常的 PyTorch 模型导出为 ONNX 格式,并使用 ONNX 运行时运行`onnx`模型。 为此,我们采用了权重模型。 在这里,我们使用了第 3 章“卷积神经网络”的 CIFAR-10 模型,用于计算机视觉*。 我们从训练中使用了模型的权重,并将模型设置为评估模式,以进行快速,轻便的计算。
然后,我们使用了一个随机变量,其形状与输入张量的形状相同,在本例中为三通道 32 x 32 像素图像。 我们将此随机输入传递到模型中并获得输出。 然后,我们使用输出将其与模型的 ONNX 版本中的模型进行比较。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册