写在前面
本系列博客为斯坦福大学 Stanford CS330: Multi-Task and Meta-Learning 2019 的学习笔记。博客中出现的图片均为课程演示文档的截图。笔记为课程的内容整理,主要是为了方便自己理解和回顾,若有纰漏和错误,烦请指出,谢谢 ~ 。希望对你有帮助。如需转载,请注明出处。
CS330课程传送门
如果你也好奇什么元学习,好奇为什么要学习元学习,可以先搂一眼这篇元学习课程介绍
多任务学习:
- 模型 & 训练:
模型的类型、基础架构、多任务学习的训练过程 - 挑战:
处理多任务学习问题中可能遇到的挑战 - 真实世界多任务学习的案例研究
元学习:
- 问题陈述(problem formulation)
- 元学习算法的通用基本框架(general recipe)
- 黑盒适应方法(Black-box adaptation approaches)
多任务学习基础
符号说明(notation)
我们用 θ \theta θ来描述网络的参数, x x x是网络的输入, y y y是网络的输出。即可以把该网络表示成:
f θ ( y ∣ x ) f_{\theta}(y \ |\ x) fθ(y ∣ x)
对于单任务有监督学习问题来说,数据集 D = { ( x , y ) k } \mathcal{D}=\{(x,y)_{k}\} D={
(x,y)k} ,目标为 min θ L ( θ , D ) \min\limits_{\theta}\mathcal{L}(\theta,\mathcal{D}) θminL(θ,D) 。如用典型的损失函数,负对数似然函数(NLL损失函数):
L ( θ , D ) = − E ( x , y ) ∼ D [ log f θ ( y ∣ x ) ] \mathcal{L}(\theta,\mathcal{D})=-\mathbb{E}_{(x,y)\sim\mathcal{D}}[\log f_{\theta}(y\ |\ x)] L(θ,D)=−E(x,y)∼D[logfθ(y ∣ x)]
通常我们会用反向传播来优化网络中的参数,运行诸如SGD,Adam等深度学习优化算法。
任务的定义
在上一篇就提到了这个定义,这节对“task”这个概念做一个更正式的定义
T i ≜ { p i ( x ) , p i ( y ∣ x ) , L i } \mathcal{T}_i\triangleq \{p_i(x),\ p_i(y\ |\ x),\ \mathcal{L}_i\} Ti≜{
pi(x), pi(y ∣ x), Li}
- p i ( x ) p_i(x) p