Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
apachecn-dl-zh
提交
175458a9
A
apachecn-dl-zh
项目概览
OpenDocCN
/
apachecn-dl-zh
10 个月 前同步成功
通知
298
Star
83
Fork
35
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
175458a9
编写于
1月 22, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-22 17:15:32
上级
1f195fc1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
21 deletion
+23
-21
new/handson-1shot-learn-py/3.md
new/handson-1shot-learn-py/3.md
+23
-21
未找到文件。
new/handson-1shot-learn-py/3.md
浏览文件 @
175458a9
...
...
@@ -157,7 +157,7 @@ MANN 的读取操作与 NTM 的读取操作非常相似,唯一的区别是此
在 MetaNet 中,学习器的损失梯度是任务的
*元信息*
。 MetaNet 还有一个重要的问题:它如何使用快速权重和慢速权重进行预测?
在 MetaNet 中,将慢速权重和快速权重组合在一起,以在神经网络中进行预测,如下图所示。 在这里,
<sub>
![](
img/82d28676-d274-492d-b225-f62ea1afb9e4.png
)
</sub>
表示元素方式的和:
在 MetaNet 中,将慢速权重和快速权重组合在一起,以在神经网络中进行预测,如下图所示。 在这里,
`⊕`
表示元素方式的和:
![](
img/e3036523-f829-413a-85ad-fe9838ae6684.png
)
...
...
@@ -167,7 +167,7 @@ MANN 的读取操作与 NTM 的读取操作非常相似,唯一的区别是此
元网络也遵循与匹配网络相似的训练过程。 在此,训练数据分为两种类型:支持集
`S = (x'[i], y'[i])`
和测试集
`U = (x[i], y[i])`
。
请记住,目前,我们有四个网络(
<sub>
![](
img/b1693cef-6856-4f5b-8d6a-166d3b849467.png
)
</sub>
)和四组要学习的模型参数
`(θ, ϕ, w, v)`
。 让我们看一下算法的所有步骤:
请记住,目前,我们有四个网络(
`f[θ], g[φ], F[w], G[v])`
)和四组要学习的模型参数
`(θ, ϕ, w, v)`
。 让我们看一下算法的所有步骤:
![](
img/6a8a41af-c6a4-471a-8998-920cf7d1d0c7.png
)
...
...
@@ -175,34 +175,36 @@ MANN 的读取操作与 NTM 的读取操作非常相似,唯一的区别是此
1.
支持集
`S`
的样本的
`K`
个随机对。
对于
<sub>
![](
img/21e8c030-3401-4dec-b8eb-5c922c3aa143.png
)
</sub>
:
对于
`t = 1, ..., K`
:
*
通过嵌入函数
<sub>
![](
img/b26cfb6e-a6ea-4326-b855-dd57be08b573.png
)
</sub>
正向传播数据点。
*
计算交叉熵损失(
<sub>
![](
img/201c9639-7931-42b8-a935-4ace8e8690cb.png
)
</sub>
)。
*
通过嵌入函数
`f[θ]`
正向传播数据点。
*
计算交叉熵损失(
`L_emb`
)。
2.
通过 LSTM 网络向前传递数据以计算
<sub>
![](
img/c1484e71-bd8d-4319-9cb9-0a723f9f3f9d.png
)
</sub>
:
<sub>
![](
img/4fd9eb0f-60a7-4fec-920a-1c1a76a31443.png
)
</sub>
。
2.
通过 LSTM 网络向前传递数据以计算
`θ⁺`
:
`θ⁺ = F[w](▽L_emb)`
。
3.
接下来,遍历支持集
`S`
中的示例,并为每个示例计算快速权重。 同时,使用获得的嵌入内容更新外部存储器。
对于
<sub>
![](
img/3f9aefb6-5729-4162-bbb2-5f4e87a58375.png
)
</sub>
:
对于
`i = 1, ..., K`
:
*
将基本学习器
<sub>
![](
img/0f0f38db-1693-4019-a341-71d502ff77ef.png
)
</sub>
(例如,分类模型)向前传递,并计算损失函数
<sub>
![](
img/e1f67072-e37f-43d6-9754-596825823ed8.png
)
</sub>
(例如,交叉熵)。
*
计算基本学习器梯度
<sub>
![](
img/3d68485f-50b6-4efc-8813-8a1413780300.png
)
</sub>
,并使用它们来计算示例级快速权重
<sub>
![](
img/6b83e258-f733-4a61-b5f0-b950d7a3447c.png
)
</sub>
。
*
将基础学习器
<sub>
![](
img/b7a895fd-baa2-4fd6-a461-02d1d97e3e50.png
)
</sub>
的计算得出的快速权重存储在存储器的
`M`
部分的
`i`
位置处。
*
在嵌入网络中使用
<sub>
![](
img/fc3bd131-8270-4ec7-a311-27712cbbb4bb.png
)
</sub>
合并快速权重和缓慢权重。
*
将支持样本转发通过嵌入网络并获得嵌入
<sub>
![](
img/be762b21-d7be-4b10-8ec6-b753b2a3f4c2.png
)
</sub>
。
*
将
<sub>
![](
img/b1a785c2-dbb1-4d6e-97a8-d2cf40e9100f.png
)
</sub>
存储在内存
`R`
的
`k`
部分的
`i`
位置。
*
将基本学习器
`g[φ](x[i])`
(例如,分类模型)向前传递,并计算损失函数
`L_task[i]`
(例如,交叉熵)。
*
计算基本学习器梯度
`▽L_task[i]`
,并使用它们来计算示例级快速权重
`φ⁺[i] = G[v](▽L_task[i])`
。
*
将基础学习器
`φ⁺[i]`
的计算得出的快速权重存储在存储器的
`M`
部分的
`i`
位置处。
*
在嵌入网络中使用
`⊕`
合并快速权重和缓慢权重。
*
将支持样本转发通过嵌入网络并获得嵌入
`r'[i] = f[θ,θ⁺](x[i])`
。
*
将
`r'[i]`
存储在内存
`R`
的
`k`
部分的
`i`
位置。
4.
最后,是时候使用测试集
`U = (x[i], y[i])`
构建训练损失了。 从
<sub>
![](
img/bee139d6-e94e-441b-97bb-a200ca5c2d31.png
)
</sub>
开始。
4.
最后,是时候使用测试集
`U = (x[i], y[i])`
构建训练损失了。 从
`L_train = 0`
开始。
对于
<sub>
![](
img/a0a602d8-ee63-4dcd-8c28-89fdce09a658.png
)
</sub>
:
对于
`j = 1, ..., L`
:
*
将测试样本转发通过嵌入网络,并获得测试嵌入
!
[](
img/5d24deb2-37ef-4bdf-ad8b-eada7c9aa5ca.png
)
。
*
计算支持集的存储嵌入
`R`
和获得的嵌入
<sub>
![](
img/9d54431c-bdef-453c-9deb-210cb464738b.png
)
</sub>
之间的相似度。 您可以使用
<sub>
![](
img/03d3b70a-00f5-402c-b211-8bab70416333.png
)
</sub>
来执行此操作。 在此,
`R`
是指存储在外部存储器中的数据。
*
现在,通过使用支持集样本(
`M`
)的快速权重来计算基础学习器的快速权重(
<sub>
![](
img/41926d4a-5319-4280-9dfd-a9c61c8d32ee.png
)
</sub>
)。 您可以使用
<sub>
![](
img/71fb925b-26c9-48f8-8881-c2c7584123bd.png
)
</sub>
来执行此操作。 在此,
`M`
是指存储在外部存储器中的数据。
*
使用最新的
<sub>
![](
img/d8f9d717-265c-4374-8279-aa325b91498c.png
)
</sub>
将测试样本向前传递通过基本学习器,并计算损失函数
<sub>
![](
img/e1f67072-e37f-43d6-9754-596825823ed8.png
)
</sub>
。
*
使用
<sub>
![](
img/14423e78-c644-4cec-b7dc-f5879e000a7a.png
)
</sub>
更新训练损失。
*
将测试样本转发通过嵌入网络,并获得测试嵌入
`r'[i] = f[θ,θ⁺](x[j])`
。
*
计算支持集的存储嵌入
`R`
和获得的嵌入
`r[j]`
之间的相似度。 您可以使用
`a[j] = cos(R, r[j])`
来执行此操作。 在此,
`R`
是指存储在外部存储器中的数据。
*
现在,通过使用支持集样本(
`M`
)的快速权重来计算基础学习器的快速权重(
`φ⁺`
)。 您可以使用
`φ⁺[j] = softmax(a[j])^T M`
来执行此操作。 在此,
`M`
是指存储在外部存储器中的数据。
*
使用最新的
`φ⁺`
将测试样本向前传递通过基本学习器,并计算损失函数
`L_task[i]`
。
*
使用
公式更新训练损失:
5.
使用
<sub>
![](
img/2c7b6001-b226-47b4-ab23-4296938f9944.png
)
</sub>
更新所有参数
`(θ, ϕ, w, v)`
。
![](img/14423e78-c644-4cec-b7dc-f5879e000a7a.png)
5.
使用
`L_train`
更新所有参数
`(θ, ϕ, w, v)`
。
在选择嵌入网络时,元网络使用 LSTM 架构。 如我们所见,匹配网络和 LSTM 元学习器也遵循相同的策略,分别用于提取数据和元信息的上下文嵌入。 这是因为 LSTM 架构倾向于记住历史,这使得元学习器的目标能够跨任务提取重要信息。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录