深度强化元学习教程---元学习概述
深度强化元学习是近期深度学习技术的一个另人瞩目的新兴领域,其利用元学习,解决了深度学习需要大数据集的问题,以及强化学习收敛慢的问题。同时元学习还可以适用于环境不断改变的应用场景,具有巨大的应用前景。
元学习概述
元学习简介
提到元学习,我们通常想到Few-Shot Learning、One-Shot Learning、Zero-Shot Learning,其实这些都是K-Shot Learning的特例。假设我们研究一个图像分类问题,每个类别中有K个图像,我们就称这个问题是K-Shot Learning。如果我们研究的问题其有N个类别,每个类别中有K个图像,我们就称这个问题是N-Way K-Shot Learning。了解这一概念,有助于大家今后阅读元学习相关论文。有一类特殊情况,就是所谓的Zero-Shot Learning,大家可能会有疑问,既然都没有训练样本,怎么进行学习呢?在这里,我们虽然没有训练样本,但是我们有这些类别的元数据,我们可以根据未知样本这些元数据,来判断样本所属类别,这与深度学习技术出现之前,计算机视觉领域的人为特征以及基于这些特征的识别方法有些相似之处。
为了能够从小样本中有效学习,元学习通常采用迭代式增量训练模式。还以图像分类为例,我们要处理的问题具有2个类别,我们决定每个类别里给5个样本,即是一个2-Way 5-Shot Learning问题。假设初始时给定的数据集为D^{0}。我们首先从D^{0}中随机取出5个第一个类别图像,5个第二个类别图像,组成支撑数据集(又叫训练数据集)D_{1}^{train},接着我们随机抽取3个第一个类别图像,2个第二个类别图像,组成查询数据集(又叫测试数据集)D_{1}^{test},其组成元学习第一个任务的数据集D_{1} \in \{ D_{1}^{train}, D_{1}^{test} \}。抽取完成后的数据集变为D^{1},我们接着从D^{1}抽取第二个数据集D_{2} \in \{ D_{2}^{train}, D_{2}^{test} \}。依此类推,生成N个任务。
在元学习中,每个任务作为一个单位,称之为片段(episode)。在每个片段中,我们D_{i}^{train}上进行训练,在D_{i}^{test}数据集上进行检验。通过一系列片段式学习,从而完成最终的学习过程。
元学习分类
元学习有很多种分类方式,从确定最优权重到学习优化器。在这里我们将元学习分为如下三类:
- 确定测度空间;
- 确定初始状态;
- 确定优化器;
确定测度空间
在这种元学习算法,我们将学习适用于当前任务的测度方法,通过度量样本间的距离,来判断样本属于哪些类别。例如我们在进行图像分类任务中,我们用同样的神经网络,从两幅图像中抽取出特征,然后计算两个图像特征的某种距离(由神经网络学习确定),然后根据距离,来判断这两幅图像是否属于同一个类别。基于测度空间元学习的主要方法有:Siamese网络、原型网络、关系网络。
确定初始状态
以图像分类为例,在传统的机器学习算法中,我们首先随机地将网络连接权值和偏置值设置为足够小的数,然后计算训练本样的代价函数,然后代价函数与连接权值和偏置值的微分,按照梯度下降算法,调整连接权值和偏置值,当代价函数值达到最小值时,也就求出了连接权值和偏置值的最优解。
在确定初始状的元学习中,我们不是随机初始化的连接权值和偏置值,我们一开始就将连接权值和偏置值设置为最优值或接近于最优值,这样我们的算法就能很快收敛,具有快速学习的能力。确定连接权值和偏置值的最优值的算法有:MAML、Reptile、Meta-SGD。
确定优化器
在传统的深度学习方法中,我们通过优化器来使代价函数的值达到最小值,从而找到连接权值和偏置值的最优解,典型的优化器包括:SGD、Ada、RMSProp、ADAM等。但是如果我们可用数据集很小,这些优化器的性能就会急剧恶化。以图像分类问题为例,为了解决这个问题,我们将用于图像分类的网络称之为基础网络,用于学习优化器的网络叫做元网络,我们使用元网络来优化基础网络。
https://www.toutiao.com/a6718995499547886088/
深度强化元学习教程---元学习概述相关推荐
- 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?
2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...
- 2023最新java学习教程(学习路线+课程大纲+视频教程+面试题+学习工具)
2023最新java学习教程汇总(学习路线+课程大纲+视频教程+面试题+学习工具) 目录 一.首先要了解什么是JAVA? 二.Java发展及就业前景分析 三.Java学习路线图 四.Java课程大纲 ...
- 2019软件测试学习教程(学习路线+课程大纲+视频教程+学习工具)
软件测试行业不仅就业前景好,同时非常容易入门,对于新手和零基础学习者没有学习门槛,使得软件测试深得学生群体的喜爱和关注,同时也吸引了大批女同学转行从事程序员.接下来附上软件测试入门学习线路图以及学习视 ...
- 零基础学前端之SEO 基础知识学习--SEO优化学习教程【学习笔记】
[前端总路线学习笔记] 本笔记的参考视频–SEO 基础知识学习视频 SEO优化学习教程学习笔记 SEO用到的网站 1.百度指数 2.站长之家 1.什么是SEO – 搜索引擎优化 Search Engi ...
- (论文分析)基于深度强化学习方法的有效边缘学习激励机制设计
论文题目:An Incentive Mechanism Design for Efficient Edge Learning by Deep Reinforcement Learning Approa ...
- oTree学习教程(一)概念性概述
概念概述 Sessions 在oTree中,会话是指多个参与者参与一系列任务或游戏的事件.会话的一个例子是: "许多参与者将来到实验室并进行公共产品游戏,然后进行问卷调查.参与者获得的奖金为 ...
- 2019最新Linux云计算学习教程(学习路线+课程大纲+面试题+视频教程+网盘下载)
没有相关的视频教程及相关的学习线路,学起来是一件很费劲的事情,还有很多人从网上及其它渠道购买视频,这些视频资料大多是盗版,上当受骗的人不在少数.为此千锋小编呕心沥血整理了这套零基础全套Linux云计算 ...
- 超详细的springBoot学习教程,springboot学习看这篇就够了
springBoot学习 https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/index.html (官方文档) ...
- kitten编程猫 学习教程(一) 学习笔记
Scratch 是一款由麻省理工学院媒体实验室开发的图形化编程语言和在线社区.它的目标是帮助孩子们学习编程,并培养创造力和解决问题的能力.使用 Scratch,孩子们可以通过拖拽和连接不同的代码块来创 ...
最新文章
- hdu 1286( 欧拉函数 )
- 基于多准则决策分析的多因素降维方法检测基因基因相互作用 Multi-factor dimensionality reduction method based on multi-criteria dec
- android中SELINUX规则分析和语法简介
- Android APP破解利器Frida之反调试对抗
- 如何更规范化编写 Java 代码
- 5G NR基础参数及帧结构
- iOS UIWebView URL拦截
- Elasticsearch7.15.2 mysql8.0.26 logstash-input-jdbc 数据全量索引构建
- Android 数据访问之External Storage 数据保存在sd卡 demo+笔记
- 计算机网络—路由器(Cisco Packet Tracer)常用的命令总结
- C++基础 ----- 文件操作
- POJ3080Blue Jeans
- 2018私塾在线高级java软件架构师实战培训最新
- 安全标准ISO 17799/27001
- Markdown编辑器简单大概语法学习
- MOS开关管的选择及原理应用
- 如何写出好文案,不妨看看这篇(上)
- 【无标题】软件企业认定条件(双软企业认定条件2022)
- :aria-checked_动手使用ARIA:首页元素和标准导航
- 学术海报Poster-- 模板分享
热门文章
- 守护线程不一定执行finally块
- Java反射原理剖析一
- JVM class加载机制的总结 收藏
- mysql面试关联查询语句_MySQL百万级、千万级数据多表关联SQL语句调优
- 微软亚洲研究院副院长刘铁岩:以计算之矛攻新冠之盾
- LIVE 预告 | CVPR 2021 预讲 · 旷视专场,覆盖目标检测、蒸馏、图像降噪、人体姿态估计等...
- 10 个最值得 Python 新人练手的有趣项目
- 大脑天天超负荷,三分天赋,七分练,世间惊现普通脑修炼秘籍
- 目标检测 - Tensorflow Object Detection API
- CMU创建一个开源的AI代码生成模型,C语言表现优于Codex