Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
白麟_嗷呜
apachecn-dl-zh
提交
45f61633
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,体验更适合开发者的 AI 搜索 >>
提交
45f61633
编写于
12月 25, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-12-25 20:57:22
上级
ce72521f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
19 deletion
+19
-19
new/handson-meta-learn-py/09.md
new/handson-meta-learn-py/09.md
+19
-19
未找到文件。
new/handson-meta-learn-py/09.md
浏览文件 @
45f61633
...
...
@@ -22,11 +22,11 @@
在本节中,我们将看到如何通过最大化和最小化熵来防止任务偏差。 我们知道熵是对随机性的一种度量。 因此,我们通过允许模型以相等的概率对预测的标签进行随机猜测来最大化熵。 通过对预测标签进行随机猜测,我们可以防止任务偏差。
我们如何计算熵? 让我们用
!
[](
img/6087a256-9774-45b7-8340-6e52d998bfd3.png
)
表示熵。 通过从!
[](
img/f4f1eb4c-7885-443c-bf79-afbf5e5a44d2.png
)
的输出概率,!
[](
img/75992912-0adb-4bc8-8e48-63a96e6dec14.png
)
到!
[](
img/75c36c61-a437-4dd5-9d3b-42d5a70ee93b.png
)
预测标签的采样中抽取!
[](
img/26b6f417-3034-4261-bfd9-932a29181534.png
)
来计算!
[](
img/eed66168-61e9-492e-a349-3a1a9c3a9f2b.png
)
的熵:
我们如何计算熵? 让我们用
`H`
表示熵。 通过从
`p[T[i]](x[i])`
中,在其
`N`
个预测标签的输出概率
`y[i, n]`
上,抽取
`x[i]`
来计算
`T[i]`
的熵:
![](
img/d06a8a87-15d6-4f3b-9f55-727575091bb1.png
)
在先前的等式中,
!
[](
img/fb5e2602-db76-4fd0-b39e-682524575e19.png
)
是模型的预测标签。
在先前的等式中,
`y_hat[i]`
是模型的预测标签。
因此,我们在更新模型参数之前将熵最大化。 接下来,我们在更新模型参数后最小化熵。 那么,最小化熵意味着什么呢? 使熵最小化意味着我们不对预测标签添加任何随机性,并且允许模型以高置信度预测标签。
...
...
@@ -38,27 +38,27 @@
![](
img/529f2456-1a7b-4e24-8962-d57281389f06.png
)
并且
!
[](
img/4788b3b9-2b77-4fd5-8afa-ed96fd04b0fe.png
)
是这两项之间的平衡系数。
并且
`λ`
是这两项之间的平衡系数。
# 算法
现在,我们将逐步了解熵 TAML 的工作原理:
1.
假设我们有一个由参数
!
[](
img/c1e0144f-78d5-48cb-8e02-0adea07d991e.png
)
参数化的模型!
[](
img/08ecbe90-9f6f-43f3-93a6-fdcec639d3fe.png
)
,并且有一个任务!
[](
img/a825dccd-bd1e-4db2-b9da-a5319bfd992c.png
)
分布。 首先,我们随机初始化模型参数!
[](
img/a65ea6f1-8004-4f5d-9a15-8f1e261747ca.png
)
。
2.
从任务分布(即
!
[](
img/40a964d2-4371-47ca-8d09-d5153bbd1460.png
)
)中抽样一批任务。 假设我们然后采样了三个任务:!
[](
img/f84bc6ff-fc89-4e29-9c66-75170c39673e.png
)
。
3.
**内循环**
:对于任务
!
[](
img/a4dd0e5f-d85f-478b-9faf-830f942b9204.png
)
中的每个任务!
[](
img/dc64c417-5f65-4d0c-99a2-c77ce2c03695.png
)
,我们对
`k`
个数据点进行采样,并准备训练和测试数据集:
1.
假设我们有一个由参数
`θ`
参数化的模型
`f`
,并且有一个任务分布
`p(T)`
。 首先,我们随机初始化模型参数
`θ`
。
2.
从任务分布(即
`T[i] ~ p(T)`
)中抽样一批任务。 假设我们然后采样了三个任务:
`T = {T[1], T[2], T[3]}`
。
3.
**内循环**
:对于任务
`T`
中的每个任务
`T[i]`
,我们对
`k`
个数据点进行采样,并准备训练和测试数据集:
![](
img/80b962fa-2b54-4df4-bc58-0183d150ca2f.png
)
![](
img/be3f03df-14ab-4879-b5bd-23c96f8e0e4a.png
)
然后,我们在训练集
!
[](
img/87369a1d-a068-4786-a32f-554506aee758.png
)
上计算损失,使用梯度下降将损失最小化,并获得最佳参数:
然后,我们在训练集
`D_train`
上计算损失,使用梯度下降将损失最小化,并获得最佳参数:
![](
img/4837d9cf-809d-4be2-8c73-c12293eb7b75.png
)
因此,对于每个任务,我们对
`k`
个数据点进行采样,准备火车数据集,最大程度地减少损失,并获得最佳参数。 由于我们采样了三个任务,因此我们将拥有三个最佳参数:
!
[](
img/de966d2a-a176-4b36-a6c9-4c928e2a3a35.png
)
。
因此,对于每个任务,我们对
`k`
个数据点进行采样,准备火车数据集,最大程度地减少损失,并获得最佳参数。 由于我们采样了三个任务,因此我们将拥有三个最佳参数:
`θ' = {θ'[1], θ'[2], θ'[3]}`
。
4.
**外循环**
:我们执行元优化。 在这里,我们尝试将元训练集
!
[](
img/9dde3f06-abe2-4303-a505-a94eb4017a07.png
)
的损失降到最低。 我们通过计算相对于最佳参数
`θ'[i]`
的梯度来最小化损耗,并更新随机初始化的参数!
[](
img/540af493-facf-4dd2-ac10-fe1ff5fbe181.png
)
; 与此同时,我们将添加熵项。 因此,我们最终的元目标变为:
4.
**外循环**
:我们执行元优化。 在这里,我们尝试将元训练集
`D_test[i]`
的损失降到最低。 我们通过计算相对于最佳参数
`θ'[i]`
的梯度来最小化损耗,并更新随机初始化的参数
`θ`
; 与此同时,我们将添加熵项。 因此,我们最终的元目标变为:
![](
img/a72d7d87-f941-421f-91ca-4f53cabe1474.png
)
...
...
@@ -70,7 +70,7 @@
# 不平等措施
我们将看到一些常用的不平等测度。 我们可以将任务
!
[](
img/008bf45e-c551-41f5-8c44-79ff27ce1989.png
)
中的损失定义为!
[](
img/3ea5c40e-8738-49b8-9423-af9382c72464.png
)
,将采样任务的平均损失定义为!
[](
img/db0ebace-acdf-4ee8-aa89-939497f36206.png
)
,将单个批次中的任务数定义为!
[](
img/8d1ed5f6-6ca7-4214-bf66-4e22db2c1c87.png
)
。
我们将看到一些常用的不平等测度。 我们可以将任务
`T[i]`
中的损失定义为
`l[i]`
,将采样任务的平均损失定义为
`l_bar`
,将单个批次中的任务数定义为
`M`
。
# 基尼系数
...
...
@@ -94,33 +94,33 @@
![](
img/a745e41b-3e5d-45cb-a7b6-0ea1465bc424.png
)
在先前的等式中,
!
[](
img/bcee2db5-ea44-4a13-8061-4961c76f0eaa.png
)
表示!
[](
img/f9b05f11-59f7-47d2-bd5f-a9d9f7408f69.png
)
的几何平均值。
在先前的等式中,
`g(l)`
表示
`l`
的几何平均值。
我们可以使用任何这些不平等度量来计算任务偏差。 因此,一旦我们使用此不平等度量来计算任务偏差,就可以通过将不平等度量插入元目标中来最小化偏差。 因此,我们可以如下重写元目标:
![](
img/6e526c5a-8aa7-4e80-b683-14edd18dc39b.png
)
在前面的等式中,
!
[](
img/0f7fc5aa-b473-4bb9-8681-88df1b6355c6.png
)
代表我们的不平等测度,!
[](
img/cd367c2f-ed8e-4f3e-9d68-42d6acf39da1.png
)
是平衡系数。
在前面的等式中,
`I(L[T[i]](f[θ'[i]]))`
代表我们的不平等测度,
`λ`
是平衡系数。
# 算法
现在,我们将逐步了解不平等最小化 TAML 的工作原理:
1.
假设我们有一个由参数
!
[](
img/53d3dc76-12a8-491b-ab66-d6b3ebde9efd.png
)
参数化的模型!
[](
img/01f9bd08-13b2-4ea7-958a-09214bf4b7c2.png
)
,并且在任务!
[](
img/3440c36e-b520-42e4-8cb3-7f2eb4f4bb32.png
)
上进行了分配。 首先,我们随机初始化模型参数!
[](
img/e4892101-3bd1-4b09-9a51-d223240a925f.png
)
。
2.
我们从任务分布(即
!
[](
img/181155d0-1308-4107-8643-3b9e9c08be85.png
)
)中抽样一批任务。 说,我们已经采样了三个任务,然后是!
[](
img/77e9b020-7613-418c-8b05-88c279662e17.png
)
。
3.
**内循环**
:对于任务
!
[](
img/254d5fa6-57c7-467d-bd1c-bb332d597f45.png
)
中的每个任务!
[](
img/78734e39-e45f-4627-86d6-c522e000c1ae.png
)
,我们对
`k`
个数据点进行采样,并准备训练和测试数据集:
1.
假设我们有一个由参数
`θ`
参数化的模型!
`f`
,并且在任务分布
`p(T)`
上。 首先,我们随机初始化模型参数
`θ`
。
2.
我们从任务分布(即
`T[i] ~ p(T)`
)中抽样一批任务。 说,我们已经采样了三个任务,然后是
`T = {T[1], T[2], T[3]}`
。
3.
**内循环**
:对于任务
`T`
中的每个任务
`T[i]`
,我们对
`k`
个数据点进行采样,并准备训练和测试数据集:
![](
img/d0798dcf-d7e3-421a-b9f1-9cbb126ce62d.png
)
![](
img/bb5e5458-c589-4d02-9aeb-f369d07c14d9.png
)
然后,我们在训练集
!
[](
img/ac05761a-910b-41a0-941d-192038b0ed57.png
)
上计算损失,使用梯度下降使损失最小化,并获得最佳参数:
然后,我们在训练集
`D_train`
上计算损失,使用梯度下降使损失最小化,并获得最佳参数:
![](
img/ff9be565-f478-4bfc-b3ec-38271235a9c2.png
)
因此,对于每个任务,我们对
`k`
个数据点进行采样,准备火车数据集,最大程度地减少损失,并获得最佳参数。 由于我们采样了三个任务,因此我们将拥有三个最佳参数
-!
[](
img/ad5ca2f5-3b9b-4896-9752-5da6e27b1681.png
)
。
因此,对于每个任务,我们对
`k`
个数据点进行采样,准备火车数据集,最大程度地减少损失,并获得最佳参数。 由于我们采样了三个任务,因此我们将拥有三个最佳参数
`θ' = {θ'[1], θ'[2], θ'[3]}`
。
4.
**外循环**
:现在,我们执行元优化。 在这里,我们尝试使训练集
!
[](
img/ccaa8c2b-480b-4fcf-a962-f82fd363bbba.png
)
的损失最小化。 我们通过计算相对于最佳参数
`θ'[i]`
的梯度来最小化损耗,并更新随机初始化的参数!
[](
img/6239621b-d5be-4ea4-b7ad-d4f027cf412c.png
)
; 与此同时,我们将添加熵项。 因此,我们最终的元目标变为:
4.
**外循环**
:现在,我们执行元优化。 在这里,我们尝试使训练集
`D_test[i]`
的损失最小化。 我们通过计算相对于最佳参数
`θ'[i]`
的梯度来最小化损耗,并更新随机初始化的参数θ
; 与此同时,我们将添加熵项。 因此,我们最终的元目标变为:
![](
img/40971ffd-4f20-4f81-875b-0210f012fa71.png
)
...
...
@@ -136,7 +136,7 @@
对于 MIL,我们可以使用我们已经看到的任何元学习算法。 我们将使用 MAML 作为元学习算法,该算法与可以通过梯度下降训练的任何算法兼容,并且将使用策略梯度作为找到正确策略的算法。 在策略梯度中,我们使用某些参数!
[](
img/4c09345a-d68c-473f-aeaf-d7cf2fc0ba08.png
)
直接优化参数化策略!
[](
img/86a2f626-a0c6-4686-b066-44e96bdb0c88.png
)
。
我们的目标是从单个任务的演示中学习可以快速适应新任务的策略。 这样,我们可以消除对每个任务的大量演示数据的依赖。 实际上,我们在这里的任务是什么? 我们的任务将包含轨迹。 轨迹
!
[](
img/7e7c4e03-a427-4d11-a400-68543655d15e.png
)
包含来自专家策略的一系列观察和动作,这些经验和活动均是演示。 等待。 什么是专家策略? 由于我们正在执行模仿学习,因此我们正在向专家(人类行为)学习,因此我们将该策略称为专家策略,并以!
[](
img/6d324076-556e-4aa0-8148-244f098007ab.png
)
表示:
我们的目标是从单个任务的演示中学习可以快速适应新任务的策略。 这样,我们可以消除对每个任务的大量演示数据的依赖。 实际上,我们在这里的任务是什么? 我们的任务将包含轨迹。 轨迹
`tr`
包含来自专家策略的一系列观察和动作,这些经验和活动均是演示。 等待。 什么是专家策略? 由于我们正在执行模仿学习,因此我们正在向专家(人类行为)学习,因此我们将该策略称为专家策略,并以
`π*`
表示:
![](
img/c52425ff-73cd-45b2-9e14-73416ae57c7d.png
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录