提交 45e3f8f6 编写于 作者: W wizardforcel

2020-12-19 23:24:55

上级 fda82882
......@@ -597,7 +597,7 @@ ReLU 具有非线性属性。 它们的定义是:
###### 激活功能-实现
在 Keras 中实现激活功能的最简单方法是实例化`Activation()`类,并将其添加到`Sequential()`模型中。 可以使用 Keras 中可用的任何激活功能实例化`Activation()`(有关完整列表,请参见 [https://keras.io/activations/](https://keras.io/activations/) )。 在我们的例子中,我们将使用`tanh`功能。 实现激活功能后,我们将模型的版本更改为`v2`,使其变为`bitcoin_lstm_v3`
在 Keras 中实现激活功能的最简单方法是实例化`Activation()`类,并将其添加到`Sequential()`模型中。 可以使用 Keras 中可用的任何激活功能实例化`Activation()`(有关完整列表,请参见[这里](https://keras.io/activations/))。 在我们的例子中,我们将使用`tanh`功能。 实现激活功能后,我们将模型的版本更改为`v2`,使其变为`bitcoin_lstm_v3`
```py
model = Sequential()
......@@ -768,7 +768,7 @@ MAPE(整个系列)
activation_function = "tanh"
```
我们在本节中使用了`tanh`功能,但是请随时尝试其他激活功能。 查看 [https://keras.io/activations/](https://keras.io/activations/) 上可用的列表,然后尝试其他可能性。
我们在本节中使用了`tanh`功能,但是请随时尝试其他激活功能。 查看[这个页面](https://keras.io/activations/)上可用的列表,然后尝试其他可能性。
我们的最终选择是尝试不同的正则化策略。 这显然更加复杂,并且可能需要花费一些迭代才能注意到任何收益,尤其是数据量很少时。 此外,添加正则化策略通常会增加网络的培训时间。
......
......@@ -27,7 +27,7 @@
按照该建议,我们将使用两个类来帮助我们构建 Web 应用程序:`CoinMarketCap()``Model()`
* `CoinMarketCap()`:此是用于从以下网站获取比特币价格的类: [http://www.coinmarketcap.com](http://www.coinmarketcap.com) 。 这就是我们原始比特币数据来自的地方。 通过此类,可以轻松地定期检索该数据,并返回带有已解析记录和所有可用历史数据的 Pandas DataFrame。 `CoinMarketCap()`是我们的数据组件。
* `CoinMarketCap()`:此是[用于从以下网站获取比特币价格的类](http://www.coinmarketcap.com)。 这就是我们原始比特币数据来自的地方。 通过此类,可以轻松地定期检索该数据,并返回带有已解析记录和所有可用历史数据的 Pandas DataFrame。 `CoinMarketCap()`是我们的数据组件。
* `Model()`:此类将到目前为止已编写的所有代码实现为一个类。 该类提供了与我们先前训练的模型进行交互的工具,并且还允许使用非规范化数据进行预测,这更容易理解。 `Model()`类是我们的模型组件。
这两个类在我们的示例应用程序中得到了广泛使用,并定义了数据和模型组件。
......@@ -99,7 +99,7 @@
### 注意
灾难性的遗忘是影响神经网络的常见现象。 深度学习研究人员多年来一直在努力解决这个问题。 DeepMind 是英国拥有的 Google 深度学习研究小组,在寻找解决方案方面取得了显着进步。 et al。发表的文章*克服了神经网络中的灾难性遗忘,*。 等 是此类工作的很好参考。 该论文可在以下网站获得: [https://arxiv.org/pdf/1612.00796.pdf](https://arxiv.org/pdf/1612.00796.pdf)
灾难性的遗忘是影响神经网络的常见现象。 深度学习研究人员多年来一直在努力解决这个问题。 DeepMind 是英国拥有的 Google 深度学习研究小组,在寻找解决方案方面取得了显着进步。 [《克服神经网络中的灾难性遗忘》](https://arxiv.org/pdf/1612.00796.pdf)是此类工作的很好参考
首次用于训练的接口(`model.fit()`)可以用于训练新数据:
......@@ -183,7 +183,7 @@ M.train(model_data[i*7:7*(40 + i) + 7])
2. Open the URL provided by the application in your browser and open the Jupyter Notebook named `Activity_8_Re_training_a_model_dynamically.ipynb`.
现在,我们将从`cryptonic: Model()`和`CoinMarketCap()`加载这两个类。 这些类有助于操纵模型的过程以及从网站 CoinMarketCap( [https://coinmarketcap.com/](https://coinmarketcap.com/) )获取数据的过程。
现在,我们将从`cryptonic: Model()`和`CoinMarketCap()`加载这两个类。 这些类有助于操纵模型的过程以及从网站 [CoinMarketCap](https://coinmarketcap.com/) 获取数据的过程。
3. In the Jupyter Notebook instance, navigate to the header **Fetching Real-Time Data**. We will now be fetching updated historical data from CoinMarketCap. Simply call the method:
......@@ -425,7 +425,7 @@ $ docker-compose up -d
* Docker(社区版)17.12.0-ce 或更高版本
* Docker Compose(docker-compose)1.18.0 或更高版本
可以从以下网站下载上述两个组件并将其安装在所有主要系统中: [http://docker.com/](https://www.docker.com/)。 这些对于完成此活动至关重要。 继续前进之前,请确保这些在系统中可用。
可以从[以下网站](https://www.docker.com/)下载上述两个组件并将其安装在所有主要系统中。 这些对于完成此活动至关重要。 继续前进之前,请确保这些在系统中可用。
1. 在您的终端上,浏览至加密目录并为所有必需的组件构建 docker 映像:
......
......@@ -48,9 +48,9 @@ TensorFlow 是 Google 流行的机器学习和深度学习产品。 它已迅速
* Mac 版 Zipeg / iZip / UnRarX
* 适用于 Linux 的 7-Zip / PeaZip
本书的代码包也托管在 GitHub 的 [https://github.com/PacktPublishing/Hands-On-Deep-Learning-for-Images-with-TensorFlow](https://github.com/PacktPublishing/Hands-On-Deep-Learning-for-Images-with-TensorFlow) 。 如果代码有更新,它将在现有的 GitHub 存储库中进行更新。
本书的代码包也托管在 [GitHub](https://github.com/PacktPublishing/Hands-On-Deep-Learning-for-Images-with-TensorFlow)。 如果代码有更新,它将在现有的 GitHub 存储库中进行更新。
我们还有丰富的书籍和视频目录中的其他代码包,可通过 **[https://github.com/PacktPublishing/](https://github.com/PacktPublishing/)** 获得。 去看一下!
我们还有丰富的书籍和视频目录中的其他代码包,可通过[这里](https://github.com/PacktPublishing/)获得。 去看一下!
# 使用约定
......
......@@ -11,7 +11,7 @@
我们需要下载 Docker 才能安装它,在本节中,您将看到我们如何在 Windows 上安装 Docker 并使用适合在 Linux 上安装的脚本。
让我们从 [https://www.docker.com/](https://www.docker.com/) 安装 Docker。 完成此操作的最快方法是前往菜单。 在这里,我们将选择下载 Windows 版本。 单击一下,直接转到 Docker 商店,您可以在其中下载适用于您平台的特定安装程序,如以下屏幕快照所示:
让我们从[这里](https://www.docker.com/)安装 Docker。 完成此操作的最快方法是前往菜单。 在这里,我们将选择下载 Windows 版本。 单击一下,直接转到 Docker 商店,您可以在其中下载适用于您平台的特定安装程序,如以下屏幕快照所示:
![](img/d683abc7-f74f-43a6-b21f-d817e6323905.png)
......@@ -43,7 +43,7 @@ GPU 状态
现在,让我们开始准备准备机器学习的 Docker 文件。 在本节中,我们将研究克隆源文件,Docker 所需的基本映像,安装其他必需的软件包,公开一个卷以便您可以共享您的工作以及公开端口以便您能够 看 Jupyter Notebooks,这是我们将用来探索机器学习的工具。
现在,您需要获取这些部分附带的源代码。 前往 [https://github.com/wballard/kerasvideo/tree/2018](https://github.com/wballard/kerasvideo/tree/2018) ,您可以在其中快速克隆存储库。 在这里,我们只是使用 GitHub for Windows 作为一种相对快速的方法来克隆该存储库,但是您可以以自己喜欢的任何方式使用 Git。 将这些文件放在哪个目录中都没有关系。 我们只是将它们下载到本地工作目录中。 然后,我们将使用此位置作为开始构建实际 Docker 容器的位置。
现在,您需要获取这些部分附带的源代码。 前往[这里](https://github.com/wballard/kerasvideo/tree/2018),您可以在其中快速克隆存储库。 在这里,我们只是使用 GitHub for Windows 作为一种相对快速的方法来克隆该存储库,但是您可以以自己喜欢的任何方式使用 Git。 将这些文件放在哪个目录中都没有关系。 我们只是将它们下载到本地工作目录中。 然后,我们将使用此位置作为开始构建实际 Docker 容器的位置。
在克隆存储库中,查看 Docker 文件:
......@@ -232,6 +232,6 @@ IPython 笔记本
# 概要
在本章中,我们研究了如何安装 Docker,包括从 [https://www.docker.com/](https://www.docker.com/) 获取它,设置机器学习 Docker 文件,与主机共享数据回传。 ,然后最后,运行 REST 服务以提供我们将在本书中使用的环境。
在本章中,我们研究了如何安装 Docker,包括从[这里](https://www.docker.com/)获取它,设置机器学习 Docker 文件,与主机共享数据回传。 ,然后最后,运行 REST 服务以提供我们将在本书中使用的环境。
在下一章中,我们将深入研究并开始查看实际数据。 然后,我们将从了解如何获取图像数据并准备将其用于机器学习模型开始。
\ No newline at end of file
# 前言
*使用 Python 进行动手元学习*解释了元学习的基础知识,并帮助您了解学习学习的概念。 您将经历各种一次性学习算法,例如暹罗,原型,关系和内存增强网络,并在 TensorFlow 和 Keras 中实现它们。 您还将了解最新的元学习算法,例如与模型无关的元学习(MAML),爬行动物和通过元学习进行快速上下文适应(CAML)。 然后,您将探索如何使用 meta-SGD 快速学习,并发现如何使用元学习进行无监督学习。
*使用 Python 进行动手元学习*解释了元学习的基础知识,并帮助您了解元学习的概念。 您将经历各种一次性学习算法,例如连体,原型,关系和内存增强网络,并在 TensorFlow 和 Keras 中实现它们。 您还将了解最新的元学习算法,例如与模型无关的元学习(MAML),爬行动物和通过元学习进行快速上下文适应(CAML)。 然后,您将探索如何使用 meta-SGD 快速学习,并发现如何使用元学习进行无监督学习。
# 这本书是给谁的
......@@ -32,9 +32,9 @@
* Mac 版 Zipeg / iZip / UnRarX
* 适用于 Linux 的 7-Zip / PeaZip
本书的代码包也托管在 GitHub 上 [https://github.com/PacktPublishing/Hands-On-Meta-Learning-with-Python](https://github.com/PacktPublishing/Hands-On-Meta-Learning-with-Python) 。 如果代码有更新,它将在现有的 GitHub 存储库中进行更新。
本书的代码包也[托管在 GitHub 上](https://github.com/PacktPublishing/Hands-On-Meta-Learning-with-Python)。 如果代码有更新,它将在现有的 GitHub 存储库中进行更新。
我们还有丰富的书籍和视频目录中的其他代码包,可通过 **[https://github.com/PacktPublishing/](https://github.com/PacktPublishing/)** 获得。 去看一下!
我们还有丰富的书籍和视频目录中的其他代码包,可通过[这里](https://github.com/PacktPublishing/)获得。 去看一下!
# 使用约定
......
......@@ -16,7 +16,7 @@
近年来,借助强大的算法(如生成对抗网络和胶囊网络),深度学习取得了飞速的发展。 但是深度神经网络的问题在于,我们需要拥有大量的训练集来训练我们的模型,而当我们只有很少的数据点时,它将突然失败。 假设我们训练了一个深度学习模型来执行任务 *A* 。 现在,当我们有一个新任务 *B,**A* 密切相关时,我们不能使用相同的模型。 我们需要从头开始为任务 *B* 训练模型。 因此,对于每项任务,我们都需要从头开始训练模型,尽管它们可能是相关的。
深度学习真的是真正的 AI 吗? 好吧,不是。 人类如何学习? 我们将学习概括为多个概念并从中学习。 但是当前的学习算法仅能完成一项任务。 这就是元学习的用武之地。元学习产生了一个通用的 AI 模型,该模型可以学习执行各种任务,而无需从头开始进行培训。 我们使用很少的数据点在各种相关任务上训练我们的元学习模型,因此对于新的相关任务,它可以利用从先前任务中获得的学习知识,而不必从头开始进行训练。 许多研究人员和科学家认为,元学习可以使我们更接近实现 AGI。 在接下来的部分中,我们将确切学习元学习模型如何学习学习过程。
深度学习真的是真正的 AI 吗? 好吧,不是。 人类如何学习? 我们将学习概括为多个概念并从中学习。 但是当前的学习算法仅能完成一项任务。 这就是元学习的用武之地。元学习产生了一个通用的 AI 模型,该模型可以学习执行各种任务,而无需从头开始进行培训。 我们使用很少的数据点在各种相关任务上训练我们的元学习模型,因此对于新的相关任务,它可以利用从先前任务中获得的学习知识,而不必从头开始进行训练。 许多研究人员和科学家认为,元学习可以使我们更接近实现 AGI。 在接下来的部分中,我们将确切学习元学习模型如何学习过程。
# 元学习和少拍
......@@ -34,7 +34,7 @@
# 学习度量空间
在基于度量的元学习设置中,我们将学习适当的度量空间。 假设我们要学习两个图像之间的相似性。 在基于度量的设置中,我们使用一个简单的神经网络从两个图像中提取特征,并通过计算这两个图像的特征之间的距离来找到相似性。 这种方法广泛用于我们没有很多数据点的几次学习设置中。 在接下来的章节中,我们将学习基于度量的学习算法,例如暹罗网络,原型网络和关系网络。
在基于度量的元学习设置中,我们将学习适当的度量空间。 假设我们要学习两个图像之间的相似性。 在基于度量的设置中,我们使用一个简单的神经网络从两个图像中提取特征,并通过计算这两个图像的特征之间的距离来找到相似性。 这种方法广泛用于我们没有很多数据点的几次学习设置中。 在接下来的章节中,我们将学习基于度量的学习算法,例如连体网络,原型网络和关系网络。
# 学习初始化
......@@ -46,7 +46,7 @@
# 学习通过梯度下降学习梯度下降
现在,我们将看到一种有趣的元学习算法,称为学习通过梯度下降学习梯度下降。 这个名字不是很令人生畏吗? 好吧,事实上,它是最简单的元学习算法之一。 我们知道,在元学习中,我们的目标是学习学习过程。 通常,我们如何训练神经网络? 我们通过计算损耗并通过梯度下降使损耗最小化来训练我们的网络。 因此,我们使用梯度下降来优化模型。 除了使用梯度下降,我们还能自动学习此优化过程吗?
现在,我们将看到一种有趣的元学习算法,称为学习通过梯度下降学习梯度下降。 这个名字不是很令人生畏吗? 好吧,事实上,它是最简单的元学习算法之一。 我们知道,在元学习中,我们的目标是学习过程。 通常,我们如何训练神经网络? 我们通过计算损耗并通过梯度下降使损耗最小化来训练我们的网络。 因此,我们使用梯度下降来优化模型。 除了使用梯度下降,我们还能自动学习此优化过程吗?
但是我们如何学习呢? 我们用**递归神经网络****RNN** )取代了传统的优化器(梯度下降)。 但这如何工作? 如何用 RNN 代替梯度下降? 如果您仔细研究,我们在梯度下降中到底在做什么? 这基本上是从输出层到输入层的一系列更新,我们将这些更新存储在一个状态中。 因此,我们可以使用 RNN 并将更新存储在 RNN 单元中。
......@@ -159,5 +159,5 @@
# 进一步阅读
* 学习通过梯度下降学习梯度下降: [https://arxiv.org/pdf/1606.04474.pdf](https://arxiv.org/pdf/1606.04474.pdf)
* 优化作为少量学习设置的模型: [https://openreview.net/pdf?id=rJY0-Kcll](https://openreview.net/pdf?id=rJY0-Kcll)
\ No newline at end of file
* [学习通过梯度下降学习梯度下降](https://arxiv.org/pdf/1606.04474.pdf)
* [优化作为少量学习设置的模型](https://openreview.net/pdf?id=rJY0-Kcll)
\ No newline at end of file
此差异已折叠。
# 原型网络及其变体
在上一章中,我们了解了什么是暹罗网络以及如何将它们用于执行少量学习任务。 我们还探讨了如何使用暹罗网络进行面部和音频识别。 在本章中,我们将介绍另一种有趣的几次学习算法,称为原型网络,该算法能够将其推广到训练集中没有的班级。 我们将从了解什么是原型网络开始,然后我们将了解如何使用原型网络在 omniglot 数据集中执行分类任务。 然后,我们将看到原型网络的不同变体,例如高斯原型网络和半原型网络。
在上一章中,我们了解了什么是连体网络以及如何将它们用于执行少量学习任务。 我们还探讨了如何使用连体网络进行面部和音频识别。 在本章中,我们将介绍另一种有趣的几次学习算法,称为原型网络,该算法能够将其推广到训练集中没有的班级。 我们将从了解什么是原型网络开始,然后我们将了解如何使用原型网络在 omniglot 数据集中执行分类任务。 然后,我们将看到原型网络的不同变体,例如高斯原型网络和半原型网络。
在本章中,您将了解以下内容:
......@@ -13,7 +13,7 @@
# 原型网络
原型网络是另一种简单,高效,很少的镜头学习算法。 像暹罗网络一样,原型网络尝试学习度量空间以执行分类。 原型网络的基本思想是创建每个类的原型表示形式,并根据类原型与查询点之间的距离对查询点(即新点)进行分类。
原型网络是另一种简单,高效,很少的镜头学习算法。 像连体网络一样,原型网络尝试学习度量空间以执行分类。 原型网络的基本思想是创建每个类的原型表示形式,并根据类原型与查询点之间的距离对查询点(即新点)进行分类。
假设我们有一个包含狮子,大象和狗的图像的支持集,如下图所示:
......@@ -69,7 +69,7 @@
现在,我们将看到如何使用原型网络执行分类任务。 我们使用 omniglot 数据集进行分类。 该数据集包含来自 50 个不同字母的 1,623 个手写字符,每个字符都有 20 个不同的示例,这些示例是由不同的人编写的。 由于我们希望我们的网络从数据中学习,因此我们以相同的方式对其进行训练。 我们从每个类中采样五个示例,并将其用作我们的支持集。 我们使用四个卷积块作为编码器来学习支持集的嵌入,并构建类原型。 同样,我们从每个类中为我们的查询集采样五个示例,学习查询集嵌入,并通过比较查询集嵌入和类原型之间的欧式距离来预测查询集类。 让我们逐步了解它会更好地理解这一点。
您还可以在此处查看 Jupyter Notebook 中可用的代码并进行解释: [https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/03.%20Prototypical% 20Networks%20and%20its%20Variants / 3.3%20Omniglot%20Character%20set%20classification%20using%20Prototypical%20Network.ipynb](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/03.%20Prototypical%20Networks%20and%20its%20Variants/3.3%20Omniglot%20Character%20set%20classification%20using%20Prototypical%20Network.ipynb)
[您还可以在此处查看 Jupyter Notebook 中可用的代码并进行解释](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/03.%20Prototypical%20Networks%20and%20its%20Variants/3.3%20Omniglot%20Character%20set%20classification%20using%20Prototypical%20Network.ipynb)
首先,我们导入所有必需的库:
......@@ -558,6 +558,6 @@ elif inverse_transform_type == "other":
# 进一步阅读
* 原型网络: [https://arxiv.org/pdf/1703.05175.pdf](https://arxiv.org/pdf/1703.05175.pdf)
* 高斯原型网络: [https://arxiv.org/pdf/1708.02735.pdf](https://arxiv.org/pdf/1708.02735.pdf)
* 半原型网络: [https://arxiv.org/pdf/1803.00676.pdf](https://arxiv.org/pdf/1803.00676.pdf)
\ No newline at end of file
* [原型网络](https://arxiv.org/pdf/1703.05175.pdf)
* [高斯原型网络](https://arxiv.org/pdf/1708.02735.pdf)
* [半原型网络](https://arxiv.org/pdf/1803.00676.pdf)
\ No newline at end of file
......@@ -94,7 +94,7 @@
关系函数非常简单,对吧? 通过在 TensorFlow 中实现一个关系网络,我们将更好地理解关系网络。
您还可以在此处查看 Jupyter Notebook 中可用的代码并进行解释: [https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/04.%20Relation% 20and%20Matching%20Networks%20Using%20Tensorflow / 4.5%20Building%20Relation%20Network%20Using%20Tensorflow.ipynb](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/04.%20Relation%20and%20Matching%20Networks%20Using%20Tensorflow/4.5%20Building%20Relation%20Network%20Using%20Tensorflow.ipynb)
[您还可以在此处查看 Jupyter Notebook 中可用的代码并进行解释](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/04.%20Relation%20and%20Matching%20Networks%20Using%20Tensorflow/4.5%20Building%20Relation%20Network%20Using%20Tensorflow.ipynb)
首先,我们导入所有必需的库:
......@@ -685,5 +685,5 @@ class Matching_network():
# 进一步阅读
* 匹配网络: [https://arxiv.org/pdf/1606.04080.pdf](https://arxiv.org/pdf/1606.04080.pdf)
* 关系网络: [https://arxiv.org/pdf/1711.06025.pdf](https://arxiv.org/pdf/1711.06025.pdf)
\ No newline at end of file
* [匹配网络](https://arxiv.org/pdf/1606.04080.pdf)
* [关系网络](https://arxiv.org/pdf/1711.06025.pdf)
\ No newline at end of file
# 记忆增强神经网络
到目前为止,在前面的章节中,我们已经学习了几种基于距离的度量学习算法。 我们从暹罗网络开始,了解了暹罗网络如何学会区分两个输入,然后我们研究了原型网络以及原型网络的变体,例如高斯原型网络和半原型网络。 展望未来,我们探索了有趣的匹配网络和关系网络。
到目前为止,在前面的章节中,我们已经学习了几种基于距离的度量学习算法。 我们从连体网络开始,了解了连体网络如何学会区分两个输入,然后我们研究了原型网络以及原型网络的变体,例如高斯原型网络和半原型网络。 展望未来,我们探索了有趣的匹配网络和关系网络。
在本章中,我们将学习用于一次性学习的**记忆增强神经网络****MANN** )。 在进入 MANN 之前,我们将了解他们的前身**神经图灵机****NTM** )。 我们将学习 NTM 如何使用外部存储器来存储和检索信息,并且还将看到如何使用 NTM 执行复制任务。
......@@ -161,7 +161,7 @@ NTM 的重要组成部分如下:
现在,我们将看到如何使用 NTM 执行复制任务。 复制任务的目的是了解 NTM 如何存储和调用任意长度的序列。 我们将为网络提供一个随机序列,以及一个指示序列结束的标记。 它必须学习输出给定的输入序列。 因此,网络会将输入序列存储在内存中,然后从内存中回读。 现在,我们将逐步了解如何执行复制任务,然后在最后看到整个最终代码。
您还可以在此处查看 Jupyter Notebook 中提供的代码,并附带说明: [https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/05.%20Memory% 20Augmented%20Networks / 5.4%20Copy%20Task%20Using%20NTM.ipynb](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/05.%20Memory%20Augmented%20Networks/5.4%20Copy%20Task%20Using%20NTM.ipynb)
[您还可以在此处查看 Jupyter Notebook 中提供的代码,并附带说明](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/05.%20Memory%20Augmented%20Networks/5.4%20Copy%20Task%20Using%20NTM.ipynb)
首先,我们将了解如何实现 NTM 单元。 而不是查看整个代码,我们将逐行查看它。
......@@ -795,5 +795,5 @@ M_ = prev_M * tf.expand_dims(1\. - tf.one_hot(prev_indices[:, -1], self.memory_s
# 进一步阅读
* NTM 论文: [https://arxiv.org/pdf/1410.5401.pdf](https://arxiv.org/pdf/1410.5401.pdf)
* 使用记忆增强神经网络的一次性学习: [https://arxiv.org/pdf/1605.06065.pdf](https://arxiv.org/pdf/1605.06065.pdf)
\ No newline at end of file
* [NTM 论文](https://arxiv.org/pdf/1410.5401.pdf)
* [使用记忆增强神经网络的一次性学习](https://arxiv.org/pdf/1605.06065.pdf)
\ No newline at end of file
......@@ -14,7 +14,7 @@
# MAML
MAML 是最近推出且使用最广泛的元学习算法之一,它在元学习研究中创造了重大突破。 学习学习是元学习的重点,我们知道,在元学习中,我们从仅包含少量数据点的各种相关任务中学习,并且元学习者会产生一个可以很好地概括新的相关任务的快速学习者 即使训练样本数量较少。
MAML 是最近推出且使用最广泛的元学习算法之一,它在元学习研究中创造了重大突破。 学习是元学习的重点,我们知道,在元学习中,我们从仅包含少量数据点的各种相关任务中学习,并且元学习者会产生一个可以很好地概括新的相关任务的快速学习者 即使训练样本数量较少。
MAML 的基本思想是找到一个更好的初始参数,以便具有良好的初始参数,该模型可以以较少的梯度步骤快速学习新任务。
......@@ -112,7 +112,7 @@ MAML 非常擅长寻找最佳初始参数,对吗? 现在,我们将看到
在上一节中,我们了解了 MAML 的工作原理。 我们看到了 MAML 如何获得更好,更健壮的模型参数θ,该参数可以在各个任务之间推广。 现在,我们将通过从头开始编码来更好地了解 MAML。 为了更好地理解,我们将考虑一个简单的二进制分类任务。 我们随机生成输入数据,并使用简单的单层神经网络对其进行训练,然后尝试找到最佳参数θ。 现在,我们将逐步逐步了解如何执行此操作:
您还可以在此处查看 Jupyter Notebook 中提供的代码,并附带说明: [https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/06.%20MAML% 20and%20it 的%20Variants / 6.5%20Building%20MAML%20From%20Scratch.ipynb](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/06.%20MAML%20and%20it's%20Variants/6.5%20Building%20MAML%20From%20Scratch.ipynb)
[您还可以在此处查看 Jupyter Notebook 中提供的代码,并附带说明](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/06.%20MAML%20and%20it's%20Variants/6.5%20Building%20MAML%20From%20Scratch.ipynb)
首先,我们导入`numpy`库:
......@@ -517,7 +517,7 @@ Sampling Next Batch of Tasks
在上一节中,我们了解了 ADML 的工作原理。 我们看到了如何使用干净样本和对抗样本训练我们的模型,以获得更好,更健壮的模型参数θ,该参数可在各个任务之间推广。 现在,我们将通过从头开始编码来更好地理解 ADML。 为了更好地理解,我们将考虑一个简单的二进制分类任务。 我们随机生成输入数据,并使用单层神经网络对其进行训练,然后尝试找到最佳参数`theta`。 现在,我们将逐步了解 ADML 的工作原理。
您还可以在此处查看 Jupyter Notebook 中提供的代码,并附带说明: [https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/06.%20MAML% 20and%20it 的%20Variants / 6.7%20Building%20ADML%20From%20Scratch.ipynb](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/06.%20MAML%20and%20it's%20Variants/6.7%20Building%20ADML%20From%20Scratch.ipynb)
[您还可以在此处查看 Jupyter Notebook 中提供的代码,并附带说明](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/06.%20MAML%20and%20it's%20Variants/6.7%20Building%20ADML%20From%20Scratch.ipynb)
首先,我们导入所有必需的库:
......@@ -1070,6 +1070,6 @@ Sampling Next Batch of Tasks
# 进一步阅读
* MAML 论文: [https://arxiv.org/pdf/1703.03400.pdf](https://arxiv.org/pdf/1703.03400.pdf)
* 对抗性元学习论文: [https://arxiv.org/pdf/1806.03316.pdf](https://arxiv.org/pdf/1806.03316.pdf)
* CAML 论文: [https://arxiv.org/pdf/1810.03642.pdf](https://arxiv.org/pdf/1810.03642.pdf)
\ No newline at end of file
* [MAML 论文](https://arxiv.org/pdf/1703.03400.pdf)
* [对抗性元学习论文](https://arxiv.org/pdf/1806.03316.pdf)
* [CAML 论文](https://arxiv.org/pdf/1810.03642.pdf)
\ No newline at end of file
......@@ -80,7 +80,7 @@
在上一节中,我们了解了 Meta-SGD 的工作原理。 我们看到了 Meta-SGD 如何获得更好,更健壮的模型参数![](img/0d2d5f82-a3f2-4f2e-a7e0-6d458a3a6600.png),该参数可跨任务进行通用化,并具有最佳的学习率和更新方向。 现在,我们将从头开始对 Meta-SGD 进行编码,以更好地了解它们。 就像我们在 MAML 中所做的一样,为了更好地理解,我们将考虑一个简单的二进制分类任务。 我们随机生成输入数据,并使用简单的单层神经网络对其进行训练,并尝试找到最佳参数![](img/02af8bcf-db2f-4e62-9447-2e072986d3b3.png)。 我们将逐步详细介绍如何执行此操作。
您还可以在此处查看 Jupyter Notebook 中提供的代码,并提供说明: [https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/07.%20Meta- SGD%20and%20Reptile%20Algorithms / 7.4%20Building%20Meta-SGD%20from%20Scratch.ipynb](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/07.%20Meta-SGD%20and%20Reptile%20Algorithms/7.4%20Building%20Meta-SGD%20from%20Scratch.ipynb)
[您还可以在此处查看 Jupyter Notebook 中提供的代码,并提供说明](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/07.%20Meta-SGD%20and%20Reptile%20Algorithms/7.4%20Building%20Meta-SGD%20from%20Scratch.ipynb)
首先,我们导入`numpy`库:
......@@ -460,7 +460,7 @@ Sampling Next Batch of Tasks
假设 *y =幅度* sin(x + phase)*。 我们算法的目标是学习在给定 *x* 的情况下对 *y* 的值进行回归。 幅度的值在 0.1 到 5.0 之间随机选择,相位的值在 0 到![](img/21218cec-890b-4d1e-bca2-5f739aa42d55.png)之间随机选择。 因此,对于每个任务,我们仅采样 10 个数据点并训练网络-也就是说,对于每个任务,我们仅采样 10 个*(x,y)*对。 让我们看一下代码并详细查看它。
您还可以在此处查看 Jupyter Notebook 中提供的代码,并提供说明: [https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/07.%20Meta- SGD%20and%20Reptile%20Algorithms / 7.7%20Sine%20wave%20Regression%20Using%20Reptile.ipynb](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/07.%20Meta-SGD%20and%20Reptile%20Algorithms/7.7%20Sine%20wave%20Regression%20Using%20Reptile.ipynb)
[您还可以在此处查看 Jupyter Notebook 中提供的代码,并提供说明](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/07.%20Meta-SGD%20and%20Reptile%20Algorithms/7.7%20Sine%20wave%20Regression%20Using%20Reptile.ipynb)
首先,我们导入所有必需的库:
......@@ -777,5 +777,5 @@ Sampling Next Batch of Tasks
# 进一步阅读
* Meta-SGD: [https://arxiv.org/pdf/1707.09835.pdf](https://arxiv.org/pdf/1707.09835.pdf)
* 爬行动物: [https://arxiv.org/pdf/1803.02999.pdf](https://arxiv.org/pdf/1803.02999.pdf)
\ No newline at end of file
* [Meta-SGD](https://arxiv.org/pdf/1707.09835.pdf)
* [Reptile](https://arxiv.org/pdf/1803.02999.pdf)
\ No newline at end of file
......@@ -114,7 +114,7 @@ for i in range(num_tasks):
现在,我们将逐步详细地了解如何执行此操作。
您也可以在此处以 Jupyter 笔记本的形式查看完整代码: [https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/08.%20Gradient% 20Agreement%20As%20An%20Optimization%20Objective / 8.4%20Building%20Gradient%20Agreement%20Algorithm%20with%20MAML.ipynb](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/08.%20Gradient%20Agreement%20As%20An%20Optimization%20Objective/8.4%20Building%20Gradient%20Agreement%20Algorithm%20with%20MAML.ipynb)
[您也可以在此处以 Jupyter 笔记本的形式查看完整代码](https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/08.%20Gradient%20Agreement%20As%20An%20Optimization%20Objective/8.4%20Building%20Gradient%20Agreement%20Algorithm%20with%20MAML.ipynb)
我们导入所有必要的库:
......@@ -484,4 +484,4 @@ Sampling Next Batch of Tasks
# 进一步阅读
* 梯度一致性算法论文: [https://arxiv.org/pdf/1810.08178.pdf](https://arxiv.org/pdf/1810.08178.pdf)
\ No newline at end of file
* [梯度一致性算法论文](https://arxiv.org/pdf/1810.08178.pdf)
\ No newline at end of file
# 最新进展和后续步骤
恭喜你! 我们已经到了最后一章。 我们已经走了很长一段路。 我们从元学习基础开始,然后看到了几种一次性学习算法,例如暹罗,原型,匹配和关系网络。 后来,我们还看到了 NTM 如何存储和检索信息。 展望未来,我们看到了有趣的元学习算法,例如 MAML,Reptile 和 Meta-SGD。 我们看到了这些算法如何找到最佳的初始参数。 现在,我们将看到元学习的一些最新进展。 我们将学习如何使用与任务无关的元学习来减少元学习中的任务偏差,以及如何在模仿学习系统中使用元学习。 然后,我们将看到如何使用 CACTUs 算法在无监督的学习环境中应用 MAML。 稍后,我们将学习一种称为学习在概念空间中学习的深度元学习算法。
恭喜你! 我们已经到了最后一章。 我们已经走了很长一段路。 我们从元学习基础开始,然后看到了几种一次性学习算法,例如连体,原型,匹配和关系网络。 后来,我们还看到了 NTM 如何存储和检索信息。 展望未来,我们看到了有趣的元学习算法,例如 MAML,Reptile 和 Meta-SGD。 我们看到了这些算法如何找到最佳的初始参数。 现在,我们将看到元学习的一些最新进展。 我们将学习如何使用与任务无关的元学习来减少元学习中的任务偏差,以及如何在模仿学习系统中使用元学习。 然后,我们将看到如何使用 CACTUs 算法在无监督的学习环境中应用 MAML。 稍后,我们将学习一种称为学习在概念空间中学习的深度元学习算法。
在本章中,您将了解以下内容:
......@@ -181,7 +181,7 @@ MIL 中涉及的步骤如下:
# 学习在概念空间中学习
现在,我们将看到如何使用深度元学习在概念空间中学习学习。 首先,我们如何进行元学习? 我们在每个任务中抽样一批相关任务和一些 *k* 数据点,并训练我们的元学习者。 我们可以将深度学习的力量与元学习结合起来,而不仅仅是使用我们的原始元学习技术进行培训。 因此,当我们对一批任务以及每个任务中的一些 *k* 数据点进行采样时,我们将使用深度神经网络学习每个 *k* 数据点的表示形式,然后 对这些表示进行元学习。
现在,我们将看到如何使用深度元学习在概念空间中学习。 首先,我们如何进行元学习? 我们在每个任务中抽样一批相关任务和一些 *k* 数据点,并训练我们的元学习者。 我们可以将深度学习的力量与元学习结合起来,而不仅仅是使用我们的原始元学习技术进行培训。 因此,当我们对一批任务以及每个任务中的一些 *k* 数据点进行采样时,我们将使用深度神经网络学习每个 *k* 数据点的表示形式,然后 对这些表示进行元学习。
我们的框架包含三个组件:
......@@ -282,7 +282,7 @@ MIL 中涉及的步骤如下:
# 进一步阅读
* 与任务无关的元学习: [https://arxiv.org/pdf/1805.07722.pdf](https://arxiv.org/pdf/1805.07722.pdf)
* 元模仿学习: [http://proceedings.mlr.press/v78/finn17a/finn17a.pdf](http://proceedings.mlr.press/v78/finn17a/finn17a.pdf)
* 仙人掌: [https://arxiv.org/pdf/1810.02334.pdf](https://arxiv.org/pdf/1810.02334.pdf)
* 在概念空间中学习学习: [https://arxiv.org/pdf/1802.03596.pdf](https://arxiv.org/pdf/1802.03596.pdf)
\ No newline at end of file
* [与任务无关的元学习](https://arxiv.org/pdf/1805.07722.pdf)
* [元模仿学习](http://proceedings.mlr.press/v78/finn17a/finn17a.pdf)
* [CACTUS](https://arxiv.org/pdf/1810.02334.pdf)
* [概念空间中的元学习](https://arxiv.org/pdf/1802.03596.pdf)
\ No newline at end of file
......@@ -11,7 +11,7 @@
# 第 2 章:使用连体网络的面部和音频识别
1. 暹罗网络是神经网络的一种特殊类型,它是最简单,最常用的单次学习算法之一。 暹罗网络基本上由两个对称的神经网络组成,它们具有相同的权重和架构,并最终通过能量函数 *E* 结合在一起。
1. 连体网络是神经网络的一种特殊类型,它是最简单,最常用的单次学习算法之一。 连体网络基本上由两个对称的神经网络组成,它们具有相同的权重和架构,并最终通过能量函数 *E* 结合在一起。
2. The contrastive loss function can be expressed as follows: 
![](img/eb7b45ed-a6b9-4a3d-aff4-1cea02fba160.png)
......@@ -20,9 +20,9 @@
3. 能量函数告诉我们两个输入的相似程度。 它基本上是任何相似性度量,例如欧几里得距离和余弦相似性。
4. 暹罗网络的输入应该成对( *X <sub>1</sub>**X <sub>2</sub>* )及其二进制标记*Y∈(0,1)*,指出输入对是真实对(相同)还是非真实对(不同)。
4. 连体网络的输入应该成对( *X <sub>1</sub>**X <sub>2</sub>* )及其二进制标记*Y∈(0,1)*,指出输入对是真实对(相同)还是非真实对(不同)。
5. 暹罗网络的应用是无止境的。 它们已经堆叠了用于执行各种任务的各种体系结构,例如人类动作识别,场景更改检测和机器翻译。
5. 连体网络的应用是无止境的。 它们已经堆叠了用于执行各种任务的各种体系结构,例如人类动作识别,场景更改检测和机器翻译。
# 第三章:原型网络及其变体
......
......@@ -60,13 +60,13 @@
* Mac 版 Zipeg / iZip / UnRarX
* 适用于 Linux 的 7-Zip / PeaZip
本书的代码包也托管在 GitHub 的 [](https://github.com/PacktPublishing/Hands-On-Reinforcement-Learning-with-Python) [https://github.com/PacktPublishing/Hands-On-Reinforcement-Learning-with-Python](https://github.com/PacktPublishing/Hands-On-Reinforcement-Learning-with-Python) 上。 如果代码有更新,它将在现有的 GitHub 存储库中进行更新。
本书的代码包也托管在 [GitHub](https://github.com/PacktPublishing/Hands-On-Reinforcement-Learning-with-Python) 上。 如果代码有更新,它将在现有的 GitHub 存储库中进行更新。
我们还从 **[https://github.com/PacktPublishing/](https://github.com/PacktPublishing/)** 提供了丰富的书籍和视频目录中的其他代码包。 去看一下!
我们还从[这里](https://github.com/PacktPublishing/)提供了丰富的书籍和视频目录中的其他代码包。 去看一下!
# 下载彩色图像
我们还提供了 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。 您可以在此处下载: [http://www.packtpub.com/sites/default/files/downloads/HandsOnReinforcementLearningwithPython_ColorImages.pdf](http://www.packtpub.com/sites/default/files/downloads/Bookname_ColorImages.pdf)
我们还提供了 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。 [您可以在此处下载](http://www.packtpub.com/sites/default/files/downloads/Bookname_ColorImages.pdf)
# 使用约定
......
......@@ -203,4 +203,4 @@ RL 被广泛用于金融投资组合管理,这是将资金不断重新分配
# 进一步阅读
**RL 概述**[https://www.cs.ubc.ca/~murphyk/Bayes/pomdp.html](https://www.cs.ubc.ca/~murphyk/Bayes/pomdp.html)
\ No newline at end of file
[**RL 概述**](https://www.cs.ubc.ca/~murphyk/Bayes/pomdp.html)
\ No newline at end of file
......@@ -19,7 +19,7 @@ OpenAI 是由 Elon Musk 和 Sam Altman 创立的非营利性,开源**人工智
本书中的所有示例均使用 Anaconda 版本的 Python。 Anaconda 是 Python 的开源发行版。 它被广泛用于科学计算和处理大量数据。 它提供了一个出色的程序包管理环境。 它提供对 Windows,macOS 和 Linux 的支持。 Anaconda 随附安装了 Python 以及用于科学计算的流行软件包,例如 NumPy,SciPy 等。
要下载 Anaconda,请访问 [https://www.anaconda.com/download/](https://www.anaconda.com/download/) ,您将在此处看到用于下载用于不同平台的 Anaconda 的选项。
要下载 Anaconda,请访问[这里](https://www.anaconda.com/download/),您将在此处看到用于下载用于不同平台的 Anaconda 的选项。
如果使用 Windows 或 Mac,则可以根据计算机体系结构直接下载图形安装程序,然后使用图形安装程序进行安装。
......@@ -53,7 +53,7 @@ source activate universe
安装 Anaconda 之后,我们需要安装 Docker。 Docker 使将应用程序部署到生产变得容易。 假设您在具有 TensorFlow 和其他一些库的 localhost 中构建了一个应用程序,并且要将应用程序部署到服务器中。 您将需要在服务器上安装所有这些依赖项。 但是使用 Docker,我们可以将应用程序及其依赖项打包在一起,这称为容器,并且我们可以在服务器上运行应用程序而无需在打包的 Docker 容器中使用任何外部依赖项。 OpenAI 不支持 Windows,因此要在 Windows 中安装 OpenAI,我们需要使用 Docker。 而且,大多数 OpenAI Universe 环境都需要 Docker 来模拟环境。 现在让我们看看如何安装 Docker。
要下载 Docker,请转至 [https://docs.docker.com/](https://docs.docker.com/) ,您将在其中看到一个名为 Get Docker 的选项。 如果选择该选项,则将看到不同操作系统的选项。 如果使用 Windows 或 Mac,则可以下载 Docker 并直接使用图形安装程序进行安装。
要下载 Docker,请转至[这里](https://docs.docker.com/),您将在其中看到一个名为 Get Docker 的选项。 如果选择该选项,则将看到不同操作系统的选项。 如果使用 Windows 或 Mac,则可以下载 Docker 并直接使用图形安装程序进行安装。
如果您使用的是 Linux,请按照以下步骤操作:
......@@ -770,6 +770,6 @@ with tf.Session() as sess:
您可以进一步参考以下论文:
* **OpenAI 博客**[https://blog.openai.com](https://blog.openai.com)
* **OpenAI 环境**[https://gym.openai.com/envs/](https://gym.openai.com/envs/)
* **TensorFlow 官方网站**[https://www.tensorflow.org/](https://www.tensorflow.org/)
\ No newline at end of file
* [**OpenAI 博客**](https://blog.openai.com)
* [**OpenAI 环境**](https://gym.openai.com/envs/)
* [**TensorFlow 官方网站**](https://www.tensorflow.org/)
\ No newline at end of file
......@@ -854,4 +854,4 @@ print (policy_iteration(env))
# 进一步阅读
**MDP 哈佛讲座材料**[http://am121.seas.harvard.edu/site/wp-content/uploads/2011/03/MarkovDecisionProcesses-HillierLieberman.pdf](http://am121.seas.harvard.edu/site/wp-content/uploads/2011/03/MarkovDecisionProcesses-HillierLieberman.pdf)
\ No newline at end of file
[**MDP 哈佛讲座材料**](http://am121.seas.harvard.edu/site/wp-content/uploads/2011/03/MarkovDecisionProcesses-HillierLieberman.pdf)
\ No newline at end of file
......@@ -625,5 +625,5 @@ def epsilon_greedy_policy(state, epsilon):
请参考以下链接:
* **David Silver 的无模型预测演示**[http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/MC-TD.pdf](http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/MC-TD.pdf)
* **David Silver 的无模型控件演示文稿**[http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/control.pdf](http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/control.pdf)
\ No newline at end of file
* [**David Silver 的无模型预测演示**](http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/MC-TD.pdf)
* [**David Silver 的无模型控件演示文稿**](http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/control.pdf)
\ No newline at end of file
......@@ -551,4 +551,4 @@ Q 学习和 SARSA 对许多人来说总是很困惑。 让我们分解一下两
# 进一步阅读
**萨顿的原始 TD 论文**[https://pdfs.semanticscholar.org/9c06/865e912788a6a51470724e087853d7269195.pdf](https://pdfs.semanticscholar.org/9c06/865e912788a6a51470724e087853d7269195.pdf)
\ No newline at end of file
[**萨顿的原始 TD 论文**](https://pdfs.semanticscholar.org/9c06/865e912788a6a51470724e087853d7269195.pdf)
\ No newline at end of file
......@@ -508,6 +508,6 @@ sns.distplot(banner_selected)
您还可以参考以下链接:
* **个性化的上下文强盗**[https://www.microsoft.com/zh-CN/research/blog/contextual-bandit-breakthrough-enables-deeper-personalization/](https://www.microsoft.com/en-us/research/blog/contextual-bandit-breakthrough-enables-deeper-personalization/)
* **Netflix 如何使用情境强盗**[https://medium.com/netflix-techblog/artwork-personalization-c589f074ad76](https://medium.com/netflix-techblog/artwork-personalization-c589f074ad76)
* **使用 MAB 的协作过滤**[https://arxiv.org/pdf/1708.03058.pdf](https://arxiv.org/pdf/1708.03058.pdf)
\ No newline at end of file
* [**个性化的上下文强盗**](https://www.microsoft.com/en-us/research/blog/contextual-bandit-breakthrough-enables-deeper-personalization/)
* [**Netflix 如何使用情境强盗**](https://medium.com/netflix-techblog/artwork-personalization-c589f074ad76)
* [**使用 MAB 的协作过滤**](https://arxiv.org/pdf/1708.03058.pdf)
\ No newline at end of file
......@@ -479,7 +479,7 @@ LSTM 单元称为内存,它们负责存储信息。 但是信息必须在存
# 使用 LSTM RNN 生成歌曲歌词
现在,我们将看到如何使用 LSTM 网络生成 Zayn Malik 的歌曲歌词。 可以从此处下载数据集( [https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/07.%20Deep%20Learning%20Fundamentals/data/ZaynLyrics。 txt)](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/07.%20Deep%20Learning%20Fundamentals/data/ZaynLyrics.txt)),其中包含 Zayn 的歌词集。
现在,我们将看到如何使用 LSTM 网络生成 Zayn Malik 的歌曲歌词。 [可以从此处下载数据集](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/07.%20Deep%20Learning%20Fundamentals/data/ZaynLyrics.txt),其中包含 Zayn 的歌词集。
首先,我们将导入必要的库:
......@@ -998,7 +998,7 @@ output = tf.matmul(fc, w_out)+ b_out
yhat = tf.nn.softmax(output)
```
我们可以将损失函数定义为交叉熵损失。 我们将使用一种称为 Adam 优化器( [https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer](https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer)的新型优化器,而不是使用梯度下降优化器,来使损失函数最小化。 :
我们可以将损失函数定义为交叉熵损失。 我们将使用一种称为 [Adam 优化器](https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer)的新型优化器,而不是使用梯度下降优化器,来使损失函数最小化。 :
```py
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=output, labels=y))optimiser = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cross_entropy)
......@@ -1065,5 +1065,5 @@ with tf.Session() as sess:
深度学习是一个巨大的话题。 要探索有关深度学习和其他相关算法的更多信息,请查看以下非常有用的链接:
* **有关此 CNN 的更多信息,请访问这门很棒的斯坦福课程**[https://www.youtube.com/watch?v=NfnWJUyUJYU & list = PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC](https://www.youtube.com/watch?v=NfnWJUyUJYU&list=PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC)
* **通过此很棒的博客文章**深入研究 RNN: [http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/](http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/)
\ No newline at end of file
* [**有关此 CNN 的更多信息,请访问这门很棒的斯坦福课程**](https://www.youtube.com/watch?v=NfnWJUyUJYU&list=PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC)
* [**通过此很棒的博客文章深入研究 RNN**](http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/)
\ No newline at end of file
......@@ -92,7 +92,7 @@ DQN 的第一层是卷积网络,网络的输入将是游戏屏幕的原始帧
# 建立代理来玩 Atari 游戏
现在,我们将看到如何建立一个代理来玩任何 Atari 游戏。 您可以在此处获得 Jupyter 笔记本的完整代码及其说明( [https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/08.%20Atari%20Games %20with%20DQN / 8.8%20Building%20an%20Agent%20to%20Play%20Atari%20Games.ipynb](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/08.%20Atari%20Games%20with%20DQN/8.8%20Building%20an%20Agent%20to%20Play%20Atari%20Games.ipynb)
现在,我们将看到如何建立一个代理来玩任何 Atari 游戏。 [您可以在此处获得 Jupyter 笔记本的完整代码及其说明](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/08.%20Atari%20Games%20with%20DQN/8.8%20Building%20an%20Agent%20to%20Play%20Atari%20Games.ipynb)
首先,我们导入所有必需的库:
......@@ -106,7 +106,7 @@ import random
from datetime import datetime
```
我们可以使用此处提供的任何 Atari 游戏环境: [http://gym.openai.com/envs/#atari](http://gym.openai.com/envs/#atari)
[我们可以使用此处提供的任何 Atari 游戏环境](http://gym.openai.com/envs/#atari)
在此示例中,我们使用“吃豆人”游戏环境:
......@@ -467,6 +467,6 @@ with tf.Session() as sess:
# 进一步阅读
* **DQN 论文**[https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf](https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf)
* **双重 DQN 论文**[https://arxiv.org/pdf/1509.06461.pdf](https://arxiv.org/pdf/1509.06461.pdf)
* **决斗网络架构**[https://arxiv.org/pdf/1511.06581.pdf](https://arxiv.org/pdf/1511.06581.pdf)
\ No newline at end of file
* [**DQN 论文**](https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf)
* [**双重 DQN 论文**](https://arxiv.org/pdf/1509.06461.pdf)
* [**决斗网络架构**](https://arxiv.org/pdf/1511.06581.pdf)
\ No newline at end of file
......@@ -36,7 +36,7 @@
毁灭战士是一款非常受欢迎的第一人称射击游戏。 游戏的目标是杀死怪物。 末日是部分可观察的 MDP 的另一个示例,因为座席(玩家)的视角限制为 90 度。 该代理对其余环境一无所知。 现在,我们将看到如何使用 DRQN 来训练我们的经纪人玩《毁灭战士》。
代替 OpenAI Gym,我们将使用 ViZDoom 软件包来模拟 Doom 环境以训练我们的代理。 要了解有关 ViZDoom 软件包的更多信息,请访问其官方网站,网址为 [http://vizdoom.cs.put.edu.pl/](http://vizdoom.cs.put.edu.pl/) 。 我们可以使用以下命令简单地安装 ViZDoom:
代替 OpenAI Gym,我们将使用 ViZDoom 软件包来模拟 Doom 环境以训练我们的代理。 要了解有关 ViZDoom 软件包的更多信息,[请访问其官方网站](http://vizdoom.cs.put.edu.pl/)。 我们可以使用以下命令简单地安装 ViZDoom:
```py
pip install vizdoom
......@@ -121,7 +121,7 @@ for i in range(no_of_episodes):
# DRQN 的厄运
现在,让我们看看如何利用 DRQN 算法来训练我们的特工玩《毁灭战士》。 我们为成功杀死怪物分配正面奖励,为失去生命,自杀和失去弹药(子弹)分配负面奖励。 您可以在[中获得 Jupyter 笔记本的完整代码及其解释,网址为](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/09.%20Playing%20Doom%20Game%20using%20DRQN/9.5%20Doom%20Game%20Using%20DRQN.ipynb) [https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/09.%20Playing%20Doom% 20Game%20using%20DRQN / 9.5%20Doom%20Game%20Using%20DRQN.ipynb](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/09.%20Playing%20Doom%20Game%20using%20DRQN/9.5%20Doom%20Game%20Using%20DRQN.ipynb) 。 本节中使用的代码的信誉归于 Luthanicus([​​HTG2] https://github.com/Luthanicus/losaltoshackathon-drqn )
现在,让我们看看如何利用 DRQN 算法来训练我们的特工玩《毁灭战士》。 我们为成功杀死怪物分配正面奖励,为失去生命,自杀和失去弹药(子弹)分配负面奖励。 您可以在[这里](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/09.%20Playing%20Doom%20Game%20using%20DRQN/9.5%20Doom%20Game%20Using%20DRQN.ipynb)获得 Jupyter 笔记本的完整代码及其解释。 本节中使用的代码的权利归于 [Luthanicus](https://github.com/Luthanicus/losaltoshackathon-drqn)
首先,让我们导入所有必需的库:
......@@ -601,6 +601,6 @@ DARQN 的体系结构如下所示:
考虑以下内容,以进一步了解您的知识:
* **DRQN 论文**[https://arxiv.org/pdf/1507.06527.pdf](https://arxiv.org/pdf/1507.06527.pdf)
* **使用 DRQN 玩 FPS 游戏**[https://arxiv.org/pdf/1609.05521.pdf](https://arxiv.org/pdf/1609.05521.pdf)
* **DARQN 论文**[https://arxiv.org/pdf/1512.01693.pdf](https://arxiv.org/pdf/1512.01693.pdf)
\ No newline at end of file
* [**DRQN 论文**](https://arxiv.org/pdf/1507.06527.pdf)
* [**使用 DRQN 玩 FPS 游戏**](https://arxiv.org/pdf/1609.05521.pdf)
* [**DARQN 论文**](https://arxiv.org/pdf/1512.01693.pdf)
\ No newline at end of file
......@@ -59,11 +59,11 @@ A3C 网络风起云涌,并接管了 DQN。 除了前面提到的优点之外
# 驾驶 A3C 上山
让我们通过山车示例了解 A3C。 我们的代理人是汽车,它被放置在两座山之间。 我们代理人的目标是向右上方爬。 但是,汽车不能一口气上山。 它必须来回驱动以建立动力。 如果我们的经纪人在开车上花费更少的精力,将获得高额奖励。 本节使用的代码归功于 Stefan Boschenriedter( [https://github.com/stefanbo92/A3C-Continuous](https://github.com/stefanbo92/A3C-Continuous)。 环境如下所示:
让我们通过山车示例了解 A3C。 我们的代理人是汽车,它被放置在两座山之间。 我们代理人的目标是向右上方爬。 但是,汽车不能一口气上山。 它必须来回驱动以建立动力。 如果我们的经纪人在开车上花费更少的精力,将获得高额奖励。 本节使用的代码归功于 [Stefan Boschenriedter](https://github.com/stefanbo92/A3C-Continuous)。 环境如下所示:
![](img/00298.jpeg)
好的,让我们开始编码吧! 完整的代码可在 Jupyter 笔记本中获得,并在此处进行解释( [https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/10.%20Aysnchronous%20Advantage% 20Actor%20Critic%20Network / 10.5%20Drive%20up%20the%20Mountain%20Using%20A3C.ipynb](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/10.%20Aysnchronous%20Advantage%20Actor%20Critic%20Network/10.5%20Drive%20up%20the%20Mountain%20Using%20A3C.ipynb)
好的,让我们开始编码吧! 完整的代码可在 Jupyter 笔记本中获得,[并在此处进行解释](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/10.%20Aysnchronous%20Advantage%20Actor%20Critic%20Network/10.5%20Drive%20up%20the%20Mountain%20Using%20A3C.ipynb)
首先,让我们导入必要的库:
......@@ -460,5 +460,5 @@ tensorboard --logdir=logs --port=6007 --host=127.0.0.1
您还可以参考以下论文:
* **A3C 论文**[https://arxiv.org/pdf/1602.01783.pdf](https://arxiv.org/pdf/1602.01783.pdf)
* **视觉增强型 A3C**[http://cs231n.stanford.edu/reports/2017/pdfs/617.pdf](http://cs231n.stanford.edu/reports/2017/pdfs/617.pdf)
\ No newline at end of file
* [**A3C 论文**](https://arxiv.org/pdf/1602.01783.pdf)
* [**视觉增强型 A3C**](http://cs231n.stanford.edu/reports/2017/pdfs/617.pdf)
\ No newline at end of file
......@@ -25,7 +25,7 @@
假设我们的经纪人正在驾驶航天器,而我们的经纪人的目标是正确着陆在着陆垫上。 如果我们的特工(着陆器)从着陆点着陆,则它会失去奖励,并且如果特工崩溃或休息,情节将终止。 在环境中可用的四个离散动作是“不执行任何操作”,“向左射击引擎”,“向主机射击”和“向右引擎”。
现在,我们将看到如何训练我们的代理商以策略梯度正确降落在降落区。 本节中使用的代码值得 Gabriel( [https://github.com/gabrielgarza/openai-gym-policy-gradient](https://github.com/gabrielgarza/openai-gym-policy-gradient)
现在,我们将看到如何训练我们的代理商以策略梯度正确降落在降落区。 本节中使用的代码属于 [Gabriel](https://github.com/gabrielgarza/openai-gym-policy-gradient)
![](img/00308.jpeg)
......@@ -40,7 +40,7 @@ import numpy as np
import time
```
然后,我们定义`PolicyGradient`类,该类实现了策略梯度算法。 让我们分解类并分别查看每个函数。 您可以将整个程序看作 Jupyter 笔记本( [https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/11.%20Policy%20Gradients%20and% 20Optimization / 11.2%20Lunar%20Lander%20Using%20Policy%20Gradients.ipynb](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/11.%20Policy%20Gradients%20and%20Optimization/11.2%20Lunar%20Lander%20Using%20Policy%20Gradients.ipynb)
然后,我们定义`PolicyGradient`类,该类实现了策略梯度算法。 让我们分解类并分别查看每个函数。 [您可以将整个程序看作 Jupyter 笔记本](https://github.com/sudharsan13296/Hands-On-Reinforcement-Learning-With-Python/blob/master/11.%20Policy%20Gradients%20and%20Optimization/11.2%20Lunar%20Lander%20Using%20Policy%20Gradients.ipynb)
```py
class PolicyGradient:
......@@ -251,7 +251,7 @@ class PolicyGradient:
# 摆动钟摆
我们有一个从随机位置开始的摆锤,我们的探员的目标是向上摆动摆锤使其保持直立。 我们将在这里看到如何使用 DDPG。 wshuail( [https://github.com/wangshuailong/reinforcement_learning_with_Tensorflow/tree/master/DDPG](https://github.com/wangshuailong/reinforcement_learning_with_Tensorflow/tree/master/DDPG)提供了本节中使用的代码。
我们有一个从随机位置开始的摆锤,我们的探员的目标是向上摆动摆锤使其保持直立。 我们将在这里看到如何使用 DDPG。 [wshuail](https://github.com/wangshuailong/reinforcement_learning_with_Tensorflow/tree/master/DDPG) 提供了本节中使用的代码。
首先,让我们导入必要的库:
......@@ -533,7 +533,7 @@ for i in range(no_of_episodes):
在 TRPO 中,我们迭代地改进了该策略,并施加了一个约束,以使旧策略和新策略之间的 **Kullback-Leibler****KL** )差异要小于某个常数。 ![](img/00326.jpeg)。 该约束称为信任区域约束。
那么什么是 KL 分歧? KL 散度告诉我们两个概率分布如何彼此不同。 由于我们的政策是针对行动的概率分布,因此 KL 差异告诉我们新政策与旧政策有多远。 为什么我们必须使旧策略和新策略之间的距离保持小于恒定值![](img/00327.jpeg)? 因为我们不希望我们的新政策与旧政策脱节。 因此,我们施加了约束以使新策略接近旧策略。 同样,为什么我们必须保持旧政策呢? 当新政策与旧政策相距甚远时,它将影响代理的学习绩效,并导致完全不同的学习行为。 简而言之,在 TRPO 中,我们朝着改善政策的方向迈出了一步,即使报酬最大化,但我们还应确保满足信任区域约束。 它使用共轭梯度下降( [http://www.idi.ntnu.no/~elster/tdt24/tdt24-f09/cg.pdf](http://www.idi.ntnu.no/~elster/tdt24/tdt24-f09/cg.pdf)优化网络参数![](img/00328.jpeg),同时满足约束条件。 该算法保证了单调策略的改进,并且在各种连续环境中也取得了出色的效果。
那么什么是 KL 分歧? KL 散度告诉我们两个概率分布如何彼此不同。 由于我们的政策是针对行动的概率分布,因此 KL 差异告诉我们新政策与旧政策有多远。 为什么我们必须使旧策略和新策略之间的距离保持小于恒定值![](img/00327.jpeg)? 因为我们不希望我们的新政策与旧政策脱节。 因此,我们施加了约束以使新策略接近旧策略。 同样,为什么我们必须保持旧政策呢? 当新政策与旧政策相距甚远时,它将影响代理的学习绩效,并导致完全不同的学习行为。 简而言之,在 TRPO 中,我们朝着改善政策的方向迈出了一步,即使报酬最大化,但我们还应确保满足信任区域约束。 [它使用共轭梯度下降](http://www.idi.ntnu.no/~elster/tdt24/tdt24-f09/cg.pdf)优化网络参数![](img/00328.jpeg),同时满足约束条件。 该算法保证了单调策略的改进,并且在各种连续环境中也取得了出色的效果。
现在,我们将了解 TRPO 的数学原理。 如果您对数学不感兴趣,可以跳过本节。
......@@ -683,6 +683,6 @@ Kakade 和 Langford 从(1)得出以下方程式:
您可以进一步参考以下论文:
* **DDPG 论文**[https://arxiv.org/pdf/1509.02971.pdf](https://github.com/wangshuailong/reinforcement_learning_with_Tensorflow/tree/master/DDPG)
* **TRPO 纸**[https://arxiv.org/pdf/1502.05477.pdf](https://arxiv.org/pdf/1502.05477.pdf)
* **PPO 论文**[https://arxiv.org/pdf/1707.06347.pdf](https://arxiv.org/pdf/1707.06347.pdf)
\ No newline at end of file
* [**DDPG 论文**](https://github.com/wangshuailong/reinforcement_learning_with_Tensorflow/tree/master/DDPG)
* [**TRPO 论文**](https://arxiv.org/pdf/1502.05477.pdf)
* [**PPO 论文**](https://arxiv.org/pdf/1707.06347.pdf)
\ No newline at end of file
......@@ -12,7 +12,7 @@
# 环境包装器功能
本章使用的代码归功于 Giacomo Spigler 的 GitHub 存储库( [https://github.com/spiglerg/DQN_DDQN_Dueling_and_DDPG_Tensorflow](https://github.com/spiglerg/DQN_DDQN_Dueling_and_DDPG_Tensorflow)。 在本章中,每一行都对代码进行了说明。 有关完整的结构化代码,请查看上面的 GitHub 存储库。
本章使用的代码归功于 Giacomo Spigler 的 [GitHub 存储库](https://github.com/spiglerg/DQN_DDQN_Dueling_and_DDPG_Tensorflow)。 在本章中,每一行都对代码进行了说明。 有关完整的结构化代码,请查看上面的 GitHub 存储库。
首先,我们导入所有必需的库:
......@@ -754,5 +754,5 @@ env.monitor.close()
以下链接将帮助您扩展知识:
* **使用 DQN 的飞扬的小鸟**[https://github.com/yenchenlin/DeepLearningFlappyBird](https://github.com/yenchenlin/DeepLearningFlappyBird)
* **使用 DQN 的超级马里奥**[https://github.com/JSDanielPark/tensorflow_dqn_supermario](https://github.com/JSDanielPark/tensorflow_dqn_supermario)
\ No newline at end of file
* [**使用 DQN 的飞扬的小鸟**](https://github.com/yenchenlin/DeepLearningFlappyBird)
* [**使用 DQN 的超级马里奥**](https://github.com/JSDanielPark/tensorflow_dqn_supermario)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册