提交 ca648106 编写于 作者: W wizardforcel

2020-12-26 17:54:17

上级 d8643599
......@@ -50,11 +50,11 @@ Python 元组
因此,一行一行地加起来就是两个张量。 同样,它只是一个数组数组。 您会看到其中的训练图像的括号为零; 我们实际上是在选择图像数组中的第一个图像。 因此,在图像数据之前的三个张量实际上是图像阵列,每个图像阵列都有像素的列和行。 因此,三张量是我们存储黑白图像的基本方法。
为了快速直观地显示图像,您可以在索引 1 处看到`Xs``Ys`(数字上显示的坐标)仅是 张量
为了快速直观地显示图像,您可以看到索引 1 处的图像,`Xs``Ys`(随数字显示的坐标)仅是张量的维度。
![](img/46dafe66-282c-47a7-90c8-0478b65229a4.png)
张量的尺寸
张量的维度
现在,让我们谈谈形状。 您可以在此处看到我们在 NumPy 多维数组或张量上调用了`.shape`,它随`60000, 28, 28`一起返回:
......
......@@ -25,7 +25,7 @@
* 学习率`α`
* 更新方向
我们通常将参数`θ`设置为某个随机值,并在训练过程中尝试找到最佳值,然后将学习率`α`的值设置为一个小数值,或者随时间推移以及随后的更新方向将其衰减 梯度。 我们是否可以通过元学习来学习梯度下降的所有这些关键要素,以便可以从几个数据点快速学习? 在上一章中,我们已经看到 MAML 如何找到可在各个任务之间推广的最佳初始参数`θ`。 有了最佳的初始参数,我们就可以减少梯度步骤,并快速学习新任务。
我们通常将参数`θ`设置为某个随机值,并在训练过程中尝试找到最佳值,然后将学习率`α`的值设置为一个小数值,或者将其随时间衰减,以及跟随梯度的更新方向。 我们是否可以通过元学习来学习梯度下降的所有这些关键要素,以便可以从几个数据点快速学习? 在上一章中,我们已经看到 MAML 如何找到可在各个任务之间推广的最佳初始参数`θ`。 有了最佳的初始参数,我们就可以减少梯度步骤,并快速学习新任务。
因此,现在我们是否可以学习最佳的学习率和更新方向,从而可以跨任务进行概括,从而实现更快的收敛和培训? 让我们看看如何通过将其与 MAML 进行比较在 Meta-SGD 中学习。 如果您还记得,请在 MAML 内循环中,通过最小化梯度下降带来的损失,找到每个任务`T[i]`的最佳参数`θ'[i]`
......
......@@ -455,7 +455,7 @@ policy_iteration():
然后,我们使用称为贝尔曼最优性方程的特殊方程式表示值函数和`Q`函数。 如果我们解决这个方程,我们可以找到最佳策略。 在这里,求解方程式意味着找到正确的价值函数和策略。 如果我们找到正确的价值功能和策略,那将是我们获得最大回报的最佳途径。
我们将使用一种称为动态规划的特殊技术来求解贝尔曼最优性方程。 要应用 DP,必须预先知道模型动力学,这基本上意味着必须预先知道模型环境的转换概率和奖励概率。 由于我们知道模型动力学,因此可以在此处使用 DP。 我们使用两种特殊的 DP 算法来找到最佳策略:
我们将使用一种称为动态规划的特殊技术来求解贝尔曼最优性方程。 要应用 DP,必须预先知道模型动态,这基本上意味着必须预先知道模型环境的转换概率和奖励概率。 由于我们知道模型动态,因此可以在此处使用 DP。 我们使用两种特殊的 DP 算法来找到最佳策略:
* 价值迭代
* 策略迭代
......@@ -521,7 +521,7 @@ Q(A, 1) = 0.5
我们没有为每个状态创建`Q`表,而是创建了一个名为`Q_value`的列表,然后为该状态中的每个动作创建了一个名为`next_states_rewards`的列表,该列表存储了`Q_value` 下一个转移状态。 然后,我们对`next_state_rewards`求和并将其附加到我们的`Q_value`中。
请看前面的示例,其中状态为`A`,操作为`1``(0.3 * (0 + 0))`是转移状态`A``(0.1 * (-1.0 + 0))`的下一个状态奖励 转移状态`B`的下一状态奖励。 `(0.5 + (1.0 + 0))`是转移状态`C`的下一个状态奖励。 我们将所有这些加总为`next_state_reward`,并将其附加到`Q_value`中,该值为 0.5。
请看前面的示例,其中状态为`A`,操作为`1``(0.3 * (0 + 0))`是转移状态`A`的下一个状态奖励,`(0.1 * (-1.0 + 0))`转移状态`B`的下一状态奖励。 `(0.5 + (1.0 + 0))`是转移状态`C`的下一个状态奖励。 我们将所有这些加总为`next_state_reward`,并将其附加到`Q_value`中,该值为 0.5。
当我们为状态的所有动作计算`next_state_rewards`并将其附加到`Q`值时,我们选取​​最大的`Q`值并将其更新为我们的状态值:
......
# 蒙特卡洛方法进行游戏
蒙特卡洛算法是从物理,机械到计算机科学的各个领域中最受欢迎和最常用的算法之一。 当未知环境模型时,在**强化学习****RL**)中使用蒙特卡洛算法。 在上一章第 3 章,“马尔可夫决策过程和动态规划”中,我们着眼于使用**动态规划****DP**)查找 我们了解模型动态的最佳策略,即转移和奖励概率。 但是,当我们不知道模型动态时,如何确定最佳策略? 在这种情况下,我们使用蒙特卡洛算法; 当我们不了解环境时,它对于找到最佳策略非常有用。
蒙特卡洛算法是从物理,机械到计算机科学的各个领域中最受欢迎和最常用的算法之一。 当未知环境模型时,在**强化学习****RL**)中使用蒙特卡洛算法。 在上一章第 3 章,“马尔可夫决策过程和动态规划”中,我们着眼于使用**动态规划****DP**)查找我们了解模型动态的最佳策略,即转移和奖励概率。 但是,当我们不知道模型动态时,如何确定最佳策略? 在这种情况下,我们使用蒙特卡洛算法; 当我们不了解环境时,它对于找到最佳策略非常有用。
在本章中,您将了解以下内容:
......@@ -493,7 +493,7 @@ plot_blackjack(value, axes[0], axes[1])
# 蒙特卡洛开始勘探
与 DP 方法不同,这里我们不估计状态值。 相反,我们专注于行动价值。 当我们知道环境模型时,仅状态值就足够了。 由于我们不了解模型动力学,因此这不是单独确定状态值的好方法。
与 DP 方法不同,这里我们不估计状态值。 相反,我们专注于行动价值。 当我们知道环境模型时,仅状态值就足够了。 由于我们不了解模型动,因此这不是单独确定状态值的好方法。
估计动作值比估计状态值更直观,因为状态值根据我们选择的策略而变化。 例如,在二十一点游戏中,假设我们处于某些纸牌为 20 的状态。该状态的价值是什么? 这完全取决于策略。 如果我们选择策略作为命中目标,那将不是一个好的状态,而且此状态的价值非常低。 但是,如果我们选择我们的策略作为立场,那肯定是一个好的国家。因此,国家的价值取决于我们选择的策略。 因此,估计操作的值而不是状态的值更为重要。
......@@ -501,7 +501,7 @@ plot_blackjack(value, axes[0], axes[1])
但是,这里出现了探索的问题。如果我们还没有处于状态状态值,我们如何知道状态状态值? 如果我们不采取所有可能的措施探索所有州,我们可能会错过丰厚的回报。
假设在二十一点游戏中,我们处于纸牌总数为 20 的状态。如果我们仅尝试**拿牌**动作,我们将获得负数奖励,我们将学习 处于不佳状态。但是,如果我们尝试**停牌**动作,我们将获得积极的回报,这实际上是最好的状态。因此,每次进入此特定状态 ,我们站立而不是受到打击。 为了让我们知道哪个是最佳操作,我们必须探索每种状态下的所有可能操作以找到最佳值。 我们应该怎么做?
假设在二十一点游戏中,我们处于纸牌总数为 20 的状态。如果我们仅尝试**拿牌**动作,我们将获得负数奖励,我们将得到负的奖励。但是,如果我们尝试**停牌**动作,我们将获得积极的回报,这实际上是最好的状态。因此,每次进入此特定状态 ,我们站立而不是受到打击。 为了让我们知道哪个是最佳操作,我们必须探索每种状态下的所有可能操作以找到最佳值。 我们应该怎么做?
让我介绍一个名为**探索起始的蒙特卡洛**,这意味着对于每个情节,我们都将随机状态作为初始状态开始并执行操作。 因此,如果我们有大量的情节,我们可能会以所有可能的动作覆盖所有州。 它也称为 **MC-ES** 算法。
......@@ -609,7 +609,7 @@ def epsilon_greedy_policy(state, epsilon):
在本章中,我们了解了蒙特卡洛方法的工作原理,以及当我们不了解环境模型时如何使用它来解决 MDP。 我们研究了两种不同的方法:一种是用于估计值函数的蒙特卡洛预测,另一种是用于优化值函数的蒙特卡洛控制。
我们在蒙特卡洛预测中研究了两种不同的方法:首次访问蒙特卡洛预测,其中我们仅在情节中首次访问该状态时才对收益进行平均;以及每次访问蒙特卡洛方法,其中我们将每次 在情节中访问州
我们在蒙特卡洛预测中研究了两种不同的方法:首次访问蒙特卡洛预测,其中只有在剧集中首次访问该状态时,我们才对收益进行平均;以及每次访问蒙特卡洛方法,其中每次在剧集中访问状态时,我们都将收益平均
在蒙特卡洛控制方面,我们研究了不同的算法。 我们首先遇到了 MC-ES 控件,该控件用于覆盖所有状态-动作对。 我们研究了策略上的 MC 控制(它使用`ε`贪婪策略)和策略外的 MC 控制(一次使用两个策略)。
......
# 时间差异学习
在上一章第四章,“使用蒙特卡洛方法的游戏”中,我们了解了有趣的蒙特卡洛方法,该方法用于解决**马尔可夫决策过程****MDP**),而不像动态规划那样预先未知环境的模型动力学。 我们研究了蒙特卡洛预测方法,该方法用于预测值函数,而控制方法用于进一步优化值函数。 但是蒙特卡洛方法存在一些陷阱。 它仅适用于情景任务。 如果情节很长,那么我们必须等待很长时间才能计算价值函数。 因此,我们将使用另一种有趣的算法,称为**时差****TD**)学习,这是一种无模型的学习算法:不需要知道模型动力学 先进,它也可以用于非临时性任务。
在上一章第四章,“使用蒙特卡洛方法的游戏”中,我们了解了有趣的蒙特卡洛方法,该方法用于解决**马尔可夫决策过程****MDP**),而不像动态规划那样预先未知环境的模型动态。 我们研究了蒙特卡洛预测方法,该方法用于预测值函数,而控制方法用于进一步优化值函数。 但是蒙特卡洛方法存在一些陷阱。 它仅适用于情景任务。 如果情节很长,那么我们必须等待很长时间才能计算价值函数。 因此,我们将使用另一种有趣的算法,称为**时差****TD**)学习,这是一种无模型的学习算法:不需要事先知道模型动态,它也可以用于非临时性任务。
在本章中,您将学习:
......@@ -12,7 +12,7 @@
# TD 学习
TD 学习算法由 Sutton 于 1988 年提出。该算法兼顾了蒙特卡洛方法和**动态规划****DP**)的优点。 像蒙特卡洛方法一样,它不需要模型动力学,而像 DP 一样,它不需要等到情节结束就可以估计值函数。 取而代之的是,它基于先前学习的估算值来估算当前估算值,这也称为自举。 如果您在蒙特卡洛方法中看到没有引导程序,那么我们仅在情节结束时进行估计,但在 TD 方法中我们可以进行引导。
TD 学习算法由 Sutton 于 1988 年提出。该算法兼顾了蒙特卡洛方法和**动态规划****DP**)的优点。 像蒙特卡洛方法一样,它不需要模型动,而像 DP 一样,它不需要等到情节结束就可以估计值函数。 取而代之的是,它基于先前学习的估算值来估算当前估算值,这也称为自举。 如果您在蒙特卡洛方法中看到没有引导程序,那么我们仅在情节结束时进行估计,但在 TD 方法中我们可以进行引导。
# TD 预测
......@@ -122,7 +122,7 @@ V(s) = -0.0315
![](img/00125.jpeg)
现在,我们已经对状态`(3, 2)`执行了向下操作,并使用`ε`贪婪策略达到了新状态`(4, 2)`,我们如何更新 使用我们的更新规则的先前状态`(3, 2)`的值? 这很简单。 查看`Q`表,如下所示:
现在,我们已经对状态`(3, 2)`执行了向下操作,并使用`ε`贪婪策略达到了新状态`(4, 2)`,我们如何使用我们的更新规则来更新先前状态`(3, 2)`的值? 这很简单。 查看`Q`表,如下所示:
![](img/00126.jpeg)
......@@ -184,7 +184,7 @@ Q ( (4,2), right) = 0.8 + 0.1 (0.3 + 1 max [ 0.1,0.3] - 0.8)
为了演示该问题,我们假设代理是驱动程序。 有四个地点,代理商必须在一个地点接客并在另一地点下车。 智能体将获得 +20 积分作为成功下车的奖励,而每走一步便获得 -1 积分。 该代理商还将因非法取送丢掉 -10 分。 因此,我们代理商的目标是学会在短时间内在正确的位置上落客而不增加非法乘客。
这里显示的环境中,字母(`R``G``Y``B`)代表不同的位置,并且是一个小矩形 是驾驶出租车的代理商
这里显示的环境中,字母(`R``G``Y``B`)代表不同的位置,并且一个小矩形是驾驶出租车的智能体
![](img/00131.gif)
......
......@@ -506,7 +506,7 @@ Figure 1.14: GAN architecture 
权重`w[ij] ∈ W`将可见单位`i`连接到隐藏单位`j`,其中`W ∈ R^(mxn)`是所有这些权重的集合,从可见单位到隐藏单位。 可见单位的偏差由`b[i] ∈ b`表示,而隐藏单位的偏差由`c[j] ∈ c`表示。
受统计物理学中玻耳兹曼分布的思想启发,可见层矢量`v`和隐藏层矢量`h`的联合分布与 负能量的配置
受统计物理学中玻耳兹曼分布的思想启发,可见层矢量`v`和隐藏层矢量`h`的联合分布正比于配置的负能量的指数
![](img/1aea1d38-4ac6-4663-b3a2-31b6849a03a0.png)(1)
......@@ -524,13 +524,13 @@ Figure 1.14: GAN architecture 
因此,一旦我们通过训练了解了 RBM 的权重和偏差,就可以在给定隐藏状态的情况下对可见表示进行采样,而在给定可见状态的情况下可以对隐藏状态进行采样。
类似于**主成分分析****PCA**),RBM 是一种表示一维数据的方法,由可见层`v`表示为不同的维 由隐藏层`h`提供。 当隐藏层的尺寸小于可见层的尺寸时,RBM 执行减小尺寸的任务。 RBM 通常在二进制数据上训练。
类似于**主成分分析****PCA**),RBM 是一种方法,将一个维度(由可见层`v`提供)中的数据表示为不同的维度(由隐藏层`h`提供)。 当隐藏层的尺寸小于可见层的尺寸时,RBM 执行减小尺寸的任务。 RBM 通常在二进制数据上训练。
通过最大化训练数据的可能性来训练 RBM。 在成本函数相对于权重和偏差的梯度下降的每次迭代中,都会出现采样,这会使训练过程变得昂贵并且在计算上有些棘手。 一种名为**对比发散**的聪明采样方法(使用吉布斯采样)用于训练 RBM。
在第 6 章,“智能推荐系统”中,我们将使用 RBM 构建推荐系统。
# 汽车编码器
# 编码器
与 RBM 十分相似,**自编码器**是一类无监督的学习算法,旨在发现数据中的隐藏结构。 在**主成分分析****PCA**)中,我们尝试捕获输入变量之间的线性关系,并尝试通过(输入变量的)线性组合来在降维空间中表示数据,这说明了数据的大部分差异。 但是,PCA 无法捕获输入变量之间的非线性关系。
......
......@@ -347,13 +347,13 @@ RBM 的参数是可见层单位`i`与隐藏层单位之间的广义权重连接`
# 对比分歧
计算联合概率分布的期望值的一种方法是通过吉布斯采样从联合概率分布中生成很多样本,然后将样本的平均值作为期望值。 在吉布斯抽样中,可以以其余变量为条件对联合概率分布中的每个变量进行抽样。 由于可见单位是独立的,因此给定隐藏单位,反之亦然,因此您可以将隐藏单位采样为`h_bar <- P(h/v)`,然后将可见单位激活给定隐藏单位为`v_bar = P(v/h = h_bar)`。 然后我们可以将样本`(v_bar, h_bar)`作为从联合概率分布中抽取的样本。 这样,我们可以生成大量样本,例如`M`,并取其平均值来计算期望的期望值。 但是,在梯度下降的每个步骤中进行如此大量的采样将使训练过程变得令人无法接受的缓慢,因此,与其在梯度下降的每个步骤中计算许多样本的平均值,不如从联合概率中生成一个样本 表示整个联合概率分布中期望期望的分布
计算联合概率分布的期望值的一种方法是通过吉布斯采样从联合概率分布中生成很多样本,然后将样本的平均值作为期望值。 在吉布斯抽样中,可以以其余变量为条件对联合概率分布中的每个变量进行抽样。 由于可见单位是独立的,因此给定隐藏单位,反之亦然,因此您可以将隐藏单位采样为`h_bar <- P(h/v)`,然后将可见单位激活给定隐藏单位为`v_bar = P(v/h = h_bar)`。 然后我们可以将样本`(v_bar, h_bar)`作为从联合概率分布中抽取的样本。 这样,我们可以生成大量样本,例如`M`,并取其平均值来计算期望的期望值。 但是,在梯度下降的每个步骤中进行如此大量的采样将使训练过程变得令人无法接受的缓慢,因此,与其在梯度下降的每个步骤中计算许多样本的平均值,不如从联合概率中生成一个样本,它应当表示整个联合概率分布上的所需期望
![](img/e1fb8a28-45d4-4ebd-b17c-861618cfd639.png)
图 6.7:对比散度图
如上图所示(“图 6.7”),我们从可见的输入`v^(t)`开始,并对隐藏层进行采样 根据条件概率分布`P(h / v = v^(t))`激活`h'`。 再次,使用条件概率分布`P(v / h = h')`,我们对`v'`进行采样。 根据条件概率分布`P(h / v = v')`对隐藏单元的下一次采样给出`h_bar`,然后使用`P(v/h = h_bar)`对可见单元激活进行采样 给我们`v_bar`。 对于`v``h`,即`P(v, h/Θ)`的整个联合概率分布,将样本`(v_bar, h_bar)`取为代表性样本。 相同的用于计算包含`v``h`的任何表达式的期望。 这种采样过程称为对比散度。
如上图所示(“图 6.7”),我们从可见的输入`v^(t)`开始,并根据条件概率分布`P(h / v = v^(t))`采样隐藏层激活`h'`。 再次,使用条件概率分布`P(v / h = h')`,我们对`v'`进行采样。 根据条件概率分布`P(h / v = v')`对隐藏单元的下一次采样给出`h_bar`,然后使用`P(v/h = h_bar)`对可见单元激活进行采样,将提供给我们`v_bar`。 对于`v``h`,即`P(v, h/Θ)`的整个联合概率分布,将样本`(v_bar, h_bar)`取为代表性样本。 相同的用于计算包含`v``h`的任何表达式的期望。 这种采样过程称为对比散度。
从可见输入开始,然后从条件分布`P(v / h)``P(v / h)`连续采样构成吉布斯采样的一个步骤,并为我们提供了联合分布中的样本`v / h`。 代替在吉布斯采样的每个步骤中选择样本`v / h`,我们可以选择从条件概率分布中进行几次连续的采样迭代后再选择样本。 如果在吉布斯采样的`k`个步骤之后,选择了代表元素,则将对比散度称为`CD-k`。 “图 6.7”中所示的对比散度可以称为`CD-2`,因为我们是在经过两步吉布斯采样后才选择样本的。
......
......@@ -295,7 +295,7 @@ def train_model(self,model,X_train,X_test,y_train,y_test):
```
`train_model`函数的开头,我们创建`input_y_train``input_y_test`,它们分别是`y_train``y_test`的副本,并从它们移了一个时间步,以便它们可以用作输入 解码器每个时间步的前一个字。 这些移位序列的第一个单词是`START`关键字,它在解码器 LSTM 的第一时间步输入。 `include_start_token`定制实用程序功能如下:
`train_model`函数的开头,我们创建`input_y_train``input_y_test`,它们分别是`y_train``y_test`的副本,并从它们移了一个时间步,以便它们可以用作解码器每个时间步的前一个单词的输入。 这些移位序列的第一个单词是`START`关键字,它在解码器 LSTM 的第一时间步输入。 `include_start_token`定制实用程序功能如下:
```py
def include_start_token(self,Y):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册