提交 cd3b6cce 编写于 作者: W wizardforcel

2020-12-27 20:55:14

上级 2e77d826
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
简而言之,该过程是神经网络可以近似函数的原因。 但是,神经网络可能无法完美地预测功能有很多原因,其中主要的原因是: 简而言之,该过程是神经网络可以近似函数的原因。 但是,神经网络可能无法完美地预测功能有很多原因,其中主要的原因是:
* 许多函数包含随机属性(即随机属性) * 许多函数包含随机属性(即随机属性)
* 训练数据可能会过拟合 * 训练数据可能会过拟合
* 可能缺少训练数据 * 可能缺少训练数据
在的许多实际应用中,简单的神经网络能够以合理的精度近似一个函数。 这些应用程序将成为本书的重点。 在的许多实际应用中,简单的神经网络能够以合理的精度近似一个函数。 这些应用程序将成为本书的重点。
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
* 为深度学习模型准备数据 * 为深度学习模型准备数据
* 选择正确的模型架构 * 选择正确的模型架构
* 使用 Keras,一个 TensorFlow 抽象库 * 使用 Keras,一个 TensorFlow 抽象库
* 使用训练有素的模型进行预测 * 使用训练的模型进行预测
# 选择正确的模型架构 # 选择正确的模型架构
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
* 超参数优化 * 超参数优化
* 添加层和节点 * 添加层和节点
* 探索并添加历元 * 探索并添加周期
* 实现激活函数 * 实现激活函数
* 使用正则化策略 * 使用正则化策略
...@@ -427,7 +427,7 @@ return np.mean(np.abs((A - B) / A)) * 100 ...@@ -427,7 +427,7 @@ return np.mean(np.abs((A - B) / A)) * 100
* 添加或删除层并更改节点数 * 添加或删除层并更改节点数
* 增加或减少训练次数 * 增加或减少训练次数
* 试用不同的激活函数 * 尝试不同的激活函数
* 使用不同的正则化策略 * 使用不同的正则化策略
我们将使用在“模型评估”部分末尾开发的相同的主动学习环境来评估每种修改,并测量这些策略中的每一种如何帮助我们开发更精确的模型。 我们将使用在“模型评估”部分末尾开发的相同的主动学习环境来评估每种修改,并测量这些策略中的每一种如何帮助我们开发更精确的模型。
......
...@@ -28,7 +28,7 @@ TensorFlow 是 Google 流行的机器学习和深度学习产品。 它已迅速 ...@@ -28,7 +28,7 @@ TensorFlow 是 Google 流行的机器学习和深度学习产品。 它已迅速
你需要: 你需要:
* 命令行外壳经验 * 命令行 Shell 经验
* 有 Python 脚本编写或应用程序开发经验 * 有 Python 脚本编写或应用程序开发经验
# 下载示例代码文件 # 下载示例代码文件
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* 然后,我们将讨论激活函数和非线性。 * 然后,我们将讨论激活函数和非线性。
* 当我们要进行实际分类时,我们需要另外一小段数学`softmax`。 我们将在本章后面讨论为什么这很重要。 * 当我们要进行实际分类时,我们需要另外一小段数学`softmax`。 我们将在本章后面讨论为什么这很重要。
* 我们将研究训练和测试数据,以及`Dropout``Flatten`(它们是新的网络组件,旨在使网络更好地工作)。 * 我们将研究训练和测试数据,以及`Dropout``Flatten`(它们是新的网络组件,旨在使网络更好地工作)。
* 然后,我们将研究机器学习的实际解决方案。 * 然后,我们将研究机器学习的实际解决方案。
* 最后,我们将学习超参数和网格搜索的概念,以便微调和构建最佳的神经网络。 * 最后,我们将学习超参数和网格搜索的概念,以便微调和构建最佳的神经网络。
让我们开始吧。 让我们开始吧。
...@@ -63,7 +63,7 @@ ReLu 非线性函数-大于零。 ...@@ -63,7 +63,7 @@ ReLu 非线性函数-大于零。
机器学习模型可能具有通过`relu``sigmoid`运行的数百,数千甚至数百万个单独的数字参数。 机器学习模型可能具有通过`relu``sigmoid`运行的数百,数千甚至数百万个单独的数字参数。
幕后进行了大量数学运算,因此大量非线性的相互作用使机器学习可以在概念上围绕答案绘制高维数学形状。 幕后进行了大量数学运算,因此大量非线性的相互作用使机器学习可以在概念上围绕答案绘制高维数学形状。
# Softmax # Softmax
...@@ -153,7 +153,7 @@ Keras 功能模型 ...@@ -153,7 +153,7 @@ Keras 功能模型
最后,我们得出验证数据,也称为测试数据。 实际上,这是用来计算精度的。 在每个时期结束时,对模型进行部分训练,然后通过模型运行测试数据,生成一组试验预测,用于对准确性进行评分。 机器学习涉及大量的人类等待。 我们将继续并跳过每个时代的进度; 在运行这些样本时,您将有很多机会观看这些进度条的增长。 最后,我们得出验证数据,也称为测试数据。 实际上,这是用来计算精度的。 在每个时期结束时,对模型进行部分训练,然后通过模型运行测试数据,生成一组试验预测,用于对准确性进行评分。 机器学习涉及大量的人类等待。 我们将继续并跳过每个时代的进度; 在运行这些样本时,您将有很多机会观看这些进度条的增长。
现在,让我们谈谈前面的输出。 随着进度栏的增长,您可以看到其正在运行的示例图像的数量。 但是还有`loss`功能和`metrics`参数; 在这里,我们使用准确性。 因此,`loss`功能会反馈给学习,这实际上就是机器学习的学习方式; 它试图通过迭代设置模型中的数字参数来使`loss`最小化,以使`loss`编号下降。 那里的准确性,以便您可以了解发生了什么。 在这种情况下,精度表示模型猜测正确数字的频率。 因此,就将其视为一本菜谱而言,分类交叉熵是您实际上一直希望用于此类分类问题的`loss`函数,而`adam`是学习算法的最明智的默认选项; `accuracy`是出色的输出`metrics`,您可以用来查看模型的运行状况。 现在,让我们谈谈前面的输出。 随着进度栏的增长,您可以看到其正在运行的示例图像的数量。 但是还有`loss`功能和`metrics`参数; 在这里,我们使用准确性。 因此,`loss`功能会反馈给学习,这实际上就是机器学习的学习方式; 它试图通过迭代设置模型中的数字参数来使`loss`最小化,以使`loss`编号下降。 那里的准确性,以便您可以了解发生了什么。 在这种情况下,精度表示模型猜测正确数字的频率。 因此,就将其视为一本菜谱而言,分类交叉熵是您实际上一直希望用于此类分类问题的`loss`函数,而`adam`是学习算法的最明智的默认选项; `accuracy`是出色的输出`metrics`,您可以用来查看模型的运行状况。
# 超参数 # 超参数
......
# 前言 # 前言
《Python 元学习实用指南》解释了元学习的基础知识,并帮助您了解元学习的概念。 您将经历各种一次学习算法,例如连体,原型,关系和内存增强网络,并在 TensorFlow 和 Keras 中实现它们。 您还将了解最新的元学习算法,例如与模型无关的元学习(MAML),Reptile 和通过元学习进行快速上下文适应(CAML)。 然后,您将探索如何使用元 SGD 快速学习,并发现如何使用元学习进行无监督学习。 《Python 元学习实用指南》解释了元学习的基础知识,并帮助您了解元学习的概念。 您将经历各种一次学习算法,例如连体,原型,关系和记忆增强网络,并在 TensorFlow 和 Keras 中实现它们。 您还将了解最新的元学习算法,例如与模型无关的元学习(MAML),Reptile 和通过元学习进行快速上下文适应(CAML)。 然后,您将探索如何使用元 SGD 快速学习,并发现如何使用元学习进行无监督学习。
# 这本书是给谁的 # 这本书是给谁的
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
本书需要以下软件: 本书需要以下软件:
* 蟒蛇 * Python
* 水蟒 * Anaconda
* TensorFlow * TensorFlow
* * Keras
# 下载示例代码文件 # 下载示例代码文件
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
在本章中,您将了解以下内容: 在本章中,您将了解以下内容:
* 元学习 * 元学习
* 元学习和少拍 * 元学习和几次学习
* 元学习的类型 * 元学习的类型
* 学习通过梯度下降学习梯度下降 * 通过梯度下降来元学习梯度下降
* 优化作为快速学习的模型 * 为几次学习优化模型
# 元学习 # 元学习
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
![](img/24750401-81a6-4f3f-9b3e-60ef2017b393.png) ![](img/24750401-81a6-4f3f-9b3e-60ef2017b393.png)
因此,我们可以使用 LSTM 作为优化器,而不是在少数学习机制中使用梯度下降作为优化器。 我们的元学习者是 LSTM,它学习用于训练模型的更新规则。 因此,我们使用两个网络:一个是我们的基础学习者,它学习执行任务,另一个是元学习者,它试图找到最佳参数。 但这如何工作? 因此,我们可以使用 LSTM 作为优化器,而不是在少数学习机制中使用梯度下降作为优化器。 我们的元学习器是 LSTM,它学习用于训练模型的更新规则。 因此,我们使用两个网络:一个是我们的基础学习器,它学习执行任务,另一个是元学习器,它试图找到最佳参数。 但这如何工作?
我们知道,在 LSTM 中,我们使用了一个“遗忘门”来丢弃内存中不需要的信息,它可以表示为: 我们知道,在 LSTM 中,我们使用了一个“遗忘门”来丢弃内存中不需要的信息,它可以表示为:
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
![](img/60110071-3fb1-471e-9b9c-8fc73797e836.png) ![](img/60110071-3fb1-471e-9b9c-8fc73797e836.png)
因此,我们的元学习经过几次更新后即可学习`i[t]``f[t]`的最佳值。 因此,我们的元学习经过几次更新后即可学习`i[t]``f[t]`的最佳值。
但是,这如何工作? 但是,这如何工作?
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
# 问题 # 问题
1. 什么是元学习? 1. 什么是元学习?
2. 什么是少拍学习? 2. 什么是几次学习?
3. 什么是支持集? 3. 什么是支持集?
4. 什么是查询集? 4. 什么是查询集?
5. 基于度量的学习称为什么? 5. 基于度量的学习称为什么?
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* 什么是连体网络? * 什么是连体网络?
* 连体网络的架构 * 连体网络的架构
* 连体网络的应用 * 连体网络的应用
* 使用连体网络进行人脸识别 * 将连体网络用于人脸识别
* 使用连体网络构建音频识别模型 * 使用连体网络构建音频识别模型
# 什么是连体网络? # 什么是连体网络?
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* 原型网络 * 原型网络
* 原型网络算法 * 原型网络算法
* 使用原型网络进行分类 * 将原型网络用于分类
* 高斯原型网络 * 高斯原型网络
* 高斯原型网络算法 * 高斯原型网络算法
* 半原型网络 * 半原型网络
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
在本章中,我们将学习以下内容: 在本章中,我们将学习以下内容:
* 关系网络 * 关系网络
* 单次,次和零次设置的关系网络 * 单次,次和零次设置的关系网络
* 使用 TensorFlow 建立关系网络 * 使用 TensorFlow 建立关系网络
* 匹配网络 * 匹配网络
* 匹配网络的嵌入函数 * 匹配网络的嵌入函数
...@@ -672,11 +672,11 @@ class Matching_network(): ...@@ -672,11 +672,11 @@ class Matching_network():
在本章中,我们学习了在几次学习中如何使用匹配网络和关系网络。 我们看到了一个关系网络如何学习支持和查询集的嵌入,并将这些嵌入进行组合并将其馈送到关系函数以计算关系得分。 我们还看到了匹配的网络如何使用两种不同的嵌入函数来学习我们的支持集和查询集的嵌入,以及它如何预测查询集的类。 在本章中,我们学习了在几次学习中如何使用匹配网络和关系网络。 我们看到了一个关系网络如何学习支持和查询集的嵌入,并将这些嵌入进行组合并将其馈送到关系函数以计算关系得分。 我们还看到了匹配的网络如何使用两种不同的嵌入函数来学习我们的支持集和查询集的嵌入,以及它如何预测查询集的类。
在下一章中,我们将通过存储和检索内存中的信息来学习神经图灵机和内存增强型神经网络的工作方式。 在下一章中,我们将通过存储和检索内存中的信息来学习神经图灵机和记忆增强型神经网络的工作方式。
# 问题 # 问题
1. 关系网络中使用的功能有哪些不同类型? 1. 关系网络中使用的特征有哪些不同类型?
2. 关系网络中的算子`Z`是什么? 2. 关系网络中的算子`Z`是什么?
3. 关系函数是什么? 3. 关系函数是什么?
4. 关系网络的损失函数是什么? 4. 关系网络的损失函数是什么?
......
...@@ -2,16 +2,16 @@ ...@@ -2,16 +2,16 @@
到目前为止,在前面的章节中,我们已经学习了几种基于距离的度量学习算法。 我们从连体网络开始,了解了连体网络如何学会区分两个输入,然后我们研究了原型网络以及原型网络的变体,例如高斯原型网络和半原型网络。 展望未来,我们探索了有趣的匹配网络和关系网络。 到目前为止,在前面的章节中,我们已经学习了几种基于距离的度量学习算法。 我们从连体网络开始,了解了连体网络如何学会区分两个输入,然后我们研究了原型网络以及原型网络的变体,例如高斯原型网络和半原型网络。 展望未来,我们探索了有趣的匹配网络和关系网络。
在本章中,我们将学习用于一次学习的**内存增强神经网络****MANN**)。 在进入 MANN 之前,我们将了解他们的前身**神经图灵机****NTM**)。 我们将学习 NTM 如何使用外部存储器来存储和检索信息,并且还将看到如何使用 NTM 执行复制任务。 在本章中,我们将学习用于一次学习的**记忆增强神经网络****MANN**)。 在进入 MANN 之前,我们将了解他们的前身**神经图灵机****NTM**)。 我们将学习 NTM 如何使用外部存储器来存储和检索信息,并且还将看到如何使用 NTM 执行复制任务。
在本章中,我们将学习以下内容: 在本章中,我们将学习以下内容:
* NTM * NTM
* 在 NTM 中读写 * NTM 中的读写
* 寻址机制 * 寻址机制
* 使用 NTM 复制任务 * 使用 NTM 复制任务
* * MANN
* 曼语中的读写 * MANN 中的读写
# NTM # NTM
......
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
* 从头开始构建 MAML * 从头开始构建 MAML
* ADML * ADML
* 从头开始构建 ADML * 从头开始构建 ADML
* 反洗钱 * CAML
# MAML # MAML
MAML 是最近推出且使用最广泛的元学习算法之一,它在元学习研究中创造了重大突破。 元学习是元学习的重点,我们知道,在元学习中,我们从仅包含少量数据点的各种相关任务中学习,并且元学习者会产生一个可以很好地概括新的相关任务的快速学习者,即使训练样本数量较少。 MAML 是最近推出且使用最广泛的元学习算法之一,它在元学习研究中创造了重大突破。 元学习是元学习的重点,我们知道,在元学习中,我们从仅包含少量数据点的各种相关任务中学习,并且元学习器会产生一个可以很好地概括新的相关任务的快速学习器,即使训练样本数量较少。
MAML 的基本思想是找到一个更好的初始参数,以便具有良好的初始参数,该模型可以以较少的梯度步骤快速学习新任务。 MAML 的基本思想是找到一个更好的初始参数,以便具有良好的初始参数,该模型可以以较少的梯度步骤快速学习新任务。
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
* 监督学习中的元 SGD * 监督学习中的元 SGD
* 强化学习中的元 SGD * 强化学习中的元 SGD
* 从头开始构建元 SGD * 从头开始构建元 SGD
* 爬虫 * Reptile
* 使用 Reptile 进行正弦波回归 * 将 Reptile 用于正弦波回归
# 元 SGD # 元 SGD
......
# 作为优化目标的梯度协议 # 作为优化目标的梯度一致性
在上一章中,我们了解了元 SGD 和 Reptile 算法。 我们看到了如何使用元 SGD 查找最佳参数,最佳学习率和梯度更新方向。 我们还看到了 Reptile 算法的工作原理以及比 MAML 更有效的方法。 在本章中,我们将学习如何将梯度一致性用作元学习的优化目标。 正如您在 MAML 中所看到的,我们基本上是对各个任务的梯度进行平均,并更新模型参数。 在梯度一致性算法中,我们将对梯度进行加权平均以更新模型参数,并且我们将了解如何为梯度添加权重如何帮助我们找到更好的模型参数。 在本章中,我们将确切探讨梯度一致性算法的工作原理。 我们的梯度协议算法可以同时插入 MAML 和 Reptile 算法。 我们还将从头开始了解如何在 MAML 中实现梯度协议 在上一章中,我们了解了元 SGD 和 Reptile 算法。 我们看到了如何使用元 SGD 查找最佳参数,最佳学习率和梯度更新方向。 我们还看到了 Reptile 算法的工作原理以及比 MAML 更有效的方法。 在本章中,我们将学习如何将梯度一致性用作元学习的优化目标。 正如您在 MAML 中所看到的,我们基本上是对各个任务的梯度进行平均,并更新模型参数。 在梯度一致性算法中,我们将对梯度进行加权平均以更新模型参数,并且我们将了解如何为梯度添加权重如何帮助我们找到更好的模型参数。 在本章中,我们将确切探讨梯度一致性算法的工作原理。 我们的梯度一致性算法可以同时插入 MAML 和 Reptile 算法。 我们还将从头开始了解如何在 MAML 中实现梯度一致性
在本章中,我们将学习以下内容: 在本章中,我们将学习以下内容:
* 梯度协议 * 梯度一致性
* 权重计算 * 权重计算
* 梯度一致性算法 * 梯度一致性算法
* 使用 MAML 构建梯度一致性算法 * 使用 MAML 构建梯度一致性算法
# 作为优化的梯度协议 # 作为优化的梯度一致性
梯度一致性算法是一种有趣且最近引入的算法,可作为元学习算法的增强功​​能。 在 MAML 和 Reptile 中,我们尝试找到一个更好的模型参数,该参数可在多个相关任务中推广,以便我们可以使用更少的数据点快速学习。 如果我们回顾前面几章中学到的知识,就会发现我们随机初始化了模型参数,然后从任务分布`p(T)`中抽取了一批随机任务`T[i]`进行了采样。 对于每个采样任务`T[i]`,我们通过计算梯度将损失降到最低,并获得更新的参数`θ'[i]`,这形成了我们的内部循环: 梯度一致性算法是一种有趣且最近引入的算法,可作为元学习算法的增强功​​能。 在 MAML 和 Reptile 中,我们尝试找到一个更好的模型参数,该参数可在多个相关任务中推广,以便我们可以使用更少的数据点快速学习。 如果我们回顾前面几章中学到的知识,就会发现我们随机初始化了模型参数,然后从任务分布`p(T)`中抽取了一批随机任务`T[i]`进行了采样。 对于每个采样任务`T[i]`,我们通过计算梯度将损失降到最低,并获得更新的参数`θ'[i]`,这形成了我们的内部循环:
...@@ -76,7 +76,7 @@ for i in range(num_tasks): ...@@ -76,7 +76,7 @@ for i in range(num_tasks):
# 算法 # 算法
现在,让我们看一下梯度协议的工作原理: 现在,让我们看一下梯度一致性的工作原理:
1. 假设我们有一个由参数`θ`参数化的模型`f`和任务上的分布`p(T)`。 首先,我们随机初始化模型参数`θ` 1. 假设我们有一个由参数`θ`参数化的模型`f`和任务上的分布`p(T)`。 首先,我们随机初始化模型参数`θ`
2. 我们从任务分布`T ~ p(T)`中采样了一些任务`T[i]`。 假设我们采样了两个任务,然后是`T` 2. 我们从任务分布`T ~ p(T)`中采样了一些任务`T[i]`。 假设我们采样了两个任务,然后是`T`
...@@ -112,7 +112,7 @@ for i in range(num_tasks): ...@@ -112,7 +112,7 @@ for i in range(num_tasks):
# 使用 MAML 构建梯度一致性算法 # 使用 MAML 构建梯度一致性算法
在上一节中,我们看到了梯度一致性算法的工作原理。 我们看到了梯度一致性如何为梯度增加权重,从而说明其重要性。 现在,我们将看到如何通过使用 NumPy 从头开始对它们进行编码,从而将梯度协议算法与 MAML 结合使用。 为了更好地理解,我们将考虑一个简单的二进制分类任务。 我们将随机生成输入数据,使用简单的单层神经网络对其进行训练,然后尝试找到最佳参数θ。 在上一节中,我们看到了梯度一致性算法的工作原理。 我们看到了梯度一致性如何为梯度增加权重,从而说明其重要性。 现在,我们将看到如何通过使用 NumPy 从头开始对它们进行编码,从而将梯度一致性算法与 MAML 结合使用。 为了更好地理解,我们将考虑一个简单的二进制分类任务。 我们将随机生成输入数据,使用简单的单层神经网络对其进行训练,然后尝试找到最佳参数θ。
现在,我们将逐步详细地了解如何执行此操作。 现在,我们将逐步详细地了解如何执行此操作。
...@@ -144,11 +144,11 @@ a = np.matmul(X, theta) ...@@ -144,11 +144,11 @@ a = np.matmul(X, theta)
YHat = sigmoid(a) YHat = sigmoid(a)
``` ```
因此,我们将梯度协议与 MAML 结合使用,以找到可在各个任务之间通用的最佳参数值`theta`。 这样一来,对于一项新任务,我们可以通过采取较少的梯度步骤,在较短的时间内从几个数据点中学习。 因此,我们将梯度一致性与 MAML 结合使用,以找到可在各个任务之间通用的最佳参数值`theta`。 这样一来,对于一项新任务,我们可以通过采取较少的梯度步骤,在较短的时间内从几个数据点中学习。
# MAML 中的梯度协议 # MAML 中的梯度一致性
现在,我们将定义一个名为`GradientAgreement_MAML`的类,在其中将实现梯度协议 MAML 算法。 在`__init__`方法中,我们将初始化所有必需的变量。 然后,我们将定义 Sigmoid 激活函数。 接下来,我们将定义`train`函数。 现在,我们将定义一个名为`GradientAgreement_MAML`的类,在其中将实现梯度一致性 MAML 算法。 在`__init__`方法中,我们将初始化所有必需的变量。 然后,我们将定义 Sigmoid 激活函数。 接下来,我们将定义`train`函数。
让我们一步一步看一下,然后看一下整体代码: 让我们一步一步看一下,然后看一下整体代码:
...@@ -484,12 +484,12 @@ Sampling Next Batch of Tasks ...@@ -484,12 +484,12 @@ Sampling Next Batch of Tasks
# 问题 # 问题
1. 什么是梯度协议和分歧? 1. 什么是梯度一致性和分歧?
2. 梯度一致性中 MAML 的更新方程是什么? 2. 梯度一致性中 MAML 的更新方程是什么?
3. 梯度协议中的权重是多少? 3. 梯度一致性中的权重是多少?
4. 权重如何计算? 4. 权重如何计算?
5. 什么是归一化因子? 5. 什么是归一化因子?
6. 我们什么时候增加和减少重? 6. 我们什么时候增加和减少重?
# 进一步阅读 # 进一步阅读
......
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
在本章中,您将了解以下内容: 在本章中,您将了解以下内容:
* 任务无关的元学习(TAML) * 任务无关的元学习(TAML)
* 元模仿学习 * 元模仿学习
* 仙人掌 * CACTUS
* 在概念空间学习 * 概念空间的学习
# 任务不可知元学习(TAML) # 任务不可知元学习(TAML)
...@@ -187,15 +187,15 @@ MIL 中涉及的步骤如下: ...@@ -187,15 +187,15 @@ MIL 中涉及的步骤如下:
# 概念空间中的元学习 # 概念空间中的元学习
现在,我们将看到如何使用深度元学习在概念空间中元学习。 首先,我们如何进行元学习? 我们在每个任务中抽样一批相关任务和一些`k`数据点,并训练我们的元学习。 我们可以将深度学习的力量与元学习结合起来,而不仅仅是使用我们的原始元学习技术进行训练。 因此,当我们对一批任务以及每个任务中的一些`k`数据点进行采样时,我们将使用深度神经网络学习每个`k`数据点的表示形式,然后对这些表示进行元学习。 现在,我们将看到如何使用深度元学习在概念空间中元学习。 首先,我们如何进行元学习? 我们在每个任务中抽样一批相关任务和一些`k`数据点,并训练我们的元学习。 我们可以将深度学习的力量与元学习结合起来,而不仅仅是使用我们的原始元学习技术进行训练。 因此,当我们对一批任务以及每个任务中的一些`k`数据点进行采样时,我们将使用深度神经网络学习每个`k`数据点的表示形式,然后对这些表示进行元学习。
我们的框架包含三个组件: 我们的框架包含三个组件:
* 概念生成器 * 概念生成器
* 概念判别器 * 概念判别器
* 元学习 * 元学习
概念生成器的作用是提取数据集中每个数据点的特征表示,捕获其高级概念,概念判别器的作用是识别和分类由概念生成器生成的概念,而元学习学习由概念生成器生成的概念。 先前的所有组件(即概念生成器,概念判别器和元学习器)都可以一起学习。 因此,我们通过将元学习与深度学习相集成来改善原始元学习。 我们的概念生成器随着新的传入数据而发展,因此我们可以将我们的框架视为终身学习系统。 概念生成器的作用是提取数据集中每个数据点的特征表示,捕获其高级概念,概念判别器的作用是识别和分类由概念生成器生成的概念,而元学习学习由概念生成器生成的概念。 先前的所有组件(即概念生成器,概念判别器和元学习器)都可以一起学习。 因此,我们通过将元学习与深度学习相集成来改善原始元学习。 我们的概念生成器随着新的传入数据而发展,因此我们可以将我们的框架视为终身学习系统。
但是这里到底发生了什么? 看下图; 如您所见,我们对一组任务进行采样,并将其提供给概念生成器,该概念生成器将学习概念(即嵌入),然后将这些概念提供给元学习器,后者将学习这些概念并将损失回馈给概念生成器。 同时,我们还将一些外部数据集提供给概念生成器,概念生成器学习这些输入的概念并将这些概念发送给概念识别器。 概念识别器预测这些概念的标签,计算损失,然后将损失发送回概念生成器。 通过这样做,我们增强了概念生成器概括概念的能力: 但是这里到底发生了什么? 看下图; 如您所见,我们对一组任务进行采样,并将其提供给概念生成器,该概念生成器将学习概念(即嵌入),然后将这些概念提供给元学习器,后者将学习这些概念并将损失回馈给概念生成器。 同时,我们还将一些外部数据集提供给概念生成器,概念生成器学习这些输入的概念并将这些概念发送给概念识别器。 概念识别器预测这些概念的标签,计算损失,然后将损失发送回概念生成器。 通过这样做,我们增强了概念生成器概括概念的能力:
...@@ -215,7 +215,7 @@ MIL 中涉及的步骤如下: ...@@ -215,7 +215,7 @@ MIL 中涉及的步骤如下:
它基本上是一个分类器,用于预测概念生成器生成的概念的标签。 因此它可以是由`θ[D]`参数化的任何监督学习算法,例如 SVM 和决策树。 它基本上是一个分类器,用于预测概念生成器生成的概念的标签。 因此它可以是由`θ[D]`参数化的任何监督学习算法,例如 SVM 和决策树。
# 元学习 # 元学习
我们的元学习器可以是`θ[M]`参数化的任何元学习算法,例如 MAML,元 SGD 或 Reptile。 我们的元学习器可以是`θ[M]`参数化的任何元学习算法,例如 MAML,元 SGD 或 Reptile。
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
# 第 3 章:原型网络及其变体 # 第 3 章:原型网络及其变体
1. 原型网络简单,高效,是最常用的少量学习算法之一。 原型网络的基本思想是创建每个类的原型表示形式,并根据类原型和查询点之间的距离对查询点(新点)进行分类。 1. 原型网络简单,高效,是最常用的少量学习算法之一。 原型网络的基本思想是创建每个类的原型表示形式,并根据类原型和查询点之间的距离对查询点(新点)进行分类。
2. 我们为每个数据点计算嵌入学习特征。 2. 我们为每个数据点计算嵌入学习特征。
3. 一旦我们了解了每个数据点的嵌入,就可以将每个类中数据点的均值嵌入并形成类原型。 因此,类原型基本上就是在类中数据点的平均嵌入。 3. 一旦我们了解了每个数据点的嵌入,就可以将每个类中数据点的均值嵌入并形成类原型。 因此,类原型基本上就是在类中数据点的平均嵌入。
4. 在高斯原型网络中,连同为数据点生成嵌入,我们在它们周围添加一个置信区域,该区域由高斯协方差矩阵表征。 拥有置信区域有助于表征单个数据点的质量,并且对于嘈杂且不太均匀的数据很有用。 4. 在高斯原型网络中,连同为数据点生成嵌入,我们在它们周围添加一个置信区域,该区域由高斯协方差矩阵表征。 拥有置信区域有助于表征单个数据点的质量,并且对于嘈杂且不太均匀的数据很有用。
5. 高斯原型网络与原始原型网络的不同之处在于,在原始原型网络中,我们仅学习数据点的嵌入,但在高斯原型网络中,除了学习嵌入之外,我们还为其添加了置信区域。 5. 高斯原型网络与原始原型网络的不同之处在于,在原始原型网络中,我们仅学习数据点的嵌入,但在高斯原型网络中,除了学习嵌入之外,我们还为其添加了置信区域。
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
4.`n`个任务进行采样,并在每个采样任务上以较少的迭代次数运行 SGD,然后按照所有任务共有的方向更新模型参数。 4.`n`个任务进行采样,并在每个采样任务上以较少的迭代次数运行 SGD,然后按照所有任务共有的方向更新模型参数。
5. Reptile 更新方程可表示为`θ = θ + ε(θ' - θ)` 5. Reptile 更新方程可表示为`θ = θ + ε(θ' - θ)`
# 第 8 章:作为优化目标的梯度协议 # 第 8 章:作为优化目标的梯度一致性
1. 当所有任务的梯度都在同一方向上时,则称为梯度一致性;当某些任务的梯度与其他任务之间存在较大差异时,则称为梯度不一致。 1. 当所有任务的梯度都在同一方向上时,则称为梯度一致性;当某些任务的梯度与其他任务之间存在较大差异时,则称为梯度不一致。
2. 梯度一致性中的更新方程可表示为: 2. 梯度一致性中的更新方程可表示为:
......
...@@ -38,8 +38,8 @@ ...@@ -38,8 +38,8 @@
本书需要以下软件: 本书需要以下软件:
* 水蟒 * Anaconda
* 蟒蛇 * Python
* 任何网络浏览器 * 任何网络浏览器
* 码头工人 * 码头工人
......
# 强化学习导论 # 强化学习导论
强化学习(**RL**)是机器学习的一个分支,其中学习是通过与环境交互来进行的。 这是面向目标的学习,不教导学习者采取什么行动; 相反,学习者从其行动的结果中学习。 随着各种算法的迅速发展,它是**人工智能****AI**)中最活跃的研究领域之一。 强化学习(**RL**)是机器学习的一个分支,其中学习是通过与环境交互来进行的。 这是面向目标的学习,不教导学习器采取什么行动; 相反,学习器从其行动的结果中学习。 随着各种算法的迅速发展,它是**人工智能****AI**)中最活跃的研究领域之一。
在本章中,您将了解以下内容: 在本章中,您将了解以下内容:
...@@ -59,7 +59,7 @@ RL 的元素在以下各节中显示。 ...@@ -59,7 +59,7 @@ RL 的元素在以下各节中显示。
# 智能体 # 智能体
智能体是做出明智决策的软件程序,它们基本上是 RL 的学习。 智能体通过与环境互动来采取行动,他们会根据自己的行动获得奖励,例如,在视频游戏中导航的超级马里奥。 智能体是做出明智决策的软件程序,它们基本上是 RL 的学习。 智能体通过与环境互动来采取行动,他们会根据自己的行动获得奖励,例如,在视频游戏中导航的超级马里奥。
# 策略函数 # 策略函数
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
1. 强化学习(**RL**)是机器学习的一个分支,其中学习是通过与环境交互来进行的。 1. 强化学习(**RL**)是机器学习的一个分支,其中学习是通过与环境交互来进行的。
2. 与其他 ML 范例不同,RL 通过训练和错误方法工作。 2. 与其他 ML 范例不同,RL 通过训练和错误方法工作。
3. 智能体是做出明智决策的软件程序,它们基本上是 RL 的学习 3. 智能体是做出明智决策的软件程序,它们基本上是 RL 的学习
4. 策略函数指定在每个状态下要执行的操作,而值函数指定每个状态的值。 4. 策略函数指定在每个状态下要执行的操作,而值函数指定每个状态的值。
5. 在基于模型的智能体中,使用以前的经验,而在无模型的学习中,则不会有任何以前的经验。 5. 在基于模型的智能体中,使用以前的经验,而在无模型的学习中,则不会有任何以前的经验。
6. 确定性的,随机的,完全可观察的,部分可观察的,离散的连续的,事件的和非事件的。 6. 确定性的,随机的,完全可观察的,部分可观察的,离散的连续的,事件的和非事件的。
......
...@@ -64,9 +64,9 @@ ...@@ -64,9 +64,9 @@
# 提升 # 提升
提升是集成学习的另一种方法。 提升的方法很多,但是人们用于整体学习的最成功,最流行的方法之一就是 **AdaBoost** 算法。 也称为**自适应增强**。 该算法背后的核心思想是,我们可以拟合一系列弱学习者,而不是单独拟合许多单独的预测变量。 下一个算法取决于上一个算法的结果。 在 AdaBoost 算法中,每次迭代都会对所有这些样本进行加权。 此处的训练数据根据以前的单个学习者或单个模型的结果进行加权。 提升是集成学习的另一种方法。 提升的方法很多,但是人们用于整体学习的最成功,最流行的方法之一就是 **AdaBoost** 算法。 也称为**自适应增强**。 该算法背后的核心思想是,我们可以拟合一系列弱学习器,而不是单独拟合许多单独的预测变量。 下一个算法取决于上一个算法的结果。 在 AdaBoost 算法中,每次迭代都会对所有这些样本进行加权。 此处的训练数据根据以前的单个学习器或单个模型的结果进行加权。
例如,在分类中,基本思想是错误分类的示例会增加权重,而正确分类的示例会失去权重。 因此,序列中的下一个学习或序列中的下一个模型更多地关注错误分类的示例。 例如,在分类中,基本思想是错误分类的示例会增加权重,而正确分类的示例会失去权重。 因此,序列中的下一个学习或序列中的下一个模型更多地关注错误分类的示例。
# 集成回归方法 # 集成回归方法
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册