Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
大唐爆破僧
apachecn-dl-zh
提交
f35a7b80
A
apachecn-dl-zh
项目概览
大唐爆破僧
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
f35a7b80
编写于
1月 22, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-22 17:31:23
上级
b1e2c24e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
10 deletion
+10
-10
new/handson-1shot-learn-py/4.md
new/handson-1shot-learn-py/4.md
+10
-10
未找到文件。
new/handson-1shot-learn-py/4.md
浏览文件 @
f35a7b80
...
...
@@ -61,7 +61,7 @@ MAML 的目的是为模型的参数提供良好的初始化,从而以较少的
4.
对于从
`P(T)`
采样的所有
`T[i]`
,执行以下操作:
*
`T[i]`
的样本 K 训练数据点
`D[i] = (x[i], y[i])`
(对于一次学习,
`K = 1`
)。
*
前向穿过层(
`f[θ]`
),以计算
`L[T[i]]`
和
<sub>
![](
img/1a533a78-541e-43e9-aa2c-8befc6481991.png
)
</sub>
。
*
前向穿过层(
`f[θ]`
),以计算
`L[T[i]]`
和
`▽[θ] L[T[i]] f[θ]`
。
*
使用梯度下降法更新参数。 由于我们正在针对特定任务训练模型,因此我们将学习
`θ'[i]`
(特定于任务的参数):
![](
img/4848ff3d-a327-43fe-8c92-7d6f69977ac1.png
)
...
...
@@ -109,7 +109,7 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
![](
img/5a9a4fca-cdb7-4c9d-9aba-27c879fc4481.png
)
此处,
`θ[t]`
是时间步长
`t`
的参数,
`▽L
_t
`
是
`t`
时的损失梯度,并且
`α[t]`
是时间
`t`
时的学习率。
此处,
`θ[t]`
是时间步长
`t`
的参数,
`▽L
[t]
`
是
`t`
时的损失梯度,并且
`α[t]`
是时间
`t`
时的学习率。
另一方面,LSTM 单元的单元更新方程看起来像这样:
...
...
@@ -123,7 +123,7 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
![](
img/da2cd6b1-bca0-456b-8064-23bdb90ef26c.png
)
本质上,
`i[t]`
被定义为具有当前梯度,当前损失和先前学习率
<sub>
![](
img/991684d7-83b0-429c-91ef-5d41500f2726.png
)
</sub>
的组合的 Sigmoid 函数。
本质上,
`i[t]`
被定义为具有当前梯度,当前损失和先前学习率
`i[t-1]`
的组合的 Sigmoid 函数。
对于
`f[t]`
,应为 1,但为避免梯度缩小的问题,其定义如下:
...
...
@@ -135,7 +135,7 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
# 数据预处理
在一般的深度学习设置中,要在给定数据集
`D`
上训练模型,我们将数据集分为三个部分:训练,验证和测试集。 但是在元学习设置中,我们首先将数据集划分为特定于任务的集(例如,猫品种分类和狗品种分类),称为
**元集**
,例如
<sub>
![](
img/3dd71e02-585b-4faf-97b1-18515169a0a1.png
)
</sub>
。 对于每个
`D ∈ D[n]`
由
<sub>
![](
img/ecebee63-c8fc-4914-9c04-a57eb42709a7.png
)
</sub>
和
<sub>
![](
img/cef2edc3-0b4e-4301-9716-12701269e95a.png
)
</sub>
组成,因此对于
`K`
次学习,每个
<sub>
![](
img/34a3cb7f-a7ac-48d2-a9ea-3e5259206ebc.png
)
</sub>
由
`K * N`
个示例组成,其中
`N`
是类数。
在一般的深度学习设置中,要在给定数据集
`D`
上训练模型,我们将数据集分为三个部分:训练,验证和测试集。 但是在元学习设置中,我们首先将数据集划分为特定于任务的集(例如,猫品种分类和狗品种分类),称为
**元集**
,例如
`D[n]`
。 对于每个
`D ∈ D[n]`
由
`D_n_train`
和
`D_n_test`
组成,因此对于
`K`
次学习,每个
`D_n_train`
由
`K * N`
个示例组成,其中
`N`
是类数。
此后,
`D_n_train`
进一步分为三个部分:
`D_meta_train`
,
`D_meta_val`
,
`D_meta_test`
。 在这里,目标是使用
`D_meta_train`
训练
*学习算法*
,该算法可以将任何特定于任务的集合作为训练集
`D_train`
并产生 更好的分类器(学习器)。
...
...
@@ -152,15 +152,15 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
让我们开始逐步学习 LSTM 元学习器算法:
1.
首先,随机初始化 LSTM 单元的初始参数(
<sub>
![](
img/fa4d23b7-1e43-4d94-b3c1-6933ea45037e.png
)
</sub>
)。
1.
首先,随机初始化 LSTM 单元的初始参数(
`θ[0]`
)。
2.
对于
`D = 1`
至
`n`
步骤,请执行以下操作:
*
从
<sub>
![](
img/413e3fb6-3c9b-41de-942d-df2693286095.png
)
</sub>
中随机抽取
<sub>
![](
img/1be8b605-c639-4b2f-9ae5-946c9ee8db6a.png
)
</sub>
。
*
随机初始化基础学习器(分类模型)的初始参数(
<sub>
![](
img/f1056b08-996c-4b72-93b8-de37060e4271.png
)
</sub>
)。
*
从
`D_meta_train`
中随机抽取
`D_train, D_test`
。
*
随机初始化基础学习器(分类模型)的初始参数(
`θ[0]`
)。
*
对于
`t = 1`
至
`T`
步骤,重复以下步骤:
*
从
<sub>
![](
img/77764a57-316f-4a17-8712-0499a6523669.png
)
</sub>
中随机采样输入输出对
<sub>
![](
img/71e25973-354f-4d95-b3b0-56383cd261af.png
)
</sub>
。
*
使用
<sub>
![](
img/307d9408-f535-4291-88fb-e187378dc7fa.png
)
</sub>
计算基础学习器(分类模型)的损失。
*
使用单元格的基本学习器的损失(
`L
_t`
)及其梯度(
`▽[θ[t-1]] L_t
`
),更新单元格状态(
`c[t]`
) 状态方程。
*
从
`D_train`
中随机采样输入输出对
`(X[t], Y[t])`
。
*
使用
`L[t] = L(M(X[t], θ[t-1]), Y[t])`
计算基础学习器(分类模型)的损失。
*
使用单元格的基本学习器的损失(
`L
[t]`
)及其梯度(
`▽[θ[t-1]] L[t]
`
),更新单元格状态(
`c[t]`
) 状态方程。
*
将基本学习器(分类模型)参数更新为
`θ[t] = c[t]`
(请参阅 LSTM 元学习器的“架构”部分)。
结束
`T`
步骤循环。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录