论文阅读 | Sharp-MAML: Sharpness-Aware Model-Agnostic Meta Learning, ICML2022

2023-05-16

1. motivation

模型不可知元学习(MAML)是目前小样本元学习的主要方法之一。尽管MAML有效,但由于固有的双层结构,其优化可能具有挑战性。具体而言,这种双层结构使得MAML的损失面可能有更多的鞍点和局部极小值,也就更容易陷入局部最优,而不是其经验风险最小化对应值。

 2. contribution

为了尽可能的避免陷入局部最优,本文利用最近的锐度感知最小化(sharpness aware minimization),提出了一种sharpness aware MAML方法,称之为Sharp-MAML。

实验部分Sharp-MAML达到了SOTA的效果。文中理论部分也进行了Sharp-MAML的收敛速度分析和泛化边界分析来补充实证研究。

3. 锐度感知最小化(SAM)

SAM利用损失面的几何形状,通过同时最小化损失值和损失锐度来提高泛化性能(Sharpness-aware minimization for efficiently improving generalization,ICLR 2021)。

SAM的优化问题为:

如果定义sharpness为:

那么SAM的优化目标就是最小化sharpness和经验损失的和。SAM通过在每次迭代t中进行如下步骤来寻找平坦最小值,即:

4. Sharp-MAML

MAML具有多个局部和全局最小值的复杂损失情况,这可能产生相似的经验损失值,同时具有显著不同的泛化性能。本文提出将SAM与MAML相结合给出了一个新的优化问题。

1) Sharp-MAML问题定义

使用两个非负的超参数和给出sharp的问题定义:

相比于MAML是一个双层优化问题,sharp-MAML是一个四层优化问题,但在算法设计中,将有效地近似(P)中的两个最大值,因此Sharp-MAML的成本几乎与MAML相同。

 2)Sharp-MAML的三种变体

  • Sharp-MAML_{low}: SAM只应用在任务内部更新过程:

  • Sharp-MAML_{up}:SAM只应用在元更新过程:

  •  Sharp-MAML_{both}:SAM同时应用在任务内部更新过程和元更新过程。

    对于任务m,perturbation的计算为:

    那么对于每个任务都能够计算得到任务参数:

    在所有任务的query set上就可以计算得到元梯度:

    由此可以计算元更新阶段的perturbation:

    那么元更新阶段的扰动微调参数,就为:

    则元更新过程就为:

5. 实验部分

              

6. 总结

虽然说本文的创新点就是把SAM和MAML进行了一个结合,但是理论(这部分的证明也是按照SAM的理论给了一个推导)和实验都比较充分。直观上但对我的帮助比较有限,SAM向损失中额外引入的梯度信息能够有效的提升模型的泛化性能,但在目标域上却不一定能有类似的效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文阅读 | Sharp-MAML: Sharpness-Aware Model-Agnostic Meta Learning, ICML2022 的相关文章

  • Rails 验证虚拟属性

    我这个型号 class Bunny lt ActiveRecord Base attr accessor number validates presence of number validates numericality of numbe
  • laravel 使用 php artisan 时从自定义存根创建模型

    当我使用php artisan make model CustomNamespace TestModel 我得到一个基于默认存根的模型 如下所示 namespace App Models CustomNamespace use Illumi
  • 如何将模型数据对象数组转换为dataProvider

    假设我有模型User与其自身有多对多的关系 命名为friends so user gt friends or model gt friends在视图中 给了我一个数组User对象 我想将朋友显示为网格视图 但CGridView数据为data
  • AngularJS 的面向对象方法

    Angular 似乎没有提供内置的解决方案来定义具有属性和方法的类实例 并且需要开发人员来构建它 您认为这样做的最佳做法是什么 如何将其与后端链接 我收集的一些技巧使用工厂服务和命名函数 资料来源 Tuto 1 https medium c
  • 如何将 tf.metrics.__ 与估计器模型预测输出一起使用

    我尝试遵循tensorflow API 1 4文档来实现我在学习过程中所需要的 我现在在这个阶段 可以生成一个预测对象 例如 classifier tf estimator DNNClassifier feature columns fea
  • 覆盖 Django 模型 __init__ 方法

    我的 Django 项目的 Ingredient 模型有一个IntegerField它声明该原料库存是否按重量 单位或窝数进行管理 虽然数据库有它的integervalue 我必须显示它的名称 我认为最好覆盖每个成分并设置其值 而不是覆盖
  • 现有模型和数据库表的rails g脚手架

    我想创建一个结构rails g scaffold Article 但我已经创建了表Articles和型号Articles 有什么办法可以做到这一点吗 rails generate scaffold controller Article
  • Django与领域和自身的多对多关系独特

    我尝试使用语言和内容创建帖子 并将其与同一页面的其他版本相关联 但我陷入困境 class Page models Model content models TextField language models CharField max le
  • 如何从 model+ModelForm 获取文本区域?

    模型 py gt from django db import models from django forms import ModelForm from datetime import date import datetime from
  • Kohana 3:经过验证的模型示例

    我找到有关模型和验证的示例和教程 我说验证 或至少大部分 应该在模型中 我同意这一点 但我无法提供任何示例或教程来说明应该如何完成此操作 谁能帮我举一个简单的例子来说明如何做到这一点 模型中的规则在哪里 验证将在哪里进行 控制器如何知道验证
  • 如何将 Request->all() 与 Eloquent 模型一起使用

    我有一个 lumen 应用程序 需要在其中存储传入的 JSON 请求 如果我写这样的代码 public function store Request request if request gt isJson data request gt
  • 如何使用SqlAlchemy通过id查询数据库?

    我需要通过其查询 SQLAlchemy 数据库id类似的东西 User query filter by username peter 但对于身份证 我该怎么做呢 通过 Google 和 SO 搜索没有帮助 查询有一个获取函数 https d
  • MVC 模型在 OnExecuted 操作过滤器中为 null ...或者设置模型的更优雅的方式?

    我有一个 ActionFilter 它覆盖了 OnActionExecuted 方法 在 POST 操作中 filterContext Controller ViewData Model 始终为 null 我确实发现下面的文章似乎在说它不应
  • Keras 中的 model.fit() 和 model.evaluate() 有什么区别?

    我使用 Keras 和 TensorFlow 后端来训练 CNN 模型 之间是什么model fit and model evaluate 我应该最好使用哪一种 我在用model fit 截至目前 我知道的用处model fit and m
  • 使用 sunspot/solr 搜索多个模型

    我已经能够成功地实现基本的全文搜索 但是当我尝试使用范围 with statements 时 任何涉及多对多关系模型的查询似乎都不适合我 我知道相关行位于数据库中 因为我的 sql 语句确实返回了数据 然而 太阳黑子查询不会返回任何结果 我
  • 使模型绑定适用于没有默认构造函数的模型

    我一直在试图找到一种方法 让模型绑定与带有参数的构造函数的模型一起进行 那个行动 HttpPost public ActionResult Create Company company HttpPostedFileBase logo com
  • SQLAlchemy - 连接表关系上的 order_by

    我正在使用声明式 SQLAlchemy 并且有三个模型 Role Permission and RolePermission 在我的Role模型 我有以下内容 class Role Base name Column u NAME VARCH
  • 如何使用 django 更新会计应用程序中的余额?

    我正在学习 Django 尝试制作一个会计应用程序来跟踪我的开支等 我使用两种模型创建数据库 一种用于帐户 一种用于操作 但我不知道如何在每次操作时更新我的 余额 我在想 也许每次我保存一个新操作时 我都会通过覆盖操作模型的保存方法来更新余
  • 如何在模型更改时停止ListView“跳跃”

    我需要做什么 我需要创建一个聊天窗口用一个ListView在 QML 中存储聊天消息 我设置listView positionViewAtEnd 以便跟踪最后的消息 我禁用positionViewAtEnd当我向上滚动时 我可以阅读过去的消
  • Magento:如何覆盖本地模块中的模型

    我试图在本地文件夹中覆盖本地文件夹中的模块 但我不知道是否可能 这就是我所做的 我创建了 local Mycompany Modulename Model Model php 我想覆盖 local Othercompany Modulena

随机推荐