提交 aef6ca50 编写于 作者: W wizardforcel

2020-08-15 19:56:35

上级 f817c050
......@@ -10,17 +10,17 @@
# 介绍
自编码器,也称为**空竹网络****自动关联器**,最初由 Hinton 和 PDP 组[1]于 1980 年代提出。 它们是前馈网络,没有任何反馈,并且它们是通过无监督学习来学习的。 像第 3 章的多人感知器,*神经网络感知器*一样,它们使用反向传播算法进行学习,但有一个主要区别-目标与输入相同。
自编码器,也称为**空竹网络****自动关联器**,最初由 Hinton 和 PDP 小组于 1980 年代提出。 它们是前馈网络,没有任何反馈,并且它们是通过无监督学习来学习的。 像第 3 章的多人感知器,*神经网络感知器*一样,它们使用反向传播算法进行学习,但有一个主要区别-目标与输入相同。
我们可以认为自编码器由两个级联网络组成-第一个网络是编码器,它接受输入 *x* ,然后使用变换 *h* 将其编码为编码信号[ *和*
我们可以认为自编码器由两个级联网络组成-第一个网络是编码器,它接受输入`x`,然后使用变换`h`将其编码为编码信号`y`
*y* = *h*(*x*)
`y = h(x)`
第二网络使用编码信号 *y* 作为其输入,并执行另一个变换 *f* 以获得重构信号 *r*
第二网络使用编码信号`y`作为其输入,并执行另一个变换`f`以获得重构信号`r`
*r* = *f*(*y*) = *f*(*h*(*x*))
`r = f(y) = f(h(x))`
我们将误差 *e* 定义为原始输入 *x* 与重构信号 *r 之间的差,e* = *x* - *r 。* 然后,网络通过减少**均方误差**(**MSE**)进行学习,并且像 MLP 一样,该错误会传播回隐藏层。 下图显示了自编码器,其中编码器和解码器分别突出显示。 自编码器可以具有权重分配,也就是说,解码器和编码器的权重只是彼此的换位,这可以在训练参数数量较少时帮助网络更快地学习,但同时会降低编码器的自由度。 网络。 它们与第 7 章,*无监督学习*的 RBM 非常相似,但有一个很大的区别-自编码器中神经元的状态是确定性的,而在 RBM 中,神经元的状态是确定性的 神经元是概率性的:
我们将误差`e`定义为原始输入`x`与重构信号`r`之间的差,`e = x - r`。然后,网络通过减少**均方误差****MSE**)进行学习,并且像 MLP 一样,该错误会传播回隐藏层。 下图显示了自编码器,其中编码器和解码器分别突出显示。 自编码器可以具有权重分配,也就是说,解码器和编码器的权重只是彼此的换位,这可以在训练参数数量较少时帮助网络更快地学习,但同时会降低编码器的自由度。 网络。 它们与第 7 章“无监督学习”的 RBM 非常相似,但有一个很大的区别-自编码器中神经元的状态是确定性的,而在 RBM 中,神经元的状态是确定性的 神经元是概率性的:
![](img/e02f44f9-d555-4a46-9f16-f3b0307bf6ce.png)
......@@ -192,7 +192,7 @@ for fig, row in zip([Xtest,out], axarr):
# 这个怎么运作...
有趣的是,在前面的代码中,我们将输入的尺寸从 784 减少到 256,并且我们的网络仍可以重建原始图像。 让我们比较一下具有相同隐藏层尺寸的 RBM(*第 7 章,无监督学习*)的性能:
有趣的是,在前面的代码中,我们将输入的尺寸从 784 减少到 256,并且我们的网络仍可以重建原始图像。 让我们比较一下具有相同隐藏层尺寸的 RBM(第 7 章,无监督学习)的性能:
![](img/b15cfc28-8bf9-41c5-9a91-14b5c2b4196a.png)
......@@ -200,7 +200,7 @@ for fig, row in zip([Xtest,out], axarr):
# 还有更多...
诸如 PCA 之类的自编码器可以用于降维,但是 PCA 仅可以表示线性变换,但是我们可以在自编码器中使用非线性激活函数,从而在编码中引入非线性。 这是从 Hinton 论文*复制的结果,该结果使用神经网络*降低了数据的维数。 该结果将 PCA(A)的结果与堆叠式 RBM 作为具有 784-1000-500-250-2 架构的自编码器的结果进行了比较:
诸如 PCA 之类的自编码器可以用于降维,但是 PCA 仅可以表示线性变换,但是我们可以在自编码器中使用非线性激活函数,从而在编码中引入非线性。 这是从 Hinton 论文复制的结果,该结果使用*神经网络*降低了数据的维数。 该结果将 PCA(A)的结果与堆叠式 RBM 作为具有 784-1000-500-250-2 架构的自编码器的结果进行了比较:
![](img/e7b06856-5f73-46b2-a430-7d8701770449.png)
......@@ -210,21 +210,21 @@ for fig, row in zip([Xtest,out], axarr):
我们在前面的食谱中看到的自编码器的工作方式更像是一个身份网络-它们只是重构输入。 重点是在像素级别重建图像,唯一的限制是瓶颈层中的单元数; 有趣的是,像素级重建不能确保网络将从数据集中学习抽象特征。 通过添加更多约束,我们可以确保网络从数据集中学习抽象特征。
在稀疏自编码器中,将稀疏惩罚项添加到重构错误中,以确保在任何给定时间触发瓶颈层中较少的单元。 如果 *m* 是输入模式的总数,那么我们可以定义一个数量`ρ_hat`(您可以在 [Andrew Ng 的讲座](https://web.stanford.edu/class/cs294a/sparseAutoencoder_2011new.pdf)中检查数学细节),它测量每个隐藏层单位的净活动(平均触发多少次)。 基本思想是放置一个约束`ρ_hat`,使其等于稀疏性参数ρ*。* 这导致损失函数中添加了稀疏性的正则项,因此现在`loss`函数如下:
在稀疏自编码器中,将稀疏惩罚项添加到重构错误中,以确保在任何给定时间触发瓶颈层中较少的单元。 如果`m`是输入模式的总数,那么我们可以定义一个数量`ρ_hat`(您可以在 [Andrew Ng 的讲座](https://web.stanford.edu/class/cs294a/sparseAutoencoder_2011new.pdf)中检查数学细节),它测量每个隐藏层单位的净活动(平均触发多少次)。 基本思想是放置一个约束`ρ_hat`,使其等于稀疏性参数`ρ`这导致损失函数中添加了稀疏性的正则项,因此现在`loss`函数如下:
```py
loss = Mean squared error + Regularization for sparsity parameter
```
如果`ρ_hat`偏离`ρ` *,则此正则化项将对网络造成不利影响;* 做到这一点的一种标准方法是使用`ρ``ρ_hat` *之间的 **Kullback-Leiber** (**KL**)差异。*
如果`ρ_hat`偏离`ρ`,则此正则化项将对网络造成不利影响;做到这一点的一种标准方法是使用`ρ``ρ_hat`之间的 **Kullback-Leiber****KL**)差异。
# 准备...
在开始食谱之前,让我们进一步探讨 KL 的差异, *D <sub>KL</sub>* 。 它是两个分布之间差异的非对称度量,在我们的情况下为`ρ``ρ_hat` *。**`ρ`*`ρ_hat`相等时,则为零,否则,当`ρ_hat``*ρ*`分叉时,它单调增加。 在数学上,它表示为:
在开始食谱之前,让我们进一步探讨 KL 的差异,`D[KL]`。 它是两个分布之间差异的非对称度量,在我们的情况下为`ρ``ρ_hat`。当`ρ``ρ_hat`相等时,则为零,否则,当`ρ_hat``ρ`分叉时,它单调增加。在数学上,它表示为:
![](img/2af9126b-03f8-44e1-b55f-b6d796fc91e9.png)
这是固定*ρ* = 0.3 时 *D <sub>KL</sub>* 的图,我们可以看到当*ρ_hat= 0.3* 时, *D <sub>KL</sub>* = 0; 否则,双方的单调增长:
这是固定`ρ = 0.3``D[KL]`的图,我们可以看到当`ρ_hat = 0.3`时,`D[KL] = 0`;否则在两端单调增长:
![](img/9787a812-e35c-4503-9ade-e270c508c780.png)
......@@ -617,13 +617,13 @@ for fig, row in zip([Xtest_noisy,out], axarr):
# 卷积汽车编码器
研究人员发现**卷积神经网络****CNN**)与图像效果最佳,因为它们可以提取隐藏在图像中的空间信息。 因此,很自然地假设,如果编码器和解码器网络由 CNN 组成,它将比其余的自编码器更好地工作,因此我们有了**卷积自编码器****CAE**)。 在第 4 章 [*卷积神经网络*](../Text/04.html) 中,说明了卷积和最大池化的过程,我们将以此为基础来了解卷积自编码器的工作原理。
研究人员发现**卷积神经网络****CNN**)与图像效果最佳,因为它们可以提取隐藏在图像中的空间信息。 因此,很自然地假设,如果编码器和解码器网络由 CNN 组成,它将比其余的自编码器更好地工作,因此我们有了**卷积自编码器****CAE**)。 在第 4 章“卷积神经网络”中,说明了卷积和最大池化的过程,我们将以此为基础来了解卷积自编码器的工作原理。
CAE 是其中编码器和解码器均为 CNN 网络的一种 CAE。 编码器的卷积网络学习将输入编码为一组信号,然后解码器 CNN 尝试从中重建输入。 它们充当通用特征提取器,并学习从输入捕获特征所需的最佳过滤器。
# 准备...
从第 4 章*卷积神经网络*中,您了解到,随着添加卷积层,传递到下一层的信息在空间范围上会减少,但是在自编码器中,重建的图像应该是相同的 大小和深度作为输入图像。 这意味着解码器应以某种方式对图像进行大小调整和卷积以重建原始图像。 与卷积一起增加空间范围的一种方法是借助**转置的卷积层**。 通过`tf.nn.conv2d_transpose`可以轻松地在 TensorFlow 中实现这些功能,但是发现转置的卷积层会在最终图像中产生伪像。 奥古斯都·奥德纳(Augustus Odena)等。 [1]在他们的工作中表明,可以通过使用最近邻或双线性插值(上采样)再加上卷积层来调整图层的大小来避免这些伪像。 他们通过`tf.image.resize_images`实现了最近邻插值,取得了最佳结果; 我们将在此处采用相同的方法。
从第 4 章“卷积神经网络”中,您了解到,随着添加卷积层,传递到下一层的信息在空间范围上会减少,但是在自编码器中,重建的图像应该是相同的 大小和深度作为输入图像。 这意味着解码器应以某种方式对图像进行大小调整和卷积以重建原始图像。 与卷积一起增加空间范围的一种方法是借助**转置的卷积层**。 通过`tf.nn.conv2d_transpose`可以轻松地在 TensorFlow 中实现这些功能,但是发现转置的卷积层会在最终图像中产生伪像。 奥古斯都·奥德纳(Augustus Odena)等。 [1]在他们的工作中表明,可以通过使用最近邻或双线性插值(上采样)再加上卷积层来调整图层的大小来避免这些伪像。 他们通过`tf.image.resize_images`实现了最近邻插值,取得了最佳结果; 我们将在此处采用相同的方法。
# 怎么做...
......
......@@ -33,7 +33,7 @@ AlphaGo 在基于 RL 算法的深度神经网络与最先进的树搜索算法
Adapted from Reinforcement Learning: an Introduction by Sutton and BartoEven our brain has a group of subcortical nuclei situated at the base of the forebrain called **basal ganglia**, which, according to neuroscience, are responsible for action selection, that is, help us decide which of several possible actions to execute at any given time.
代理人的目的是使报酬最大化并减少惩罚。 做出此决策涉及各种挑战,最重要的挑战是如何最大化未来的回报,也称为**临时分分配问题**。 代理根据某些策略(π)决定其操作; 代理根据其与环境的交互来学习此策略(π)。 有各种策略学习算法; 我们将在本章中探索其中的一些。 代理通过反复试验的过程来推断最优策略(π*),并且要学习最优策略,代理需要与之交互的环境; 我们将使用提供不同环境的 OpenAI Gym。
代理人的目的是使报酬最大化并减少惩罚。 做出此决策涉及各种挑战,最重要的挑战是如何最大化未来的回报,也称为**临时分分配问题**。 代理根据某些策略(π)决定其操作; 代理根据其与环境的交互来学习此策略(π)。 有各种策略学习算法; 我们将在本章中探索其中的一些。 代理通过反复试验的过程来推断最优策略(π*),并且要学习最优策略,代理需要与之交互的环境; 我们将使用提供不同环境的 OpenAI Gym。
在这里,我们仅对 RL 中涉及的基本概念进行了回顾; 我们假设您熟悉马尔可夫概念的决策过程,折现因子和价值函数(状态值和动作值)。
......
......@@ -18,9 +18,9 @@
我强烈建议读者看一看[大型分布式深度网络](https://research.google.com/archive/large_deep_networks_nips2012.html)(Jeffrey Dean,Greg S.Corrado,Rajat Monga,Kai Chen,Matthieu Devin,Quoc V.Le,Mark Z.Mao,Marc'Aurelio Ranzato,Andrew Senior ,Paul Tucker,Ke Yang 和 Andrew Y. Ng。 NIPS,2012 年)
本文的一项关键结果是证明可以运行分布式**随机梯度下降****SDG**),其中多个节点在数据碎片上并行工作,并且独立且异步地更新 通过将更新发送到参数服务器来实现梯度。 引用论文摘要:
本文的一项关键结果是证明可以运行分布式**随机梯度下降****SGD**),其中多个节点在数据碎片上并行工作,并且独立且异步地更新 通过将更新发送到参数服务器来实现梯度。 引用论文摘要:
*Our experiments reveal several surprising results about large-scale nonconvex optimization. Firstly, asynchronous SGD, rarely applied to nonconvex problems, works very well for training deep networks, particularly when combined with Adagrad adaptive learning rates.*
我们的实验揭示了关于大规模非凸优化的几个令人惊讶的结果。 首先,异步 SGD 很少用于非凸问题,对于训练深度网络非常有效,特别是与 Adagrad 自适应学习率结合使用时。
下图取自论文本身,很好地说明了这一点:
......@@ -446,7 +446,7 @@ cd ..
bazel test tensorflow_serving/...
```
5. 现在,让我们看一个保存模型的示例,以便服务器可以保存它。 此步骤的灵感来自[用于构建 MNIST 训练器和服务模型的示例](https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/mnist_saved_model.py)。 第一步是将构建器导入为 saved_model_builder。 然后,大部分工作由`SavedModelBuilder()`完成,该工作将已训练模型的*快照*保存到可靠的存储中。 请注意,此处`export_path`/ tmp / mnist_model /
5. 现在,让我们看一个保存模型的示例,以便服务器可以保存它。 此步骤的灵感来自[用于构建 MNIST 训练器和服务模型的示例](https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/mnist_saved_model.py)。 第一步是将构建器导入为 saved_model_builder。 然后,大部分工作由`SavedModelBuilder()`完成,该工作将已训练模型的*快照*保存到可靠的存储中。 请注意,此处`export_path``/tmp/mnist_model/`
```py
from tensorflow.python.saved_model import builder as saved_model_builder
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册