Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
li工
apachecn-dl-zh
提交
b1e2c24e
A
apachecn-dl-zh
项目概览
li工
/
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,发现更多精彩内容 >>
提交
b1e2c24e
编写于
1月 22, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-22 17:27:42
上级
54b5d615
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
12 addition
and
12 deletion
+12
-12
new/handson-1shot-learn-py/4.md
new/handson-1shot-learn-py/4.md
+12
-12
未找到文件。
new/handson-1shot-learn-py/4.md
浏览文件 @
b1e2c24e
...
...
@@ -109,7 +109,7 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
![](
img/5a9a4fca-cdb7-4c9d-9aba-27c879fc4481.png
)
此处,
<sub>
![](
img/483507cb-4cb0-4598-aa76-71fcabdafe41.png
)
</sub>
是时间步长
`t`
的参数,
<sub>
![](
img/cb291113-cc4b-4419-be0f-ab628e911b69.png
)
</sub>
是
`t`
时的损失梯度,并且
<sub>
![](
img/e58b0d63-1733-40c2-9ea3-c28b9571e685.png
)
</sub>
是时间
`t`
时的学习率。
此处,
`θ[t]`
是时间步长
`t`
的参数,
`▽L_t`
是
`t`
时的损失梯度,并且
`α[t]`
是时间
`t`
时的学习率。
另一方面,LSTM 单元的单元更新方程看起来像这样:
...
...
@@ -119,13 +119,13 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
![](
img/b38cc62b-318b-4b9e-ba28-0e5eb9a1106d.png
)
从逻辑上考虑这一点,我们只想学习
!
[](
img/76289600-d237-402b-a0df-ee71b4ae334d.png
)
,因为这与估计梯度下降的
*学习率*
基本相似。 因此,LSTM 元学习器将
<sub>
![](
img/9b675949-0d25-4b9c-a70e-76af51ca9a69.png
)
</sub>
定义如下:
从逻辑上考虑这一点,我们只想学习
`i[t]`
,因为这与估计梯度下降的
*学习率*
基本相似。 因此,LSTM 元学习器将
`i[t]`
定义如下:
![](
img/da2cd6b1-bca0-456b-8064-23bdb90ef26c.png
)
本质上,
`i[t]`
被定义为具有当前梯度,当前损失和先前学习率
<sub>
![](
img/991684d7-83b0-429c-91ef-5d41500f2726.png
)
</sub>
的组合的 Sigmoid 函数。
对于
<sub>
![](
img/f76a02ea-f996-4c81-a08f-8bf2e6bd97c1.png
)
</sub>
,应为 1,但为避免梯度缩小的问题,其定义如下:
对于
`f[t]`
,应为 1,但为避免梯度缩小的问题,其定义如下:
![](
img/1d551c2d-de09-4a7b-8657-0c310ee85bbb.png
)
...
...
@@ -137,7 +137,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`
是类数。
此后,
<sub>
![](
img/69c38655-6d44-4aa8-825a-a3edd9e03780.png
)
</sub>
进一步分为三个部分:!
[](
img/224d8b14-1e25-4552-8310-74fe1d90f03b.png
)
。 在这里,目标是使用
<sub>
![](
img/d25156e7-7e5a-4f00-a665-249a333e60c6.png
)
</sub>
训练
*学习算法*
,该算法可以将任何特定于任务的集合作为训练集
<sub>
![](
img/0d2fad60-1123-4702-825d-4107499b703b.png
)
</sub>
并产生 更好的分类器(学习器)。
此后,
`D_n_train`
进一步分为三个部分:
`D_meta_train`
,
`D_meta_val`
,
`D_meta_test`
。 在这里,目标是使用
`D_meta_train`
训练
*学习算法*
,该算法可以将任何特定于任务的集合作为训练集
`D_train`
并产生 更好的分类器(学习器)。
# 算法–伪代码实现
...
...
@@ -145,9 +145,9 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
要开始理解 LSTM 元学习器,首先,我们需要了解某些术语:
*
**基础学习器**
(
`M`
):具有特定任务的主要目标,带有参数
<sub>
![](
img/3a869193-6666-428a-9b6a-c61e430a0a72.png
)
</sub>
-例如,用于识别猫的分类器
*
**元学习器**
(
`R`
):LSTM 单元,带有参数,
!
[](
img/b72b74c6-cdc3-4fc1-bd73-fa86f86f29ad.png
)
*
**数据点**
(
`X, Y`
):从
<sub>
![](
img/413e3fb6-3c9b-41de-942d-df2693286095.png
)
</sub>
采样的数据点
*
**基础学习器**
(
`M`
):具有特定任务的主要目标,带有参数
`θ`
-例如,用于识别猫的分类器
*
**元学习器**
(
`R`
):LSTM 单元,带有参数,
`θ`
*
**数据点**
(
`X, Y`
):从
`D_meta_train`
采样的数据点
*
**损失**
(
`L`
):用于调整主要任务特定目标的损失函数,例如,二进制交叉熵损失
让我们开始逐步学习 LSTM 元学习器算法:
...
...
@@ -160,14 +160,14 @@ LSTM 在各种门的帮助下存储信息历史记录,如上图所示。 我
*
对于
`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>
计算基础学习器(分类模型)的损失。
*
使用单元格的基本学习器的损失(
<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 元学习器的“架构”部分)。
*
使用单元格的基本学习器的损失(
`L_t`
)及其梯度(
`▽[θ[t-1]] L_t`
),更新单元格状态(
`c[t]`
) 状态方程。
*
将基本学习器(分类模型)参数更新为
`θ[t] = c[t]`
(请参阅 LSTM 元学习器的“架构”部分)。
结束
`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>
)。
*
现在,从
`D_test`
中随机采样输入输出对
`(X_test, Y_test)`
。
*
使用
`L_test = L(M(X_test, θ[T]), Y_test)`
计算基础学习器(分类模型)的损失。
*
使用
`▽[θ[d-1]] Y_test`
(请参阅 LSTM 元学习器“架构”部分)更新元学习器(LSTM 单元)参数(
`θ[t]`
)。
结束
`n`
步骤循环。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录