元学习(meta-learning)的通俗解释

目录

1、什么是元学习

2、元学习还可以做什么

3、元学习是如何训练的


1、什么是元学习

meta-learning 的一个很经典的英文解释是 learn to learn,即学会学习。元学习是一个很宽泛的概念,可以有很多实现的方式,下面以目标检测的例子来解释其中的思想。

在传统的目标检测任务中,我们都会为给模型海量的打了标签的数据集,本质是让模型去学习样本数据的数据分布,以期一个泛化的模型,使其可以在没有见过的图片中找到期望的目标。整个学习的过程就是相当于给模型很多某一类事物的照片,训练模型让他拥有分辨这些事物种类的能力,可以在一张没有见过的照片中找到是否有目标事物。

对于人类而言,认识一个新的种类其实并不需要看很多相关的照片,甚至只要看一眼没见过的事物就能达到在没见过的照片中准确分辨是否含有该类事物的效果,这是由于人天生的具有分辨事物异同的能力,在看到新的事物之后就能马上学习到他与已见过的事物的不同并在下次遇到时准确判断其种类。也就是人类具有学会学习的能力。

因此,相比来说,meta-learning 的目标不是让模型识别训练集里的图片并且泛化到测试集,而是让机器自己学会学习。还以目标检测为例,仍然拿一个很大的数据集来训练模型,而 meta-learning 的目标不是让模型在没见过的图片中学会分辨训练集中提到过的类别,而是让模型学会分辨事物的异同,学会分辨这两者是相同的东西还是不同的东西,当模型学会分辨异同之后再在具体的分类任务中使用极少的数据集训练很少的次数即可达到甚至超越传统目标检测训练范式的效果(这种方式也称为 Few-Shot Learning,即小样本学习)。

总的来说,当我们需要分辨的目标种类改变之后,传统的目标检测训练范式需要从头开始训练,而 meta-learning 则因为拥有了学习的(分辨异同)能力从而很快就能适应新的种类从而大大节省了从新学习的时间。下图就是对这种方法的阐述:元学习 A 通过训练任务学习到了具有分类能力的预训练网络 F_{\omega }  (F_{\omega } 是元学习的模型),使用新的类型来训练 F_{\omega } , 让他“学习”区分新的种类手机电脑得到模型  f_{\theta }  ,这个 f_{\theta } 就是可以适应新的任务的模型了。

元学习分类任务

(图片来源:火炉课堂 | 元学习(meta-learning)到底是什么鬼?_哔哩哔哩_bilibili)

这种训练方式的一种具体的实现就是孪生神经网络(Siamese Network),孪生神经网络是无监督学习的一种,下面简单介绍这种网络的原理。

孪生神经网络拥有两个输入,分别是同样大小但不是同一种类别的图片,输出是两张图片的相似度。其结构如下图

孪生神经网络

具体地,先输入含有种类1的图片1,通过网络得到一个映射的特征向量h1,然后输入含有种类2的图片2,通过同样的网络得到另外一个映射的特征向量h2,通过比较向量h1、h2(比如做差)的相似度即可确定两者是否属于同一个类别,训练过程中只需要通过大量的不同类别的图片训练网络的异同辨别能力。在具体的分类任务中,我们只需要将目标图片与已有的已知种类的图片通过预训练好的神经网络做对比,通过输出即可判断目标图片是否属于这个种类。

以上是元学习在目标检测方面的一种应用,通过元学习训练模型提取不同种类图片的特征,然后在这个预训练的模型的基础上实现快速辨别新的图片种类。“元”在中文中含有“根本、根源”的意思,在深度学习中可以理解为:知道了更深层次(更基础)的知识后更有利于以后适应新事物的能力,这也对应了其英文解释“learn to learn”的思想。

2、元学习还可以做什么

元学习是一个思想,有很广泛的应用范围。

元学习可以用来学算法。即传统的深度学习都是手工设计好的模型(比如CNN、LSTM、DNN、具体多少层、每层的size以及激活函数都是确定好的)然后我们去学习模型的参数。而元学习可以更进一步,用来学习如何设计模型、如何挑选前述的网络结构等。

另外元学习还可以学习算法的超参(比如学习率等)、模型初始化参数(直接给出一个比较好的初始化参数,然后微调,可以大大节省训练时间)等。

3、元学习是如何训练的

一般的深度学习是在数据(data)上做训练,以使模型泛化到其他数据上也有很好的效果。而元学习是在任务(task)上做训练,以使模型在没见过的任务上也做得很好。

如下图所示。首先元学习 F_{\omega } 在任务1(task1)中学习得到算法(可以是模型结构、超参、初始化参数等)f_{\theta } ,然后使用测试样本训练几次(一般一两次就可以了)F_{\omega }  得到的模型 f_{\theta } ,在测试样本中评估元学习给出的算法 f_{\theta } 好不好,进而评估元学习 F_{\omega } 好不好,因为好的算法在训练有限次时就能达到较好的效果,这样每组测试样例就可以得到一个损失,若算法不好则对应得出的损失也不好,task2 也是同样的流程。这样将每个 task 的损失加起来求平均得到最终的损失。

元学习的训练过程

(图片来源:火炉课堂 | 元学习(meta-learning)到底是什么鬼?_哔哩哔哩_bilibili)

可以看出,相比一般的深度学习过程,大部分的元学习任务在训练过程中需要计算二次导数,目前也有最新的研究表明将二次导通过一定的规则近似为一次导数更新模型不仅可以大大提升训练效率,还跟原始的二次导训练方式的性能不相上下,该部分目前仅仅了解了一下,先不做过多的学习。

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

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

相关文章

3. Java中的锁

文章目录 乐观锁与悲观锁乐观锁(无锁编程,版本号机制)悲观锁两种锁的伪代码比较 通过 8 种锁运行案例,了解锁锁相关的 8 种案例演示场景一场景二场景三场景四场景五场景六场景七场景八 synchronized 有三种应用方式8 种锁的案例实际体现在 3 个地方 从字节码角度分析 synchroni…

移动端学习:如何把exe转换成apk

exe转换成apk是怎么实现的呢?-电脑端-一门科技将exe文件转换成apk文件是一个比较常见的需求,尤其是对于一些开发者和用户来说。但是,这个过程并不是简单的复制和粘贴。在本文中,我们将介绍exe转换成apk的原理和详细介绍。首先,我们需要了解什么https://www.yimenapp.net/k…

前端sql条件拼接js工具

因为项目原因&#xff0c;需要前端写sql&#xff0c;所以弄了一套sql条件拼接的js工具 ​ /*常量 LT : " < ", LE : " < ", GT : " > ", GE : " > ", NE : " ! ", EQ : " ", LIKE : " like &qu…

【Excel PDF 系列】EasyExcel + iText 库

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …

2024程序员容器化上云之旅-第4集-Ubuntu-WSL2-Windows11版:夺取宝剑

故事梗概 Java程序员马意浓在互联网公司维护老旧电商后台系统。 渴望学习新技术的他在工作中无缘Docker和K8s。 他开始自学Vue3并使用SpringBoot3完成了一个前后端分离的Web应用系统&#xff0c;并打算将其用Docker容器化后用K8s上云。 6 夺取宝剑 &#x1f525;阅读Nigel…

FullCalendar日历组件:进行任务增删改,参考gitee例子修改

效果 参考路径 zxj/FullCalendar开发示例 - 码云 - 开源中国 (gitee.com) 代码 主页面&#xff1a;index.php <?php ob_start(); include(includes/session.inc); ?> <!DOCTYPE html> <html><head><title>日程管理</title><meta …

Vue-Cropper头像裁剪插件使用

1. 效果预览 2. 插件介绍 官网地址&#xff1a;[GitHub - xyxiao001/vue-cropper: A simple picture clipping plugin for vue](https://github.com/xyxiao001/vue-cropper?fromthosefree.com) 3 . 插件使用 下载插件 npm install vue-croppernext3 . 封装好的代码&#x…

华为云软件开发生产线CodeArts前端DevOps实践

原文链接&#xff1a;CodeArts前端DevOps实践_软件开发生产线 CodeArts_理论实践_DevOps概览 本文主要以CodeArts产品自身为背景&#xff0c;简要介绍一些在前端性能优化方面的优秀实践方法和常见问题。 在开始本文的内容之前&#xff0c;先简单介绍一下华为云CodeArts。Code…

Vue 实现页面导出A4标准大小的PDF文件,以及处理图片跨域不能正常展示的问题等

效果预览&#xff1a; 代码流程&#xff1a;首先在utils文件夹下创建htmlToPdf的js工具文件&#xff0c;然后在main.js中注册引用 htmlToPdf.js // 导出页面为PDF格式 import html2Canvas from html2canvas import JsPDF from jspdfexport default {install(Vue, options) {V…

【底层解读】ArrayList源码学习

成员变量 学习源码前&#xff0c;我们还是先看一下ArrayList中成员变量有哪些 构造函数 ArrayList一共有三个构造函数。 第一个&#xff1a;带有指定初始容量的构造函数 第二个&#xff1a;空参构造 第三个&#xff1a;包含指定集合的构造函数 OK&#xff0c;看完构造函数&a…

[算法沉淀记录] 排序算法 —— 堆排序

排序算法 —— 堆排序 算法基础介绍 堆排序&#xff08;Heap Sort&#xff09;是一种基于比较的排序算法&#xff0c;它利用堆这种数据结构来实现排序。堆是一种特殊的完全二叉树&#xff0c;其中每个节点的值都必须大于或等于&#xff08;最大堆&#xff09;或小于或等于&am…

The Grapes NFT 概览与数据分析

作者&#xff1a;stellafootprint.network 编译&#xff1a;cicifootprint.network 数据源&#xff1a;The Grapes NFT Collection Dashboard The Grapes 是一个有趣且具有吸引力的 NFT 收藏集合&#xff0c;包含 3,333 个精心制作的 NFT。这个 NFT 项目会在 2024 年再创高…