目录
- 引言
- 机器学习
- 元学习
- 什么是元学习
- 元学习的流程
- 学习学习函数
- 评价学习函数好坏
- 迭代优化
- 整体框架
- 元学习和机器学习的对比
- 定义的区别
- 数据集划分的区别
- 损失函数的区别
- 两者之间的共通之处
- 总结
引言
本篇博客是李宏毅老师元学习课程的笔记。
深度学习大部分时间在调参数。在业界通常有很多计算资源供我们进行调参,在学界我们通常靠心灵感应来设置一组好的超参数。
机器学习
元学习
什么是元学习
Meta Learning被称作元学习,和机器学习一样遵循那三个步骤,不同于Machine Learning的目标是让机器能够学习,Meta Learning则是要让机器学会如何去学习。
元学习的流程
学习学习函数
训练资料是多个训练任务数据和它们对应的学习
以梯度下降算法为优化算法的网络为例,它的流程可以简述为:设计一个网络架构->给参数初始化->读入训练数据批次->计算梯度->基于梯度更新参数->进入下一轮训练->……。对于每一个具体的任务来说,它的全部算法流程就构成了一个
F
ϕ
F_{\phi}
Fϕ。其中
ϕ
\phi
ϕ就是我们要学习的可学习的参数(通常包括网络结构、初始参数、学习率…)。
评价学习函数好坏
- 机器学习用训练资料计算损失函数
- 元学习用训练任务的测试资料计算损失函数
迭代优化
当我们无法计算梯度的时候,我们可以采用强化学习和进化算法
整体框架
元训练:
分为内层和外层优化,外层用于学算法参数,内层用于学模型参数,内层是给出
w
w
w学出
θ
∗
\theta^*
θ∗,把
θ
∗
\theta^*
θ∗拿到查询集中,验证学的怎么样,如果不好,说明
w
w
w不好,通过loss去更新
w
∗
w^*
w∗,不断迭代。
元测试:
已经学到最好的算法后,在测试集的支撑集上去学一个模型,最终,
θ
∗
\theta^*
θ∗就是测试模型。
元学习和机器学习的对比
定义的区别
- 机器学习的定义表述为:根据资料找一个函数 f f f的能力
- Meta Learning的定义表述为:根据资料找一个找一个函数 f f f的函数 F F F 的能力
数据集划分的区别
- 机器学习:训练资料用于一个任务
- 元学习:训练资料被分为多个训练任务,每个训练任务包含一个支持集和一个查询集
损失函数的区别
两者之间的共通之处
- 训练任务上的过拟合(训练集上的过拟合)
- 更多的训练任务可以改善性能(更多的训练数据可以改善性能)
- 任务增强(数据增强)
- 学习学习算法时也会有超参数(学习算法时有超参数)
- 验证任务(验证集)
总结
本篇博客主要介绍了元学习的基本概念、元学习的建模流程以及元学习和机器学习的对比。
元学习将数据以任务的形式进行划分,将数据集分为很多个任务。而这些任务在类别上又可以分为训练任务和测试任务。每个任务自身可以分为支持集和查询集。
元学习不是学习一个函数,而是学习一个学习函数。
以分类任务为例:通过训练任务中的支持集进行训练得到一个学习函数,通过学习得到一个分类器,通过训练任务的查询集进行测试,计算预测值和标签的损失函数,以最小化目标函数进行优化,训练得到学习函数。测试任务的支持集用来根据学习函数训练分类器,测试任务的支持集用来进行测试。