Meta-learning

news/2024/4/26 17:30:02/文章来源:https://blog.csdn.net/kuxingseng123/article/details/128102891

基本理解

meta learning翻译为元学习,也可以被认为为learn to learn

元学习与传统机器学习的不同在哪里?

元学习与传统机器学习, 这里举个通俗的例子,拿来给大家分享?

  • 把训练算法类比成学生在学校学习,传统的机器学习任务对应的是每个科目上分别训练一个模型,而元学习是提高学生的整体学习能力,学会学习。

  • 学校中,有的学科各科成绩都很好,有的学生却普遍存在偏科的现象。

  • 各科成绩都很好,说明各科的元学习能力强,学会了如何学习,可以迅速使用不同科目的学习任务

  • 偏科学生元学习能力较弱,只能某一科学习成绩较好,换门科就不行了,不会举一反三,触类旁通。

现在经常使用的深度学习网络是偏科生分类和回归对应的网络模型完全不同,即使同样是分类任务,把人脸识别的网络架构用在分类ImageNet数据上**,也未必能达到很高的准确率**。

还有一个不同点:

  • 传统的深度学习方法都是从头开始学习(训练),即learning for scratch。对算力和时间都是更大的消耗和考验。
  • 元学习强调的是从不同的若干小任务和小样本来学习一个对未知样本未知类别都有好的判别和泛化能力的模型

基本思想

写在前面,图片均来自对李宏毅老师的教学视频。
在这里插入图片描述
对图1的解释:
Meta learning 有称为learn to learn。是说让机器学习学会学习,拥有学习的能力。

元学习的训练样本和测试样本都是基于任务的,通过不同类型的任务训练模型,更新模型参数,掌握学习技巧。然后举一反三,更好地学习其他任务。比如:任务1是语音识别、任务2是图像识别⋯\cdots任务100是文本分类。任务101与前面的100个任务模型均不同,训练任务即为这100个不相同的任务,测试任务为第101个
在这里插入图片描述
对图2的解释:
在机器学习中,训练样本的训练集称为train set 测试集称为test set。 元学习广泛应用于小样本学习中,在元学习中,训练样本的训练集称为$support set ,训练样本的测试集叫做,训练样本的测试集叫做,query set$.

注意:在机器学习中,只有一个大样本数据集,将这个一个大数据集分成两部分,称为train set test set

但是在元学习中,不只有一个数据集,有多少个不同的任务,就有多少个数据集,然后每个数据集又分成两个部分:分别称为:
supportset和querysetsupport set和query setsupportsetqueryset.
这里没有考虑验证集:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i3ZaLzEw-1669718326587)(https://img-加粗样式blog.csdnimg.cn/img_convert/19d51bbe90254071612ea8ac627eb2bb.webp?x-oss-process=image/format,png#pic_center)]
图3 为传统深度学习操作方式:即:

  • 定义一个网络结构
  • 初始化参数
  • 通过自己选择优化器来更新参数
  • 通过两次epoch进行参数更新》
  • 得到网络的最终输出。

元学习与传统深度学习联系在哪里?

图3中红色方框的东西是认为设计的,即我们常说的超参数
而元学习的目标都是去自动学习或者说代替放宽中的东西,不同的代替方式就发明出不同的元学习算法

在这里插入图片描述
对图4的解释:

  • 图4简单介绍了元学习的原理:
    • 在神经网络算法,都需定义一个损失函数来评价模型的好坏,元学习的损失都是通过NNN个任务的测试损失相加的,定义在第NNN个任务的测试损失相加是lnl^nln.对于NNN个任务来说,
  • 总的损失为:L(F)=∑n=0nlnL(F) = \sum^n_{n = 0}l^nL(F)=n=0nln,这就元学习的优化目标。

假设两个任务Task1Task1Task1Task2Task2Task2,通过训练任务1,得到任务1的损失函数l1l_1l1,通过训练任务2,得到任务2损失为l2l_2l2,然后将这两个任务损失函数相加,得到整个训练任务的损失函数,即图4右上角的公式。

如前文对元学习的了解不够,后面还有更加详细的解释。
Meta learning的算法有很多,有的高大上的算法可以i针对不同的训练任务,输出不同的神经网络结构和超参数。例如:
$ Neural Architecture Search (NAS) 和 AutoML。这些算法大多都相当复杂,我们普通人难以实现,另外一种比较容易实现Metalearning算法,就是本文要介绍的。这些算法大多都相当复杂,我们普通人难以实现,另外一种比较容易实现Meta learning算法,就是本文要介绍的MetalearningMAML 和 Reptile$。不改变深度神经网络结构,只改变网络的初始化参数

MAML

理解MAML算法的损失函数的含义和推导过程。首先的与pre-trainiing区分开来。

对图5的解释:
我们定义初始化参数为ϕ\phiϕ,其初始化参数为ϕ0\phi_0ϕ0,定义在第nnn个测试任务上,训练之后的模型参数为θn^\hat{\theta^n}θn^,于是MAML的总损失函数为:L(ϕ)=∑n=1nln(θn^)L(\phi) = \sum^n_{n = 1}l^n(\hat{\theta^n})L(ϕ)=n=1nln(θn^)

maml损失算法图解

在这里插入图片描述

MAL与pre-training有什么影响?

损失函数不同

MAML的损失函数为:L(ϕ)=∑n=1nln(θn^)L(\phi) = \sum^n_{n = 1}l^n(\hat{\theta^n})L(ϕ)=n=1nln(θn^)
预训练的损失函数为:L(ϕ)=∑n=1nln(ϕ)L(\phi) = \sum^n_{n = 1}l^n(\phi)L(ϕ)=n=1nln(ϕ)
直观上理解是MAML所测评的损失是在任务训练之后测试loss。而预训练直接在原有基础上球损失没有经过的训练。如图6所示:
在这里插入图片描述

优化思想不同

这里先分享以下,我们看到对损失函数的生动描述。
损失函数奥妙:初始化参数掌控全场,分任务参数各自为营

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
李宏毅老师在这里举了个很生动比喻:
他把MAML比作选择读博,即更在意的是学生的以后的发展潜力;而model pre-training就相当于选择毕业直接去大厂工作,马上就把所学技能兑现金钱,在意的是当下表现如何。如图9所示。

在这里插入图片描述
MAML的优点级特点:

  • 计算速度快
  • 所有更新参数步骤都被限制在了一次:级one -step。
  • 在用这个算法时,即测试新任务的表现可以更新更多次。
  • 适用于数据有限的情况。
    在这里插入图片描述
    MAML的工作机理
    在这里插入图片描述
  • Require1:task的分布,即随机抽取若干个task组成任务池
  • Require2:step size是学习率,MAML基于二重梯度,每次迭代包括两次参数更新的过程,所以有两个学习率可以调整。
  • 随机初始化模型的参数
    循环,可以理解为一轮迭代过程或一个epoch
  • 随机对若干个task采样,形成一个batch。
  • 对batch中的每一个task进行循环
  • 对利用batch中的某一个task中的support set,计算每个参数的梯度。在N-way K-shot的设置下,这里的support set应该有NK个。(N-way K-shot意思是有N种不同的任务,每个任务有K个不同的样本)。
  • 第一次梯度的更新。
    结束第一次梯度更新
  • 第二次梯度更新。这里用的样本是query set。步骤8结束后,模型结束在该batch中的训练,开始回到步骤3,继续采样下一个batch。

有一个对MAML更直观的图:
在这里插入图片描述
在这里插入图片描述

MAML的应用: Toy Example

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
针对前面MAML,提出一个问题:
在这里插入图片描述

Reptile 其算法图如下:

在这里插入图片描述
在这里插入图片描述
其伪代码如下:
在这里插入图片描述
在这里插入图片描述
在Reptile中:

  • 训练任务的网络可以更新多次。
  • reptile不再项MAML一样计算梯度,而是直接用一个参数∈\in乘以meta 网络,与训练任务网络参数的差来更新meta 网络参数
  • 从效果看Reptile与,MAML基本持平。
    以上为对元学习的深入理解,后续可能出MAML数学公式推导,感兴趣请点赞留言。

总结

慢慢的将各种元学习进一步的搞定,都行啦的样子与打算。
先大致了解一波,然后开始慢慢的研究元学习,并将其研究透彻。
全部都将其搞定都行啦的样子与打算。

总结

可以类比集成学习的方式来进行元学习的学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_39021.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【华为上机真题 2022】字符串分隔

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

[附源码]计算机毕业设计springboot环境保护宣传网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

后端存储实战课总结(上)

创建和更新订单 表设计 最少应该有以下几张表: 订单主表:保存订单基本信息订单商品表:保存订单中的商品信息订单支付表:保存订单支付和退款信息订单优惠表:保存订单的优惠信息 订单主表和字表是一对多关系&#xf…

1.1 统计学习方法的定义与分类

统计学习方法的定义与分类统计学习的概念统计学习的定义统计学习运用到的领域统计学习的步骤统计学习的分类统计学习的概念 统计学习的定义 统计学习 (Statistical Machine Learning) 是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。 以计…

第五站:操作符(终幕)(一些经典的题目)

目录 一、分析下面的代码 二、统计二进制中1的个数 解一:(求出每一个二进制位,来统计1的个数) 解二:(利用左我们移或右移操作符和按位与) 解三:(效率最高的解法&…

【iOS】—— GET和POST以及AFNetworking框架

GET和POST以及AFNetworking框架 文章目录GET和POST以及AFNetworking框架GET和POSTGET和POST区别GETGET请求步骤GET请求代码POSTPOST请求步骤POST请求代码AFNetworking简介添加头文件GETGET方法GET方法参数GET方法代码样例POSTPOST方法第一种:第二种:先来…

C++:STL之Vector实现

vector各函数 #include<iostream> #include<vector> using namespace std;namespace lz {//模拟实现vectortemplate<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//默认成员函数vector(); …

Netty进阶——粘包与半包(代码示例)

目录一、消息粘包和消息半包的概述1.1、消息粘包1.2、消息半包二、粘包现象代码示例2.1、粘包现象服务端示例代码2.2、粘包现象客户端示例代码2.3、分别启动服务端&#xff0c;客户端&#xff0c;查看服务端结果输出三、半包现象代码示例3.1、半包现象服务端示例代码3.2、半包现…

【强化学习论文】小样本策略泛化的提示决策转换器

文献题目&#xff1a;Prompting Decision Transformer for Few-Shot Policy Generalization 摘要 人类可以利用先前的经验并从少量演示中学习新任务。与旨在通过更好的算法设计实现快速适应的离线元强化学习相比&#xff0c;我们研究了架构归纳偏差对少样本学习能力的影响。我…

不懂单链表? 这篇文章就帮你搞明白

坚持看完&#xff0c;结尾有思维导图总结 链表对指针的操作要求不低链表的概念链表的特性链表的功能(最重要)定义和初始化头插头删细节说明尾插尾删寻找链表元素与打印链表在 某位置后插入删除在某位置的插入删除销毁链表链表的概念 什么是链表 官方概念&#xff1a;链表是一种…

显卡---显卡驱动---CUDA---Cudnn

1. 背景 最近在follow百度的CAE这篇论文时&#xff0c;源码需要的环境为&#xff1a; python 3.7 cuda: 11.0 cudnn: 8.0.4 gcc 8.2 该版本要求与我目前使用的服务器上的CUDA版本不相符合。因此搜索了一篇国外小哥的文章&#xff0c;讲述了如何在一台服务器上安装多个CUDA和Cud…

Node之Express学习笔记

一.Express 1.1什么是Express Express的作用和Node.js内置的http模块类似 专门用来创建Web服务器的 本质&#xff1a;npm上的第三方包&#xff0c;提供快速创建Web服务器的便捷方法 1.2Express能做什么 Web网站服务器&#xff1a;专门提供Web网页资源的服务器 API接口服务器&…

FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)

1、大家好&#xff0c;今天给大家带来的内容是&#xff0c;基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧&#xff08;PS侧数据发送至PL侧并没有实现&#xff0c;但是保留了PL读取PS测数据的接口&#xff09; 2、如果大家用到SoC这种高级功能&#xff0c;那大家应该对于…

Linux进阶-进程间通信(ipc)

进程间通信&#xff1a;数据传输、资源共享、事件通知、进程控制。 Linux系统下的ipc 早期unix系统 ipc&#xff1a;管道&#xff08;数据传输&#xff09;、信号&#xff08;事件通知&#xff09;、fifo&#xff08;数据传输&#xff09;。 system-v ipc&#xff08;贝尔实…

Kubernetes之Pod初始化容器

Kubernetes之Pod初始化容器 概述 ​ 初始化是很多编程语言普遍关注的问题&#xff0c;甚至有些编程语言直接支持模式构造来生成初始化程序&#xff0c;这些用于进行初始化的程序结构称为初始化器或初始化列表。初始化代码要首先运行&#xff0c;且只能运行一次&#xff0c;它们…

CAPM资产定价模型

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 CAPM(Capital Asset Pricing Model)资产定价模型 这个模型在金融界的影响就是beta这个词的使用。CAPM模型用两个部分的回报之和来解释一个资产的回报。其中一个部分是指市场&#xff08;称为market)…

时间序列:时间序列模型---自回归过程(AutoRegressive Process)

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 这次我们构造一个由无限的白噪声实现&#xff08;white noise realization) 组成的时间序列&#xff0c;即。这个由无限数目的项组成的值却是一个有限的值&#xff0c;比如时刻的值为&#xff0c; 而…

Magic Leap 2设计和开发幕后花絮

Magic Leap今年发布新款AR头显Magic Leap 2&#xff0c;相比于上一代Magic Leap 1&#xff0c;新品更专注于B端场景&#xff0c;自公布以来&#xff0c;Magic Leap不仅对公司策略、理念更加透明&#xff0c;也不断公开ML2产品设计背后的思考。相比于ML1&#xff0c;ML2的设计有…

粒子群算法查找函数最小值

实现 函数 F01、F06 的优化测试 以下内容是现有算法的运行结果、调参分析、及代码实现&#xff0c;用于给其他人提供参考&#xff0c;懒得改了hh 1. 运行结果 参数 w 0.5 &#xff08;可更改&#xff09; c1 2.0 &#xff08;可更改&#xff09; c2 2.0 &#xff08;可更改&…