提交 aad850df 编写于 作者: W wizardforcel

2021-01-16 12:44:32

上级 ec30b8da
......@@ -26,7 +26,7 @@
“第 5 章”,“样式迁移”,演示了执行样式转移任务的过程,其中将两个图像作为输入来创建新图像,并使用来自两个输入图像的元素。
“第 6 章”“使用 RNN 分析数据序列”,更详细地探讨了循环神经网络。 在本章中,使用顺序数据作为输入解决了三个流行的数据问题。
“第 6 章”“使用 RNN 分析数据序列”,更详细地探讨了循环神经网络。 在本章中,使用顺序数据作为输入解决了三个流行的数据问题。
## 约定
......
......@@ -296,7 +296,7 @@ final_data.to_csv("dccc_prepared.csv", index=False)
## 用于分类任务的 ANN
如“活动 2.02”中所示,从“第 2 章”“神经网络的构建模块”开发用于回归问题的深度学习解决方案,为回归任务而构建的神经网络使用输出作为连续值,这就是为什么在输出层不具有激活函数且仅具有一个输出节点(实际值)的原因,就像在构建用于预测房价的模型的情况下一样 根据房屋和邻里的特征
如“活动 2.02”中所示,从“第 2 章”“神经网络的构建模块”开发用于回归问题的深度学习解决方案,为回归任务而构建的神经网络使用输出作为连续值,这就是为什么在输出层不具有激活函数且仅具有一个输出节点(实际值)的原因,就像在构建用于预测房价的模型的情况下一样 根据房屋和邻里的特征
鉴于此,要测量与此类模型相关的性能,您应该计算地面真实值和预测值之间的差,例如,计算 125.3(预测)与 126.38(地面真实值)之间的距离 。 如前所述,有许多方法可以测量此差异,例如**均方误差****MSE**),或另一种变化是**均方根误差****RMSE**),是最常用的指标。
......
......@@ -85,7 +85,7 @@ VGG-19 是由 19 层组成的 CNN。 它使用 ImageNet 数据库中的数百万
注意
为了提醒您如何定义图像的变换,请重新访问“第 4 章”“卷积神经网络”。
为了提醒您如何定义图像的变换,请重新访问“第 4 章”“卷积神经网络”。
`unsqueeze()`函数用于根据将图像馈送到 VGG-19 模型的要求向图像添加额外的尺寸。
......
......@@ -80,7 +80,7 @@
注意
请记住,RNN 的一般结构可能会有所变化,具体取决于当前的问题。 例如,它们可以是一对多类型,也可以是多对一类型,正如我们在“第 2 章”“神经网络构建模块”中提到的那样。
请记住,RNN 的一般结构可能会有所变化,具体取决于当前的问题。 例如,它们可以是一对多类型,也可以是多对一类型,正如我们在“第 2 章”“神经网络构建模块”中提到的那样。
要了解 RNN 的概念,了解 RNN 与传统神经网络之间的区别非常重要。 传统的神经网络通常被称为前馈神经网络,因为信息仅沿一个方向移动(即,从输入到输出),而没有两次通过节点执行预测。 这些网络对过去所馈送的内容没有任何记忆,这就是为什么它们不善于预测序列中接下来将发生什么。
......
......@@ -14,15 +14,15 @@
第 1 章,“一次学习简介”告诉我们什么是单次学习及其工作原理。 它还告诉我们有关人脑的工作原理以及它如何转换为机器学习。
第 2 章“基于度量的方法”通过将核心保持为基本的 k 最近邻,探索了使用不同形式的嵌入和评估度量的方法。
第 2 章“基于度量的方法”通过将核心保持为基本的 k 最近邻,探索了使用不同形式的嵌入和评估度量的方法。
第 3 章“基于模型的方法”探索了两种架构,其内部架构有助于训练 k-shot 学习模型。
第 3 章“基于模型的方法”探索了两种架构,其内部架构有助于训练 k-shot 学习模型。
“基于优化的方法”探索了各种形式的优化算法,即使数据量很少,它们也有助于提高准确性。
第 4 章,“基于优化的方法”探索了各种形式的优化算法,即使数据量很少,它们也有助于提高准确性。
“基于生成模型的方法”探索了一种用概率模型表示对象类别的贝叶斯学习框架的开发。
第 5 章,“基于生成模型的方法”探索了一种用概率模型表示对象类别的贝叶斯学习框架的开发。
“结论和其他方法”仔细研究了架构,指标和算法的某些方面,以了解我们如何确定方法是否接近人脑的能力。
第 6 章,“结论和其他方法”仔细研究了架构,指标和算法的某些方面,以了解我们如何确定方法是否接近人脑的能力。
# 充分利用这本书
......
......@@ -224,7 +224,7 @@ Logistic 回归是**判别式分类器**的一种形式,在判别式分类器
在此,![](img/b4a28f36-a520-4491-b236-928889ca8b83.png)是训练集和测试数据点的嵌入之间的余弦相似度函数。
现在,出现了关于如何从测试集和训练集中提取嵌入的问题。 任何形式的神经网络都可以工作。 对于图像,著名的 VGG16 或 Inception Net 将通过使用移学习为测试图像和训练图像提供适当的嵌入; 本质上,这是过去大多数基于度量的方法所做的,但是无法获得人类水平的认知结果。
现在,出现了关于如何从测试集和训练集中提取嵌入的问题。 任何形式的神经网络都可以工作。 对于图像,著名的 VGG16 或 Inception Net 将通过使用移学习为测试图像和训练图像提供适当的嵌入; 本质上,这是过去大多数基于度量的方法所做的,但是无法获得人类水平的认知结果。
VGG16 和 Inception Net 是深度学习架构,它们在 ImageNet 数据集上提供了最新的结果。 它们通常用于任何图像的初始特征提取,因为这将为我们的架构适当地初始化训练过程。
......@@ -1061,7 +1061,7 @@ plot_loss(train_loss,val_loss)
在本节中,我们探索了使用 MNIST 数据集的连体网络的实现以及使用 Omniglot 数据集的匹配网络架构。 在 Siamese 网络编码练习中,我们创建了一个小的卷积层,并由一个全连接层姐妹架构进行了扩展。 训练模型后,我们还绘制了模型获得的二维嵌入图,并观察了某些数字如何聚类在一起。 同样,在匹配网络编码练习中,我们为匹配网络的每个模块实现了小型架构,例如嵌入提取器,注意力模型和完全上下文嵌入。 我们还观察到,仅用 100 个时期,我们就可以达到约 86% 的精度,并绘制了匹配网络架构的精度和损耗图。
您可能还观察到某些模型是从头开始训练的-我们可能已经使用了移学习架构,或者增加了 LSTM 架构的隐藏大小,或者也许被认为是加权的交叉熵损失函数。 总是有实验和改进的空间。 如果您想进一步尝试使用该模型,建议您访问本书的 GitHub 页面。
您可能还观察到某些模型是从头开始训练的-我们可能已经使用了移学习架构,或者增加了 LSTM 架构的隐藏大小,或者也许被认为是加权的交叉熵损失函数。 总是有实验和改进的空间。 如果您想进一步尝试使用该模型,建议您访问本书的 GitHub 页面。
# 概要
......
......@@ -23,7 +23,7 @@
当给出有限数量的数据时,梯度下降算法无法优化神经网络的主要原因有两个:
* 对于每个新任务,神经网络必须从其参数的随机初始化开始,这会导致后期收敛。 移学习已通过使用预训练的网络来缓解此问题,但由于数据应具有相似的域而受到限制。
* 对于每个新任务,神经网络必须从其参数的随机初始化开始,这会导致后期收敛。 移学习已通过使用预训练的网络来缓解此问题,但由于数据应具有相似的域而受到限制。
* 即使是梯度下降的权重更新步骤方法(例如 AdaGrad,Adam,RMS 等)的变体也无法在较少的时期内表现良好。 这些算法不能保证收敛,特别是在用于非凸优化时。
真正有用的是学习一些可以在所有域中使用的通用初始化,这是初始化的一个好地方。 梯度下降算法的关键思想是基于下一步的方向,该方向是根据概率分布假设选择的。 因此,如果我们能够以某种方式完全近似概率分布,则仅需几个步骤就可以优化网络。 这是一次/几次学习基于优化的算法的基本思想。
......@@ -163,13 +163,13 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
* 使用单元格的基本学习器的损失( <sub>![](img/d1aa0375-2232-46e1-840f-f213a4df4301.png)</sub> )及其梯度( <sub>![](img/a74a946f-2e63-419e-a071-52a6583c1b03.png)</sub> ),更新单元格状态( <sub>![](img/4aeee18a-9066-46f8-aec9-3db61801cbf1.png)</sub> ) 状态方程。
* 将基本学习器(分类模型)参数更新为![](img/f4cec93e-d6dd-4b3e-a207-339dcb81365c.png)(请参阅 LSTM 元学习器的“架构”部分)。
结束 *T-* 步骤循环。
结束`T`步骤循环。
* 现在,从 <sub>![](img/282a821c-7838-44d3-8f27-6f005e6ce9a3.png)</sub> 中随机采样输入输出对 <sub>![](img/1f1b9829-2e28-4cd8-a7c1-c8d3f4e68943.png)</sub>
* 使用 <sub>![](img/71c38e54-fe54-4ff4-965a-2dfc17c028ce.png)</sub> 计算基础学习器(分类模型)的损失。
* 使用 <sub>![](img/1c0b9014-4f36-4cb4-81df-076efdf752ea.png)</sub> (请参阅 LSTM 元学习器*架构*部分)更新元学习器(LSTM 单元)参数( <sub>![](img/0a9e3c82-d840-4d57-85fd-8d421048a655.png)</sub> )。
* 使用 <sub>![](img/1c0b9014-4f36-4cb4-81df-076efdf752ea.png)</sub> (请参阅 LSTM 元学习器“架构”部分)更新元学习器(LSTM 单元)参数( <sub>![](img/0a9e3c82-d840-4d57-85fd-8d421048a655.png)</sub> )。
结束 *n-* 步骤循环。
结束`n`步骤循环。
简而言之,在迭代`T`步骤的同时,基本学习器参数也会更新。 在`T`步骤之后,最终的基本学习器参数将用于评估测试集并更新元学习器参数。 有关该算法的图形表示,请参考以下架构图:
......@@ -422,7 +422,7 @@ n_inner_loop = 5
alpha = 3e-2
```
5. 实现优化算法。 如*域自适应元学习*部分所述,这种方法只能从一个人的视频中学习新技能。 为此,它首先使用人类演示和远程演示来训练元网络,以在元训练阶段建立强大而丰富的先于任务:
5. 实现优化算法。 如“域自适应元学习”部分所述,这种方法只能从一个人的视频中学习新技能。 为此,它首先使用人类演示和远程演示来训练元网络,以在元训练阶段建立强大而丰富的先于任务:
```py
inner_loop_loss=[]
......@@ -465,7 +465,7 @@ with tqdm(total=100000, file=sys.stdout) as pbar:
在此阶段,机器人(`meta_net`)学习如何使用数据向人类学习。 在元训练阶段之后,机器人可以通过将其学习到的先验知识与执行新技能的人员的一个视频相结合来获得新技能。 此方法包括两个阶段:
* 在元训练阶段,目标是使用人类和机器人的演示数据获取先验政策( *phi*
* 在元训练阶段,目标是使用人类和机器人的演示数据获取先验政策(`φ`
* 使用学到的知识,然后快速学习如何仅用几个数据点来模仿新任务
一旦运行了上面的代码,您将获得以下输出:
......
# 基于生成建模的方法
当人们对看不见的数据进行推断时,他们会利用有关他们已经看到,听到,触摸或经历过的相关事件的强大先验知识(或归纳偏见)。 例如,与狗一起长大的婴儿可能第一次见到猫,并立即推断出它与家犬的宠物般的性情相似。 当然,猫和狗作为物种和个体是千差万别的。 但是,公平地说,猫比狗更像狗,而不是孩子经历的其他随机事物(例如食物)。 与机器学习模型相反,人类不需要成千上万的猫实例就可以从头开始学习*,只要他们已经学会了识别狗就可以识别*。 人脑具有*学习以学习*的固有能力,这与机器学习语言中的**转移学习****多任务学习**有关。 此功能通过利用从相关任务中学到的知识来加速新概念的学习。
当人们对看不见的数据进行推断时,他们会利用有关他们已经看到,听到,触摸或经历过的相关事件的强大先验知识(或归纳偏见)。 例如,与狗一起长大的婴儿可能第一次见到猫,并立即推断出它与家犬的宠物般的性情相似。 当然,猫和狗作为物种和个体是千差万别的。 但是,公平地说,猫比狗更像狗,而不是孩子经历的其他随机事物(例如食物)。 与机器学习模型相反,人类不需要成千上万的猫实例就可以从头开始学习,只要他们已经学会了识别狗就可以识别猫。 人脑具有*元学习*的固有能力,这与机器学习语言中的**迁移学习****多任务学习**有关。 此功能通过利用从相关任务中学到的知识来加速新概念的学习。
生成模型是概率模型,旨在弥合人类学习与机器学习之间的鸿沟。 这些模型旨在从对象的各个部分学习高级抽象特征,并将这些学习的特征应用于新的但相似的对象类别。 在本章中,我们将研究如何生成这些生成模型,拥有先验知识意味着什么,如何用数学术语构筑先验知识,如何从一些对象中学习高级概念(模型的参数学习) ),以及如何将这些新学到的知识与先验知识相结合,以对新对象做出有意义的决策(推断)。
......@@ -32,17 +32,17 @@
![](img/f1da3c33-07dc-4b1d-8a75-aa4162729d8c.png)
我们可以从数据的右侧删除 *P(data)*,因为它不依赖于 **`θ`** 来进行优化,因此也可以进行优化 问题如下:
我们可以从数据的右侧删除`P(data)`,因为它不依赖于`θ`来进行优化,因此也可以进行优化 问题如下:
![](img/d5a1d317-b037-40b4-b612-10d2e168e328.png)
在非概率视图(也称为**期望最大化框架**)中,右侧等式中的术语 <sub>![](img/b2bc2505-5ae0-48b6-8e48-9e6b6f33452f.png)</sub><sub>![](img/eaf61a80-dcfc-4e84-9c97-4a61a0f3cf8e.png)</sub> ,分别成为损失函数和正则化。 在给定的概率设置中,相同的术语称为**可能性**(数据中,给定 **`θ`**)和**在先的**(先验信念) 在参数空间中)。 这种概率优化称为**最大 A ** **后验****MAP**)估计,因为我们正在从数据中最大化模型参数的后验分布。 但是,贝叶斯统计不相信 MAP 估计,因为它可能给我们有关最终学习参数的错误结果。 一个不同的数据集很有可能会给我们完全不同的学习参数,这些参数在参数空间中与从原始数据集中学习的参数相距甚远。 这就是贝叶斯学习试图解决的问题。 它显式地模拟参数空间中的不确定性。
在非概率视图(也称为**期望最大化框架**)中,右侧等式中的术语 <sub>![](img/b2bc2505-5ae0-48b6-8e48-9e6b6f33452f.png)</sub><sub>![](img/eaf61a80-dcfc-4e84-9c97-4a61a0f3cf8e.png)</sub> ,分别成为损失函数和正则化。 在给定的概率设置中,相同的术语称为(给定`θ`的数据的)**可能性****先验**(在参数空间中的先验信念)。 这种概率优化称为**最大后验****MAP**)估计,因为我们正在从数据中最大化模型参数的后验分布。 但是,贝叶斯统计不相信 MAP 估计,因为它可能给我们有关最终学习参数的错误结果。 一个不同的数据集很有可能会给我们完全不同的学习参数,这些参数在参数空间中与从原始数据集中学习的参数相距甚远。 这就是贝叶斯学习试图解决的问题。 它显式地模拟参数空间中的不确定性。
考虑给定左撇子和右撇子人数据集的参数分布示例。 下图显示了分布:
![](img/ad909edc-738b-40ed-a6fb-4d3893f9efc9.png)
最大化来自数据的参数( <sub>![](img/1b4b3973-b8ce-4ddf-afcb-469b72ce5521.png)</sub> )概率的 MAP 估计将收敛至点 A。但是,大多数概率量都位于模型更偏向于*的区域 人*,这与世界上惯用右手的人多于惯用左手的人这一事实相吻合。
最大化来自数据的参数( <sub>![](img/1b4b3973-b8ce-4ddf-afcb-469b72ce5521.png)</sub> )概率的 MAP 估计将收敛至点 A。但是,大多数概率量都更偏向于*惯用右手的人*,这与世界上惯用右手的人多于惯用左手的人这一事实相吻合。
因此,在贝叶斯学习中,重点是解决后验参数 <sub>![](img/1df7ccef-e62d-415b-8374-c4abefa20f71.png)</sub> ,以明确地对参数中的不确定性建模。
......@@ -74,15 +74,15 @@
![](img/06cbc1c2-9840-44aa-b8f3-a41e2abac4c4.png)
首先,人们倾向于仅从一个或几个示例中学习关于对象的有意义的信息,例如对象边界,并对其进行高精度分类(请参见上图中的 **i)**部分)。 另一方面,深度学习模型需要大量带标签的数据才能在诸如对象识别之类的任务上达到人类水平的性能。
首先,人们倾向于仅从一个或几个示例中学习关于对象的有意义的信息,例如对象边界,并对其进行高精度分类(请参见上图中的`i)`部分)。 另一方面,深度学习模型需要大量带标签的数据才能在诸如对象识别之类的任务上达到人类水平的性能。
其次,人类从一个示例中学习了绝大多数功能,例如,创建新字符(参见上图中的 **ii)**部分),将对象/字符分解为各个部分和关系(请参见 到 **iii)**部分中,并根据有关现有概念的现有知识开发新的,有意义的概念/字符(请参见上图中的 **iv]** 部分)。 相反,深度学习模型针对每个任务都需要特殊的损失函数和架构,由于该任务可用的标记数据非常有限,因此通常不切实际。
其次,人类从一个示例中学习了绝大多数功能,例如,创建新字符(参见上图中的`ii)`部分),将对象/字符分解为各个部分和关系(请参见`iii)`部分),并根据有关现有概念的现有知识开发新的,有意义的概念/字符(请参见上图中的`iv)`部分)。 相反,深度学习模型针对每个任务都需要特殊的损失函数和架构,由于该任务可用的标记数据非常有限,因此通常不切实际。
*人们如何仅从一个示例中学习对对象和概念的如此丰富,强大的表示?*
学习理论指出,需要更多的数据(而不是更少的数据)来学习更复杂的,可以很好地概括的模型。 但是人类往往会从非常稀疏的数据中学习到更丰富的表述,这些表述可以很好地概括。
概率模型旨在弥合数据饥渴的机器模型与人类采用的高度健壮的*从学习到学习*方法之间的鸿沟。 在本章中,我们将讨论两行概率方法,这些方法在从很少的数据中学习各种任务方面已经获得了广泛的成功:
概率模型旨在弥合数据饥渴的机器模型与人类采用的高度健壮的*学习*方法之间的鸿沟。 在本章中,我们将讨论两行概率方法,这些方法在从很少的数据中学习各种任务方面已经获得了广泛的成功:
* 第一种方法是对对象零件,子零件及其之间的关系进行显式建模,以学习概念(对象)。 这可用于从一个或几个示例中对新对象进行分类,并从预定义的零件和子零件列表中绘制新类型的对象。
* 第二种方法基于深度学习方法,通过从初始的大量训练数据中学习新类别(其中只有一个类别的图像,以及来自其他类别的大量图像)来完成一次分类任务。 这种方法将潜在变量定义为概念(类)的先验。 最初的大量训练数据集有助于学习有关概念的强大先验知识,这些概念随后可用于从一次镜头分类中对新对象进行分类。
......@@ -91,8 +91,8 @@
**贝叶斯程序学习****BPL**)进行三个步骤:
1. 第一步是生成模型,BPL 通过从*模型*部分的图的 A 侧部分组成(请参考 **iii)**来学习新概念,以学习新概念) ,下图 A 侧的子部分(请参见 **ii)**和它们在下图 A 侧的空间关系(请参见 **iv)**。 例如,它可以从零件和子零件中采样新类型的概念(在这种情况下为手写字符),并以新的方式将它们组合在一起。
2. 在第二步中,第一步中抽取的概念形成另一个较低层的生成模型,以产生新示例,如 A 侧的 **v)**部分所示。
1. 第一步是生成模型,BPL 通过从“模型”部分的图的 A 侧部分组成(请参考`iii)`来学习新概念,以学习新概念) ,下图 A 侧的子部分(请参见`ii)`和它们在下图 A 侧的空间关系(请参见`iv)`。 例如,它可以从零件和子零件中采样新类型的概念(在这种情况下为手写字符),并以新的方式将它们组合在一起。
2. 在第二步中,第一步中抽取的概念形成另一个较低层的生成模型,以产生新示例,如 A 侧的`v)`部分所示。
3. 最后一步将渲染原始字符级图像。 因此,BPL 是生成模型的生成模型。 下图的 B 边显示了该生成模型的伪代码。
# 模型
......
......@@ -12,7 +12,7 @@
在深度学习社区中,已经提出了用于一次学习的各种其他方法,例如使用 GAN 的生成建模,图像变形元网络,基于代表的度量学习等。 到目前为止,我们已经看到了使用一次学习进行分类的模型,但是在对象检测和语义分割方面也取得了一些进步。 在本节中,我们将介绍一些主要的基于机器学习的会议的最新论文(例如 CVPR,NeurIPS,ICLR 等)。
基于度量的学习是进行单次学习的较旧方法之一。 尽管该区域较旧,但仍在探索许多方面。 一个很好的例子是关于[《为短时学习重新研究基于局部描述符的图像到类度量》](https://arxiv.org/abs/1903.12290)主题的研究工作。 在本文中,作者提出了一种卷积神经网络架构,称为 **D4N****深最近邻神经网络**),该架构可提取图像级特征。 它与其他神经网络架构的主要区别是用基于局部描述符的图像到类度量替代了最后一层。
基于度量的学习是进行单次学习的较旧方法之一。 尽管该区域较旧,但仍在探索许多方面。 一个很好的例子是关于[《为短时学习重新研究基于局部描述符的图像到类度量》](https://arxiv.org/abs/1903.12290)主题的研究工作。 在本文中,作者提出了一种卷积神经网络架构,称为 **D4N****深度最近邻神经网络**),该架构可提取图像级特征。 它与其他神经网络架构的主要区别是用基于局部描述符的图像到类度量替代了最后一层。
[《通过类别遍历查找与几次任务学习相关的任务相关特征》](https://arxiv.org/abs/1905.11116)也为改进度量学习方法做出了贡献,方法是引入 一个插件框架。 在本文中,作者讨论了众所周知的度量学习方法(例如连体网络和匹配网络)如何一次只关注一个任务,而不是整个学习所有任务。 **类别遍历模块****CTM**)插件组件通过完成所有支持任务来学习重要的尺寸特征。 CTM 在集中器和投影仪单元的帮助下,为相似类别提取通用特征嵌入,并在不同类别中提取唯一特征。 使用 CTM 的输出,我们可以在元学习器之前添加一个强大的功能,这可以使我们更快更好地进行优化。 通过使用此框架,他们显示了基于度量的学习方法的显着改进。
......@@ -39,7 +39,7 @@
* 半监督学习
* 学习失衡
* 元学习
* 移学习
* 移学习
# 半监督学习
......@@ -51,7 +51,7 @@
# 学习失衡
在学习不平衡的情况下,我们有一个不平衡的数据集。 也就是说,我们从一个类别中获得的样本要多于从其他类别中获得的样本。 这也被普遍称为**偏态分布数据集。** 让我们看一下处理偏斜数据集的一些流行方法:
在学习不平衡的情况下,我们有一个不平衡的数据集。 也就是说,我们从一个类别中获得的样本要多于从其他类别中获得的样本。 这也被普遍称为**偏态分布数据集**让我们看一下处理偏斜数据集的一些流行方法:
* **度量标准的选择**:度量标准的多种形式可以帮助评估模型的准确性,例如混淆矩阵,精度,召回率和 F1 得分。
* **算法的选择**:参数算法通过数据集学习其参数,因此,如果数据集存在偏差,则参数模型最有可能也会受到偏差。 对于有偏数据集,非参数方法(例如 k 最近邻)和集合(例如 AdaBoost,XGBoost 等)被证明是最佳方法。
......@@ -59,15 +59,15 @@
这种方法接近一次学习,因为我们期望创建的机器学习模型应该能够从一些示例中学习分布。
要了解有关度量形式的更多信息,请参阅第 2 章“基于度量的方法”。
要了解有关度量形式的更多信息,请参阅第 2 章“基于度量的方法”。
# 元学习
元学习最近在研究界引起了很多关注。 本书中讨论的大多数方法都是元学习型方法,例如与模型无关的元学习和元网络。 元学习是一种在不同任务上训练模型,然后针对特定任务使用通常学习的功能的方法。 它帮助模型在许多任务上学习先验,从而帮助模型在有限的数据下达到优化。 用简单的话来说,元学习是一种训练模型以*学习学习*任何目标的方法。
元学习最近在研究界引起了很多关注。 本书中讨论的大多数方法都是元学习型方法,例如与模型无关的元学习和元网络。 元学习是一种在不同任务上训练模型,然后针对特定任务使用通常学习的功能的方法。 它帮助模型在许多任务上学习先验,从而帮助模型在有限的数据下达到优化。 用简单的话来说,元学习是一种训练模型以*学习*任何目标的方法。
# 移学习
# 移学习
转移学习是指使用从解决一个问题中获得的知识并将其用于解决另一个问题的技术。 以下是转移学习方法的简化视图:
迁移学习是指使用从解决一个问题中获得的知识并将其用于解决另一个问题的技术。 以下是迁移学习方法的简化视图:
![](img/d2619e72-ed14-4933-9ca1-7d658c79f2f2.png)
......@@ -77,7 +77,7 @@
从理论上讲,一键式学习有多种应用程序,但直到最近才开始在实际场景中使用。 使用一键式学习已取得了最新进展,例如编写 SQL 代码,改进变形的医学图像以及运行签名验证。 还有其他几个领域仍在研究中。 OpenAI,Google,Microsoft 和 Amazon 等公司正在 AI 研究方面投入巨资。 解决一次学习将意味着创建具有人类能力的机械大脑。 这种进步可以通过多种方式挽救生命:可以为罕见病的发现铺平道路,解决全球粮食危机或优化供应链模型。
在本书中,我们探讨了一些一次学习的可能方法。 如果您想探索更多内容,请参阅*进一步阅读*部分。
在本书中,我们探讨了一些一次学习的可能方法。 如果您想探索更多内容,请参阅“进一步阅读”部分。
# 进一步阅读
......
......@@ -4,4 +4,4 @@
本节包括以下章节:
* 第 1 章和“一次学习简介”
\ No newline at end of file
* 第 1 章,“一次学习简介”
\ No newline at end of file
......@@ -4,6 +4,6 @@
本节包括以下章节:
* 第 2 章和“基于度量的方法”
* 第 3 章和“基于模型的方法”
* 第 4 章和“基于优化的方法”
\ No newline at end of file
* 第 2 章,“基于度量的方法”
* 第 3 章,“基于模型的方法”
* 第 4 章,“基于优化的方法”
\ No newline at end of file
# 第三节:其他方法和结论
深度学习架构已被证明是非常有效的,但是它们仍然不是一次学习的最佳方法。 贝叶斯编程语言之类的不同贝叶斯方法仍然可以一口气击败人类。 在本节中,我们将学习贝叶斯方法,并讨论该领域的最新进展。 此外,我们将贝叶斯方法与深度学习圈中解决任何问题的众所周知的技术(移学习)进行比较。 我们还将学习何时在迁移学习中使用单发方法。
深度学习架构已被证明是非常有效的,但是它们仍然不是一次学习的最佳方法。 贝叶斯编程语言之类的不同贝叶斯方法仍然可以一口气击败人类。 在本节中,我们将学习贝叶斯方法,并讨论该领域的最新进展。 此外,我们将贝叶斯方法与深度学习圈中解决任何问题的众所周知的技术(移学习)进行比较。 我们还将学习何时在迁移学习中使用单发方法。
本节包括以下章节:
* 第 5 章*基于生成建模的方法*
* 第 5 章,“基于生成建模的方法”
* 第 6 章,“结论和其他方法”
\ No newline at end of file
......@@ -20,7 +20,7 @@
第 4 章和*用于 NLP 的循环神经网络*探索循环神经网络,并研究 RNN 中的各种修改以及最佳实践。
第 5 章,*移学习和 TensorBoard* 显示了如何使用经过训练的 ResNet-50 模型训练图像分类器以区分正常和肺炎的胸部 X 射线。 我们将替换分类器,并使用两个输出单位来代表正常和肺炎类别。
第 5 章,*移学习和 TensorBoard* 显示了如何使用经过训练的 ResNet-50 模型训练图像分类器以区分正常和肺炎的胸部 X 射线。 我们将替换分类器,并使用两个输出单位来代表正常和肺炎类别。
第 6 章和*探索生成对抗网络*探索生成对抗网络,以及如何实现 PyTorch 的组件并训练端到端网络。 我们将探索 DCGAN,并通过渐进式 GAN 网络进一步改善 DCGAN 的局限性。
......
# 移学习和 TensorBoard
# 移学习和 TensorBoard
迁移学习是深度学习中的一个重要概念,它使我们可以将深度学习用于各种日常任务。 这是一种机器学习技术,其中针对任务训练的模型被重用以创建用于类似任务的新模型。 我们采用在大型数据集上训练的模型,并将其知识转移到较小的数据集。 对于具有**卷积神经网络****CNN**)的计算机视觉任务,我们冻结了网络的早期卷积层,仅训练了最后几层。 早期的卷积层提取适用于整个图像的通用低级特征,以检测边缘,图案和渐变,而稍后的层识别图像中的特定特征,并且特定于数据集。
在本章中,我们将训练图像分类器以区分正常患者和肺炎患者的胸部 X 光,并使用经过训练的 ResNet-50 模型进行移学习。 我们将替换分类器,并有两个输出单元代表正常和肺炎分类。
在本章中,我们将训练图像分类器以区分正常患者和肺炎患者的胸部 X 光,并使用经过训练的 ResNet-50 模型进行移学习。 我们将替换分类器,并有两个输出单元代表正常和肺炎分类。
我们将在以下阶段完成移学习任务:
我们将在以下阶段完成移学习任务:
1. 加载在 ImageNet 数据集上训练的预训练的 ResNet-50 模型。
2. 在模型的较低卷积层中冻结参数(权重)。
......@@ -580,5 +580,5 @@ Epoch | Training Loss | Test Loss | Accuracy |
有关更多详细信息,请参阅以下内容:
* 您可以在[这个页面](https://pytorch.org/tutorials/beginner/finetuning_torchvision_models_tutorial.html)上了解有关微调的更多信息。
* 您可以在[这个页面](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html)上了解另一个移学习示例。
* 您可以在[这个页面](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html)上了解另一个移学习示例。
* 您可以通过[这里](https://pytorch.org/docs/stable/tensorboard.html)探索 TensorBoard 函数。
\ No newline at end of file
......@@ -175,7 +175,7 @@ Dataset MNIST
```
`torchvision``models`模块包装有几种常用的型号,可以直接使用。 由于当今大多数高级模型都使用移学习来获得其他架构学习的权重(例如,第三章中的语义分段模型使用经过训练的 resnet18 网络),因此这是最常用的模型之一`torchvision`功能。 以下代码段显示了如何从`torchvision.models`下载 resnet18 模型。 标志`pretrained`告诉`torchvision`仅使用模型或获取从 PyTorch 服务器下载的预训练模型。
`torchvision``models`模块包装有几种常用的型号,可以直接使用。 由于当今大多数高级模型都使用移学习来获得其他架构学习的权重(例如,第三章中的语义分段模型使用经过训练的 resnet18 网络),因此这是最常用的模型之一`torchvision`功能。 以下代码段显示了如何从`torchvision.models`下载 resnet18 模型。 标志`pretrained`告诉`torchvision`仅使用模型或获取从 PyTorch 服务器下载的预训练模型。
```py
>>> resnet18 = torchvision.models.resnet18(pretrained=False)
......
......@@ -343,7 +343,7 @@ PyTorch 作为`torch.nn`程序包的一部分提供了更高级别的丢弃层
#### 训练
我们为制作的所有小组件提供了一个包装模块,称为`RNNClassifier`。 训练过程与我们整本书所遵循的过程相似。 我们初始化`model`类,定义损失函数,然后定义优化器。 一旦完成所有这些设置并初始化了超参数,就将整个控件交给`ignite`。 但是在简单的 RNN 中,由于我们正在从 GloVe 向量的学习的嵌入中进行移学习,因此我们必须将这些学习的权重转移到嵌入层的权重矩阵中。 这是通过以下代码段的第二行完成的。
我们为制作的所有小组件提供了一个包装模块,称为`RNNClassifier`。 训练过程与我们整本书所遵循的过程相似。 我们初始化`model`类,定义损失函数,然后定义优化器。 一旦完成所有这些设置并初始化了超参数,就将整个控件交给`ignite`。 但是在简单的 RNN 中,由于我们正在从 GloVe 向量的学习的嵌入中进行移学习,因此我们必须将这些学习的权重转移到嵌入层的权重矩阵中。 这是通过以下代码段的第二行完成的。
```py
model = RNNClassifier(config)
......
......@@ -950,7 +950,7 @@ fit(epochs, model, loss_func, opt, train_dl, valid_dl)
现在,我们有了一个通用的数据管道和训练循环,您可以将其用于使用 Pytorch 训练许多类型的模型。 要了解现在可以轻松进行模型训练,请查看 <cite>mnist_sample</cite> 示例笔记本。
当然,您需要添加很多内容,例如数据增强,超参数调整,监控训练,移学习等。 这些功能可在 fastai 库中使用,该库是使用本教程中所示的相同设计方法开发的,为希望进一步推广其模型的从业人员提供了自然的下一步。
当然,您需要添加很多内容,例如数据增强,超参数调整,监控训练,移学习等。 这些功能可在 fastai 库中使用,该库是使用本教程中所示的相同设计方法开发的,为希望进一步推广其模型的从业人员提供了自然的下一步。
我们承诺在本教程开始时将通过示例分别说明`torch.nn``torch.optim``Dataset``DataLoader`。 因此,让我们总结一下我们所看到的:
......
......@@ -446,7 +446,7 @@ IoU metric: segm
## 总结](docs / modern-java-zh /
在本教程中,您学习了如何在自定义数据集上为实例细分模型创建自己的训练管道。 为此,您编写了一个`torch.utils.data.Dataset`类,该类返回图像以及地面真相框和分段蒙版。 您还利用了在 COCO train2017 上预先训练的 Mask R-CNN 模型,以便对该新数据集执行移学习。
在本教程中,您学习了如何在自定义数据集上为实例细分模型创建自己的训练管道。 为此,您编写了一个`torch.utils.data.Dataset`类,该类返回图像以及地面真相框和分段蒙版。 您还利用了在 COCO train2017 上预先训练的 Mask R-CNN 模型,以便对该新数据集执行移学习。
对于更完整的示例(包括多机/多 GPU 训练),请检查在 Torchvision 存储库中存在的`references/detection/train.py`
......
# 计算机视觉教程的移学习
# 计算机视觉教程的移学习
> 原文:<https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html>
**作者**[Sasank Chilamkurthy](https://chsasank.github.io)
在本教程中,您将学习如何使用移学习训练卷积神经网络进行图像分类。 您可以在 [cs231n 笔记](https://cs231n.github.io/transfer-learning/)中阅读有关转学的更多信息。
在本教程中,您将学习如何使用移学习训练卷积神经网络进行图像分类。 您可以在 [cs231n 笔记](https://cs231n.github.io/transfer-learning/)中阅读有关转学的更多信息。
引用这些注释,
> 实际上,很少有人从头开始训练整个卷积网络(使用随机初始化),因为拥有足够大小的数据集相对很少。 相反,通常在非常大的数据集上对 ConvNet 进行预训练(例如 ImageNet,其中包含 120 万个具有 1000 个类别的图像),然后将 ConvNet 用作初始化或固定特征提取器以完成感兴趣的任务。
这两个主要的移学习方案如下所示:
这两个主要的移学习方案如下所示:
* **对卷积网络进行微调**:代替随机初始化,我们使用经过预训练的网络初始化网络,例如在 imagenet 1000 数据集上进行训练的网络。 其余的训练照常进行。
* **作为固定特征提取器的 ConvNet**:在这里,我们将冻结除最终全连接层之外的所有网络的权重。 最后一个全连接层将替换为具有随机权重的新层,并且仅训练该层。
......
# (beta)计算机视觉教程的量化移学习¶
# (beta)计算机视觉教程的量化移学习¶
> 原文:<https://pytorch.org/tutorials/intermediate/quantized_transfer_learning_tutorial.html>
......@@ -12,9 +12,9 @@
**由**编辑:[林 ess 琳](https://github.com/jlin27)
本教程以 [Sasank Chilamkurthy](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html) 编写的原始 [PyTorch 移学习](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html)教程为基础。
本教程以 [Sasank Chilamkurthy](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html) 编写的原始 [PyTorch 移学习](https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html)教程为基础。
转移学习是指利用预训练的模型应用于不同数据集的技术。 使用转移学习的主要方法有两种:
迁移学习是指利用预训练的模型应用于不同数据集的技术。 使用迁移学习的主要方法有两种:
1. **作为固定特征提取器的 ConvNet**:在这里,您[“冻结”](https://arxiv.org/abs/1706.04983) 网络中所有参数的权重,但最后几层(又称“头部”)的权重通常 连接的层)。 将这些最后一层替换为使用随机权重初始化的新层,并且仅训练这些层。
2. **对 ConvNet 进行微调**:使用随机训练的网络初始化模型,而不是随机初始化,然后像往常一样使用不同的数据集进行训练。 通常,如果输出数量不同,则在网络中也会更换磁头(或磁头的一部分)。 这种方法通常将学习率设置为较小的值。 这样做是因为已经对网络进行了训练,并且只需进行较小的更改即可将其“微调”到新的数据集。
......@@ -355,7 +355,7 @@ plt.tight_layout()
## 第 2 部分。微调可量化模型](docs / modern-java-zh /
在这一部分中,我们将微调用于迁移学习的特征提取器,并对特征提取器进行量化。 请注意,在第 1 部分和第 2 部分中,特征提取器都是量化的。 不同之处在于,在第 1 部分中,我们使用了预训练的量化模型。 在这一部分中,我们将在对感兴趣的数据集进行微调之后创建一个量化的特征提取器,因此这是一种在具有量化优势的同时通过移学习获得更好的准确性的方法。 请注意,在我们的特定示例中,训练集非常小(120 张图像),因此微调整个模型的好处并不明显。 但是,此处显示的过程将提高使用较大数据集进行传递学习的准确性。
在这一部分中,我们将微调用于迁移学习的特征提取器,并对特征提取器进行量化。 请注意,在第 1 部分和第 2 部分中,特征提取器都是量化的。 不同之处在于,在第 1 部分中,我们使用了预训练的量化模型。 在这一部分中,我们将在对感兴趣的数据集进行微调之后创建一个量化的特征提取器,因此这是一种在具有量化优势的同时通过移学习获得更好的准确性的方法。 请注意,在我们的特定示例中,训练集非常小(120 张图像),因此微调整个模型的好处并不明显。 但是,此处显示的过程将提高使用较大数据集进行传递学习的准确性。
预训练特征提取器必须是可量化的。 为确保其可量化,请执行以下步骤:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册