Lecture 15:元学习Meta Learning2

news/2024/11/7 5:23:10/

目录

Meta Learning – MAML

MAML

Reptile

Meta Learning – Gradient Descent as LSTM

Meta Learning – Metric-based

Meta Learning - Train+Test as RNN


Meta Learning – MAML

Meta Learning:让机器自动找出learning algorithm

Meta Learning的三个步骤(前面笔记有写,这里简单复习一下):

step 1: Define a set of learning algorithm

step 2: Defining the goodness of a function F

Meta Learning常常跟few-shot learning一起使用

step 3: Find the best function F*

下面介绍Meta Learning的两个technique:MAML、Reptile

MAML

评价Φ的好坏:如下图,Φ本身拿去做task1和task2没有很强,但是Φ拿去做训练以后(用task1和task2的data做训练后)变得很强,那它就是一个好的Φ

MAML v.s. Model Pre-training

MAML在实作的时候,training algorithm通常只做一次update,理由如下:

  • Fast ... Fast ... Fast ...
  • Good to truly train a model with one step.
  • When using the algorithm, still update many times.
  • Few-shot learning has limited data.

MAML - Real lmplementation: MAML走两步gradient,用第二步gradient去update参数Φ

对比下pre-training:往当前Φ在training task上算出来的gradient方向移动

把MAML实作在translation的任务上,结果如下图。MAML比pre-training效果好,尤其是在训练资料量少的时候。

Reptile

Reptile和MAML、pre-train的不同:

下图是Reptile、MAML、pre-train实作在Omniglot上的结果,可以看到meta learning的方法效果明显好于pre-train的方法:

Meta Learning – Gradient Descent as LSTM

Review Recurrent Neural Network:

Review LSTM:

LSTM和gradient descent的式子有相似之处:

LSTM for Gradient Descent:

LSTM memory cell中的值,就是network的参数

LSTM for Gradient Descent在实作上,因为LSTM的memory cell不可能开的太大(1024个memory cell就算比较多的了),而network的参数通常有几万到几十万个,所以在实作上LSTM只开一个cell,所有的network参数都通过相同的LSTM训练出来:

Meta Learning – Metric-based

Metric-based是一个比较crazy的idea,它希望输入training data和testing data,能够直接输出predicted label of testing data:

后面都以Face Verification这个task为例,它是一个few-shot learning的task:

Face Verification可以当做一个meta learning的任务做:

对于上面图片中的network,我们要训练这个network能够同时做训练和测试。实际上这个network的架构最常见的设计叫做Siamese Network(可以理解为孪生网络):

Siamese Network - Intuitive Explanation(当做一个binary classification的problem去理解)

上面都是做的Verification的任务,即可以当成binary classification的任务,下面介绍如何做identification的任务,即N-way Few/One-shot Learning的任务。

N-way Few/One-shot Learning任务举例:

这种任务的network架构如何设计?下面给出三个文献上的做法:

① Prototypical Network

② Matching Network

这个network和Prototypical Network很类似,它们最大的区别在于Prototypical Network把training data的每一张图片都分开处理,Matching Network用一个bidirectional LSTM接收所有的training data。

③ Relation Network

在few-shot learning中常常遇到的问题是训练资料很少,所以我们可以让机器去generate训练资料。generator是和network一起被learn出来的。

Meta Learning - Train+Test as RNN

在上面使用过的Metric-based approach的方法,使用的是专门设计过的network architecture。Can we use general network architecture?

用一般的LSTM train不起来,修改LSTM架构(比较知名的有MANN、SNAIL)后可以train起来:

文献上结果表明SNAIL效果比较好:


http://www.ppmy.cn/news/68024.html

相关文章

matlab实验三程序设计与优化

学聪明点,自己改,别把我卖了 一、实验目的及要求 一、实验的目的与要求 1、掌握 MATLAB的函数 2、掌握 MATLAB的程序流 3、掌握 MATLAB脚本和函数文件的编写 4、熟悉基于矩阵的程序设计与优化 二、实验原理 1、MATLAB的M文件:脚本文件与函数…

MPLS格式和802.1q帧格式,ISL格式

一.MPLS IETF开发的多协议标记交换(MPLS)把第2层的链路状态信息(带宽、延迟、利用率等)集成到第3层的协议数据单元中,从而简化和改进了第3层分组的交换过程 。理论上,MPLS支持任何第2层和第3层协议。MPLS包头的位置界…

Linux下rsync+inotify实现实时文件同步

一、【接收端配置】 #cat /etc/rsyncd.conf uid root gid root max connections 8 pid file /var/run/rsyncd.pid log file/var/log/rsyncd.log hosts allow 192.168.3.0/24 [dkms] read onlyno write onlyno path/data/digitalkey/upload/dkms commentdkms update auth u…

还在为项目初始化、依赖管理问题困扰?Dubbo Initializer 来了!

作者:Dubbo 社区 通过这篇文章,你将学习如何在 1 分钟内用 Dubbo Initializer 模板快速创建 Dubbo Spring Boot 项目,帮你解决项目初始化问题。 什么是 Dubbo Initializer? Dubbo Initializer 是一款帮助开发者快速生成 Dubbo …

Doris的分区Partition和分桶Bucket介绍

Doris的分区Partition和分桶Bucket介绍 Doris数据库是一个分布式的列式存储数据库,它支持分区和分桶两种数据划分方式 分区:Doris数据库支持水平分区,即将数据按照某个字段的值进行分区,相同的值会被分配到同一个分区中。这种方…

C语言小游戏的实现——三子棋

前言 Hello!友友们,前边我们已经学习了C语言的基础知识,但单纯的理论和简单的代码演示是无法真正做到巩固所学的知识的,那么今天我将会带领大家,根据之前所学的知识,来写一个三子棋小游戏。 目录 前言 总…

PMP之预测部分

引论 什么是项目 项目是为创造独特的产品、服务或成果而进行的临时性工作。 项目管理是把事办成的方法论,万物皆可项目。 项目的基本要素 项目(独特性、临时性)、驱动变更、启动背景、创造商业价值。 组织级项目管理(OPM&am…

泰克示波器MSO54B 5-BW-1000,4通道1G带宽

泰克MSO5B系列示波器,支持广泛的特定应用测量,满足您的各种需求。单独添加高级分析程序包或安装应用程序包,以处理更多不同的工作。 支持超过 25 种串行协议,覆盖常见的接口先进的单相和三相功率分析程序包确保信号完整性和电源完…