Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lzh_me
apachecn-dl-zh
提交
16274307
A
apachecn-dl-zh
项目概览
lzh_me
/
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,发现更多精彩内容 >>
提交
16274307
编写于
12月 25, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-12-25 21:02:09
上级
45f61633
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
7 deletion
+18
-7
new/handson-meta-learn-py/06.md
new/handson-meta-learn-py/06.md
+5
-1
new/handson-meta-learn-py/08.md
new/handson-meta-learn-py/08.md
+4
-1
new/handson-meta-learn-py/09.md
new/handson-meta-learn-py/09.md
+9
-5
未找到文件。
new/handson-meta-learn-py/06.md
浏览文件 @
16274307
...
...
@@ -100,7 +100,11 @@ MAML 非常擅长寻找最佳初始参数,对吗? 现在,我们将看到
等待! 什么是训练集和测试集? 我们使用内循环中的训练集来找到最佳参数
`θ'[i]`
,并使用外循环中的测试集来寻找最佳参数
`θ`
。
**测试集并不意味着我们正在检查模型的性能。 它基本上充当外循环中的火车。 我们也可以将测试集称为元训练集。**
现在,我们在
`D_train[i]`
上应用任何监督学习算法,使用梯度下降法计算损失并最小化损失,并获得最佳参数
`θ'[i]`
,因此
`θ'[i] = θ - αᐁ[θ]L[T[i]](f[θ])`
。 因此,对于每个任务,我们对
`k`
个数据点进行采样,并最小化训练集
`D_train[i]`
上的损失,并获得最佳参数
`θ'[i]`
。 当我们采样三个任务时,我们将拥有三个最佳参数
`θ'[i]`
。
现在,我们在
`D_train[i]`
上应用任何监督学习算法,使用梯度下降法计算损失并最小化损失,并获得最佳参数
`θ'[i]`
,因此:
![](
img/d0b3cebd-6140-481a-bb50-b2eff476cd95.png
)
因此,对于每个任务,我们对
`k`
个数据点进行采样,并最小化训练集
`D_train[i]`
上的损失,并获得最佳参数
`θ'[i]`
。 当我们采样三个任务时,我们将拥有三个最佳参数
`θ'[i]`
。
4.
**外循环**
:我们在测试集(元训练集)中执行元优化-也就是说,在这里,我们尝试使测试集
`D_test[i]`
中的损失最小化。 我们通过计算相对于上一步中计算出的最佳参数
`θ'[i]`
的梯度来最小化损耗,并使用我们的测试集(元训练集)更新随机初始化的参数
`θ`
:
...
...
new/handson-meta-learn-py/08.md
浏览文件 @
16274307
...
...
@@ -225,7 +225,10 @@ class GradientAgreement_MAML(object):
YHat
=
self
.
sigmoid
(
a
)
```
我们使用梯度下降
`θ'[i] = θ - αᐁ[θ]L[T[i]](f[θ])`
计算损耗并使损耗最小化:
我们使用梯度下降计算损耗并使损耗最小化:
![](
img/d0b3cebd-6140-481a-bb50-b2eff476cd95.png
)
```
py
#since we're performing classification, we use cross entropy loss as our loss function
...
...
new/handson-meta-learn-py/09.md
浏览文件 @
16274307
...
...
@@ -134,7 +134,7 @@
但是,如何使我们的机器人从单个演示中快速学习一项任务呢? 我们可以在这里使用元学习吗? 我们可以重用演示数据并从几个相关任务中学习以快速学习新任务吗? 因此,我们将元学习和模仿学习相结合,形成
**元模仿学习**
(
**MIL**
)。 借助 MIL,我们可以利用其他各种任务的演示数据,仅需一个演示就可以快速学习新任务。 因此,我们仅需演示一个新任务就可以找到正确的策略。
对于 MIL,我们可以使用我们已经看到的任何元学习算法。 我们将使用 MAML 作为元学习算法,该算法与可以通过梯度下降训练的任何算法兼容,并且将使用策略梯度作为找到正确策略的算法。 在策略梯度中,我们使用某些参数
!
[](
img/4c09345a-d68c-473f-aeaf-d7cf2fc0ba08.png
)
直接优化参数化策略!
[](
img/86a2f626-a0c6-4686-b066-44e96bdb0c88.png
)
。
对于 MIL,我们可以使用我们已经看到的任何元学习算法。 我们将使用 MAML 作为元学习算法,该算法与可以通过梯度下降训练的任何算法兼容,并且将使用策略梯度作为找到正确策略的算法。 在策略梯度中,我们使用某些参数
`θ`
直接优化参数化策略
`π[θ]`
。
我们的目标是从单个任务的演示中学习可以快速适应新任务的策略。 这样,我们可以消除对每个任务的大量演示数据的依赖。 实际上,我们在这里的任务是什么? 我们的任务将包含轨迹。 轨迹
`tr`
包含来自专家策略的一系列观察和动作,这些经验和活动均是演示。 等待。 什么是专家策略? 由于我们正在执行模仿学习,因此我们正在向专家(人类行为)学习,因此我们将该策略称为专家策略,并以
`π*`
表示:
...
...
@@ -144,15 +144,19 @@
![](
img/bf5f36c7-cf49-4237-bee8-412a515eecb0.png
)
假设我们有任务分布
!
[](
img/bb0b7186-0661-4cc5-b988-431b4b63a3e4.png
)
。 我们对一批任务进行采样,对于每个任务!
[](
img/4da7bc33-ef0d-42b8-8f89-2051bc02a3ce.png
)
,我们对一些演示数据进行采样,通过最小化损失来训练网络,并找到最佳参数
`θ'[i]`
。 接下来,我们通过计算元梯度执行元优化,并找到最佳初始参数!
[](
img/570fb2aa-e4de-41d6-b15e-ee8a182736d4.png
)
。 我们将在下一部分中确切地了解它的工作方式。
假设我们有任务分布
`p(T)`
。 我们对一批任务进行采样,对于每个任务
`T[i]`
,我们对一些演示数据进行采样,通过最小化损失来训练网络,并找到最佳参数
`θ'[i]`
。 接下来,我们通过计算元梯度执行元优化,并找到最佳初始参数
`θ`
。 我们将在下一部分中确切地了解它的工作方式。
# MIL 算法
MIL 中涉及的步骤如下:
1.
假设我们有一个由参数!
[](
img/85eb5935-3a73-46b5-8640-2cfd910dc860.png
)
参数化的模型!
[](
img/ed115e20-4a1d-4167-bab0-8eb27a449684.png
)
,并且有一个任务!
[](
img/04636868-15b2-451d-9fbb-028f28964066.png
)
分布。 首先,我们随机初始化模型参数!
[](
img/b66aaca9-0610-4d99-9051-e5cae694f41f.png
)
。
2.
从任务分布(即!
[](
img/e2fa1e6d-dbee-46ac-af21-4d1881c86394.png
)
)中抽样一些任务!
[](
img/ae40a0d2-2055-47a7-a692-1646b9fcb70b.png
)
。
3.
**内循环**
:对于采样任务中的每个任务,我们都采样了一个演示数据-即!
[](
img/8eac4a91-cf13-4f86-96b0-a71e7c450fa5.png
)
。 现在,我们通过执行梯度下降来计算损耗并将损耗降至最低,从而获得了最佳参数
`θ'[i]`
-!
[](
img/d0b3cebd-6140-481a-bb50-b2eff476cd95.png
)
。 然后,我们还为元训练采样了另一个演示数据:!
[](
img/a5023b00-9574-48fc-ab63-1b47736c2954.png
)
。
1.
假设我们有一个由参数
`θ`
参数化的模型
`f`
,并且有一个任务分布
`p(T)`
。 首先,我们随机初始化模型参数
`θ`
。
2.
从任务分布(即
`T ~ p(T)`
)中抽样一些任务
`T[i]`
。
3.
**内循环**
:对于采样任务中的每个任务,我们都采样了一个演示数据-即
`trajectory = {o1, a1, ..., o[t], a[t]}`
。 现在,我们通过执行梯度下降来计算损耗并将损耗降至最低,从而获得了最佳参数
`θ'[i]`
:
![](img/d0b3cebd-6140-481a-bb50-b2eff476cd95.png)
然后,我们还为元训练采样了另一个演示数据:`trajectory' = {o'1, a'1, ..., o'[t], a'[t]}`。
4.
**外循环**
:现在,我们通过元优化使用!
[](
img/52f9c1bd-016c-4d11-a1f1-bc87b2d7db2e.png
)
更新我们的初始参数,如下所示:
![](
img/23c259ec-0245-4c0b-846f-d9d902a53025.png
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录