提交 ff35718f 编写于 作者: W wizardforcel

2021-01-18 14:49:19

上级 6c697e8f
......@@ -16,7 +16,7 @@
第 2 章,“基于度量的方法”通过将核心保持为基本的 k 最近邻,探索了使用不同形式的嵌入和评估度量的方法。
第 3 章,“基于模型的方法”探索了两种架构,其内部架构有助于训练 k-shot 学习模型。
第 3 章,“基于模型的方法”探索了两种架构,其内部架构有助于训练 K 次学习模型。
第 4 章,“基于优化的方法”探索了各种形式的优化算法,即使数据量很少,它们也有助于提高准确率。
......@@ -29,7 +29,8 @@
本书需要具备基本的机器学习和深度学习概念知识以及基础数学知识,以及对 Python 编程的一些了解。
| **本书涵盖的软件/硬件** | **操作系统要求** |
| 软体:Jupyter 笔记本,Anaconda 语言和库:Python 3.X 及更高版本,PyTorch 1.4,Scikit 学习。 | 任何操作系统(最好是 Linux 环境)。 |
| --- | --- |
| 软件:Jupyter 笔记本,Anaconda 语言和库:Python 3.X 及更高版本,PyTorch 1.4,Scikit 学习。 | 任何操作系统(最好是 Linux 环境)。 |
| 硬件:无。 但是如果您想提高训练速度。 您可以在 GPU 硬件上进行少量修改即可使用相同的代码。 | |
**如果您使用的是本书的数字版本,建议您自己键入代码或通过 GitHub 存储库访问代码(下一节提供链接)。 这样做将帮助您避免任何与代码复制和粘贴有关的潜在错误。**
......@@ -47,9 +48,9 @@
下载文件后,请确保使用以下最新版本解压缩或解压缩文件夹:
* Windows 的 WinRAR / 7-Zip
* Mac 版 Zipeg / iZip / UnRarX
* 适用于 Linux 的 7-Zip / PeaZip
* Windows 的 WinRAR/7-Zip
* Mac 版 Zipeg/iZip/UnRarX
* 适用于 Linux 的 7-Zip/PeaZip
[本书的代码包也托管在 GitHub 上](https://github.com/PacktPublishing/Hands-On-One-shot-Learning-with-Python)。 如果代码有更新,它将在现有的 GitHub 存储库中进行更新。
......
......@@ -55,7 +55,7 @@ Logistic 回归是**判别式分类器**的一种形式,在判别式分类器
![](img/2ea3be34-ced7-4c60-a302-98d1f0c35e3e.jpeg)
因此,例如,如果我们查看花朵与汽车等类别,则初始层的功能就足够了。 但是,如果我们有诸如汽车类型之类的类别,则需要更深层次的模型,因为我们需要提取更复杂的特征,这需要更大的数据集。 问题是,什么决定了模型学习的特征或参数的类型,是否有可能在初始层学习这些重要参数? 在下一部分中,我们将探索 Siamese 网络,它是一种神经网络架构,可以通过更改损失函数及其架构设计来学习前几层的复杂功能。
因此,例如,如果我们查看花朵与汽车等类别,则初始层的功能就足够了。 但是,如果我们有诸如汽车类型之类的类别,则需要更深层次的模型,因为我们需要提取更复杂的特征,这需要更大的数据集。 问题是,什么决定了模型学习的特征或参数的类型,是否有可能在初始层学习这些重要参数? 在下一部分中,我们将探索连体网络,它是一种神经网络架构,可以通过更改损失函数及其架构设计来学习前几层的复杂功能。
# 了解连体网络
......@@ -63,7 +63,7 @@ Logistic 回归是**判别式分类器**的一种形式,在判别式分类器
机器学习算法的良好特征的提取在确定模型效率方面起着至关重要的作用。 在各种情况下,当可用数据有限时,事实证明它要么计算量大,要么困难。
如下图所示,我们的目标是训练网络以了解两个图像或声音是否相同。 假设第一个图像中有两个足球; 即使背景不同,两者都是足球,所以被认为是相同的。 单词“ cow”的声音也是如此。 在图像和声音不同的地方,例如鳄鱼和足球,它们被标记为不同的:
如下图所示,我们的目标是训练网络以了解两个图像或声音是否相同。 假设第一个图像中有两个足球; 即使背景不同,两者都是足球,所以被认为是相同的。 单词`cow`的声音也是如此。 在图像和声音不同的地方,例如鳄鱼和足球,它们被标记为不同的:
![](img/0d94a582-9d00-4f5b-a28f-7e4df967ea31.png)
......@@ -166,7 +166,7 @@ Logistic 回归是**判别式分类器**的一种形式,在判别式分类器
匹配网络的设计有两个方面:
* **建模级别**:在建模级别,他们提出了匹配网络,该网络利用注意力和记忆力方面的进步实现快速有效的学习。
* **训练过程**:在训练级别上,他们有一个条件-训练和测试集的分布必须相同。 例如,这可能意味着每个类显示一些示例,并将任务从 minibatch 切换到 minibatch,类似于在展示新任务的一些示例时如何对其进行测试。
* **训练过程**:在训练级别上,他们有一个条件-训练和测试集的分布必须相同。 例如,这可能意味着每个类显示一些示例,并将任务从小批量切换到小批量,类似于在展示新任务的一些示例时如何对其进行测试。
匹配网络结合了参数模型和非参数模型的最佳特性,也被称为差分最近邻居。
......@@ -239,7 +239,7 @@ VGG16 和 Inception Net 是深度学习架构,它们在 ImageNet 数据集上
![](img/d8c095d5-729c-49ac-8834-ef3b2c1f861e.png)
这里,`K`是展开步骤的数量,`embeddings(x_hat)`是通过 VGG16 / Inception 网络获得的测试图像嵌入; `g(S)`是将测试图像嵌入带到同一空间的样本集。
这里,`K`是展开步骤的数量,`embeddings(x_hat)`是通过 VGG16/Inception 网络获得的测试图像嵌入; `g(S)`是将测试图像嵌入带到同一空间的样本集。
下图说明了匹配的网络架构:
......@@ -247,9 +247,9 @@ VGG16 和 Inception Net 是深度学习架构,它们在 ImageNet 数据集上
匹配的网络架构解决了通过设置框架在训练模型时复制测试条件的一次学习问题,如*训练过程*部分中所述。 匹配网络的架构包含许多子部分。 为了简化和更清楚地了解它,我们将从左到右进行每个过程:
1. 作为预处理数据的一部分,将创建`k`示例的支持集 S 作为`(x[i], y[i]), i = 1 ... k`
1. 作为预处理数据的一部分,将创建`k`示例的支持集`S`作为`(x[i], y[i]), i = 1 ... k`
2. 获取支持集后,它会通过标准特征提取层(`g`),例如 VGG 或 Inception。
3. 在提取支持集(S)的嵌入(`g`层的输出)之后,将它们放入双向 LSTM 架构中。 这有助于模型学习支持集中存在的标签的概率分布。
3. 在提取支持集(`S`)的嵌入(`g`层的输出)之后,将它们放入双向 LSTM 架构中。 这有助于模型学习支持集中存在的标签的概率分布。
4. 与训练集类似,查询图像(即测试图像)的全上下文嵌入提取也经历了组合的双向 LSTM 架构,同时从`g(x[i)`获得了贡献,从而 映射到相同的嵌入空间。
5. 从这两种架构获得输出后,这些输出将通过 softmax 层(也称为注意内核步骤`a(h[k-1], g(x[i]))`)传递。
......@@ -575,9 +575,9 @@ Omniglot 数据集旨在开发更多类似于人类的学习算法。 它包含
我们的匹配网络架构实现包括以下五个重要部分(有关更多详细信息,您可以参考“建模级别-匹配网络架构”部分中的匹配网络架构图):
* 嵌入提取器`g`
* 完全上下文嵌入和双向 LSTM`f`
* 余弦相似距离函数 c
* 注意模型,softmax(c)
* 完全上下文嵌入和双向 LSTM `f`
* 余弦相似距离函数`c`
* 注意模型,`softmax(c)`
* 损失函数,交叉熵损失
现在,我们将遍历匹配网络的每个部分并实施它:
......@@ -1058,7 +1058,7 @@ plot_loss(train_loss,val_loss)
![](img/97d99dae-968d-45c3-9d2f-13cf0b663c2b.png)
在本节中,我们探索了使用 MNIST 数据集的连体网络的实现以及使用 Omniglot 数据集的匹配网络架构。 在 Siamese 网络编码练习中,我们创建了一个小的卷积层,并由一个全连接层姐妹架构进行了扩展。 训练模型后,我们还绘制了模型获得的二维嵌入图,并观察了某些数字如何聚类在一起。 同样,在匹配网络编码练习中,我们为匹配网络的每个模块实现了小型架构,例如嵌入提取器,注意力模型和完全上下文嵌入。 我们还观察到,仅用 100 个时期,我们就可以达到约 86% 的精度,并绘制了匹配网络架构的精度和损耗图。
在本节中,我们探索了使用 MNIST 数据集的连体网络的实现以及使用 Omniglot 数据集的匹配网络架构。 在连体网络编码练习中,我们创建了一个小的卷积层,并由一个全连接层姐妹架构进行了扩展。 训练模型后,我们还绘制了模型获得的二维嵌入图,并观察了某些数字如何聚类在一起。 同样,在匹配网络编码练习中,我们为匹配网络的每个模块实现了小型架构,例如嵌入提取器,注意力模型和完全上下文嵌入。 我们还观察到,仅用 100 个时期,我们就可以达到约 86% 的精度,并绘制了匹配网络架构的精度和损耗图。
您可能还观察到某些模型是从头开始训练的-我们可能已经使用了迁移学习架构,或者增加了 LSTM 架构的隐藏大小,或者也许被认为是加权的交叉熵损失函数。 总是有实验和改进的空间。 如果您想进一步尝试使用该模型,建议您访问本书的 GitHub 页面。
......
......@@ -126,16 +126,16 @@ BPL 是一种高度直观的模型,可以在贝叶斯框架下使用简单的
# 判别式 k 次学习
k-shot 学习的一种非常常见的方法是训练具有相关任务的大型模型,而我们为此拥有大型数据集。 然后,通过 k 镜头特定任务对该模型进行微调。 因此,来自大型数据集的知识被*提炼为*到模型中,这仅从几个示例中增加了对新相关任务的学习。 2003 年,Bakker 和 Heskes 提出了一种用于 k-shot 学习的概率模型,其中所有任务共享一个公共特征提取器,但具有各自的线性分类器,其中仅包含几个特定于任务的参数。
K 次学习的一种非常常见的方法是训练具有相关任务的大型模型,而我们为此拥有大型数据集。 然后,通过 k 镜头特定任务对该模型进行微调。 因此,来自大型数据集的知识被*提炼为*到模型中,这仅从几个示例中增加了对新相关任务的学习。 2003 年,Bakker 和 Heskes 提出了一种用于 K 次学习的概率模型,其中所有任务共享一个公共特征提取器,但具有各自的线性分类器,其中仅包含几个特定于任务的参数。
这里讨论的 k-shot 学习的概率方法与 Bakker 和 Heskes 引入的方法非常相似。 该方法通过从很少的数据中学习概率模型来解决分类任务(针对图像)。 这个想法是使用一个强大的神经网络,该网络从大量监督数据中学习可靠的功能,并将其与概率模型结合起来。 神经网络最后一层的权重充当以贝叶斯方式规范化 k-shot 子模型权重的数据。
这里讨论的 K 次学习的概率方法与 Bakker 和 Heskes 引入的方法非常相似。 该方法通过从很少的数据中学习概率模型来解决分类任务(针对图像)。 这个想法是使用一个强大的神经网络,该网络从大量监督数据中学习可靠的功能,并将其与概率模型结合起来。 神经网络最后一层的权重充当以贝叶斯方式规范化 K 次子模型权重的数据。
学习框架包括四个阶段:
* 表征学习
* 概念学习
* K 次学习
* K-shot 测试
* K测试
下图显示了具有四个阶段的框架。 以下各节将对它们进行更正式的讨论:
......@@ -149,9 +149,9 @@ k-shot 学习的一种非常常见的方法是训练具有相关任务的大型
# 权重的概率模型
假设由于最大数据集 <sub>![](img/403250cc-771e-4aee-a332-d513338fbc0e.png)</sub> 而在第一阶段获知的 softmax 权重 <sub>![](img/daa1d70f-57d4-454b-a485-a90bcffda0f7.png)</sub> 的不确定性很小。 将此近似值与上图中的图形模型结构结合起来,我们可以摆脱原始数据集 <sub>![](img/68914ee7-4e63-4366-829d-00766394cd7a.png)</sub> ,并使用 <sub>![](img/78fc4afd-1c3e-4ddc-a0d3-b0c3204109fc.png)</sub> 的 MAP 估算值( <sub>![](img/9eb067e3-a492-42d9-ad39-01cc56e6c75e.png)</sub> )处于概念学习和 k-shot 学习阶段。 完整的概率模型遵循以下步骤:
假设由于最大数据集 <sub>![](img/403250cc-771e-4aee-a332-d513338fbc0e.png)</sub> 而在第一阶段获知的 softmax 权重 <sub>![](img/daa1d70f-57d4-454b-a485-a90bcffda0f7.png)</sub> 的不确定性很小。 将此近似值与上图中的图形模型结构结合起来,我们可以摆脱原始数据集 <sub>![](img/68914ee7-4e63-4366-829d-00766394cd7a.png)</sub> ,并使用 <sub>![](img/78fc4afd-1c3e-4ddc-a0d3-b0c3204109fc.png)</sub> 的 MAP 估算值( <sub>![](img/9eb067e3-a492-42d9-ad39-01cc56e6c75e.png)</sub> )处于概念学习和 K 次学习阶段。 完整的概率模型遵循以下步骤:
1. k-shot 学习过程将信息合并到两个数据集 <sub>![](img/5bc40cb8-9d4b-48dd-a0b6-ec3398c621b5.png)</sub><sub>![](img/e7a90ae4-002f-42a9-8f17-5a5eee3be91b.png)</sub> 中,以在 <sub>![](img/bbb34fd1-52d7-4366-abe5-16af10f325df.png)</sub> 上生成后验分布:
1. K 次学习过程将信息合并到两个数据集 <sub>![](img/5bc40cb8-9d4b-48dd-a0b6-ec3398c621b5.png)</sub><sub>![](img/e7a90ae4-002f-42a9-8f17-5a5eee3be91b.png)</sub> 中,以在 <sub>![](img/bbb34fd1-52d7-4366-abe5-16af10f325df.png)</sub> 上生成后验分布:
![](img/3f0ac346-6f71-413c-9364-4da122454208.png)
......@@ -196,7 +196,7 @@ k 射击学习(等式 2)期间新权重![](img/211df3d3-5161-4ea1-9817-744ff
# 每个阶段的计算和近似
在讨论了先前模型的机制之后,以下小节总结了判别式 k-shot 模型的四个阶段中的所有计算和近似。
在讨论了先前模型的机制之后,以下小节总结了判别式 K 次模型的四个阶段中的所有计算和近似。
# 第一阶段–表征​​学习
......@@ -210,7 +210,7 @@ k 射击学习(等式 2)期间新权重![](img/211df3d3-5161-4ea1-9817-744ff
在 softmax 权重![](img/95e5adea-fdbb-436c-88f6-f09289f49929.png)<sub>,![](img/61d62897-a8a3-40e0-921a-874ff6675301.png)</sub>上的后缀是难以处理的。 通过使用 MAP 估计 <sub>![](img/753955cd-a77f-44a0-9416-1c544281ad1f.png)</sub> 或通过采样 <sub>![](img/8d7be54d-e3d8-433a-b254-f77d0ab6bc06.png)</sub> 可以近似得出。 必须注意, <sub>![](img/56b110e9-b61a-43f4-bb35-e01064a4f8bf.png)</sub> 是针对共轭模型的分析。 但是,如果在阶段 2 中根据 MAP 估计来估计 <sub>![](img/8b45bb65-bd49-4e47-aab4-7b7202c19589.png)</sub> ,则如等式 4 中所述使用 <sub>![](img/9cbd85bb-2d4e-4eea-9724-09693a33bce5.png)</sub>
# 阶段 4 – k-shot 测试
# 阶段 4 – K 次测试
k 镜头测试时间 <sub>![](img/c3734ba9-5a51-47ff-84f2-54c038662868.png)</sub> 的推论是难以理解的,因此此处使用近似值。 如果从阶段 3 开始使用 <sub>![](img/8ad46a3a-039b-4f21-9049-c640cc90b96b.png)</sub><sub>![](img/e631a1e5-efaa-41e0-b3af-d080d5df4b7a.png)</sub> )的 MAP 估计值,则 <sub>![](img/52f71d1d-16a5-446e-9276-d0e2faedd10c.png)</sub> 。 如果在阶段 3 中重新采样,则使用 <sub>![](img/858ad399-04bb-4869-aa0e-88ba105b2300.png)</sub>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册