Meta Learning 简述
先来回顾一下,传统的机器学习或者说深度学习的流程:
- 确定训练和测试数据集
- 确定模型结构
- 初始化模型参数(通常是一些惯用的随机分布)
- 初始化优化器类型和参数
- 进行训练,直到收敛
Meta Learning的目的是去学习一些在步骤2,3,4的参数,我们称之为元知识(meta- knowledge)
不妨对其进行形式化
假设数据集为 D = { ( x 1 , y 1 ) , . . . , ( x N , y N ) } D = \{(x_1,y_1),...,(x_N,y_N)\} D={(x1,y1),...,(xN,yN)} 其中 x i x_i xi 是输入, y i y_i yi 是输出标签
我们的目的是得到一个预测模型 y ^ = f ( x ; θ ) \hat{y} = f(x;\theta) y^=f(x;θ) , 其中 θ \theta θ 表示模型的参数, x x x 为输入同时 y ^ \hat{y} y^ 是预测的输出
优化的形式为:
θ
∗
=
arg
min
θ
L
(
D
;
θ
,
ω
)
\theta^*=\arg \min_{\theta} \mathcal{L}(D;\theta,\omega)
θ∗=argθminL(D;θ,ω)
其中的
ω
\omega
ω 就是元知识,包括:
- 优化器类型
- 模型结构
- 模型参数的初始分布
- …
我们会对已有的数据集
D
D
D 进行任务划分,切分成多个任务集合,每一个任务集合包括一个训练集合以及一个测试集合,其形式为:
D
s
o
u
r
c
e
=
{
(
D
s
o
u
r
c
e
t
r
a
i
n
,
D
s
o
u
r
c
e
v
a
l
)
(
i
)
}
i
=
1
M
D_{source} = \{(D^{train}_{source},D^{val}_{source})^{(i)}\}_{i=1}^{M}
Dsource={(Dsourcetrain,Dsourceval)(i)}i=1M
优化目标为:
ω
∗
=
arg
max
ω
log
p
(
ω
∣
D
s
o
u
r
c
e
)
\omega^* = \arg \max_{\omega} \log p(\omega|D_{source})
ω∗=argωmaxlogp(ω∣Dsource)
也就是在我们切分的多个任务集合中,找到一组配置(也就是元知识),使其对于这些任务来说最优。
一般称这个步骤为元训练(meta-training)
找到 ω ∗ \omega^* ω∗ 之后,便可以应用到一个目标任务数据集 D t a r g e t = { ( D t a r g e t t r a i n , D t a r g e t v a l ) } D_{target} = \{(D_{target}^{train}, D_{target}^{val})\} Dtarget={(Dtargettrain,Dtargetval)}
在这上面进行传统的训练,也就是找到一个最优的模型参数
θ
∗
\theta^*
θ∗
θ
∗
=
arg
max
θ
log
p
(
θ
∣
ω
∗
,
D
t
a
r
g
e
t
t
r
a
i
n
)
\theta^* = \arg\max_{\theta}\log p(\theta|\omega^*, D_{target}^{train})
θ∗=argθmaxlogp(θ∣ω∗,Dtargettrain)
这个步骤称之为元测试(meta-testing)