• 我觉得还挺好懂的meta learning 元学习总结


    记录下元学习的概念。

    我认为元学习也可以算预训练的一种,只是训练的模式不太一样。

    元学习的目的是为了在新任务上有更好的表现,这个好,表现在计算成本降低,迭代次数少,速度更快,否则你直接从头开始训练或者用pretrained的模型finetune也是可以在新任务上达到较好的效果。只是,如果经过简单的元学习,你的参数有更大的潜力可以贴合新任务,可以使训练成本降低。

    所以你可以推断,这个新任务,基本上是和元学习过程中,相似的任务。

    现在说下具体的训练过程。

    一个模型和多个相似的任务。

    首先就一个模型,因为参数每次要复制给不同的任务,模型必须是一模一样的,否则不同的模型,参数根本不知道怎么初始化。

    现在给个任务,比如识别猫,好的,现在有猫的数据,分为了support set 和query set,分别对应训练数据和测试数据。模型的初始参数先保存起来,复制一份给猫模型,猫模型就进行多次训练,然后训练差不多了,就用这个更新后的参数在测试数据上,看看效果,单独看这一步,和我们训练一般的模型没啥区别。现在可以在测试数据集上得到训练的loss,代表了猫模型现在的效果。

    现在用这个loss去更新最开始保存的那一套参数,也就是你的猫模型可能训练了n步,才得到的这个loss,只更新了一步初始参数。

    之后,接下一个任务,识别狗,也是同样的过程,将更新了一步的参数保存起来,并且复制给狗模型,这个狗模型和猫模型的结构完全一致。然后也开始疯狂训练,在测试数据集上得到了最终loss,好了,现在用这个loss去更新刚刚保存起来的参数,这就是更新了第二步元模型的参数。

    此时,这个模型仅仅更新了两次参数,但是可能已经比较贴合猫和狗的模型判断。用这套参数,去finetune猫或者狗的模型,都将会很快收敛,达到较好的效果。

    这就是元学习。

    我用一个例子表达下这个元模型的感觉。

    元模型就像个大老板,他手下有多个业务部门,但是他是个傻子。

    某一天他被告知要亲自处理一个新的业务,这个新业务和他现在手下的业务有点像,具体和哪个像他不知道。而且他是个傻子,学习能力非常有限。

    为了能够很快上手这个新业务,他是这么想的:我不能就抓住某个任务学到底,否则万一这个任务和新任务不一样,他就要很费劲地重新学,因为其他任务他都没去接触。

    所以,他每次都是学了一点某个部门的业务,然后更新了一次自己的脑子里的知识,接着换下一个部门,然后再更新了一次脑子里的知识。再换下一个。

    最后的效果,这个老板,每个部门的业务都好像接触过了,不过都没有接触太深,来了一个新任务,他就能从他现在的基础上,很快地进行上手。

    哎,例子有点差,不过本人差不多看懂了。

  • 相关阅读:
    Atcoder abc127
    Flutter常见UI组件使用
    【Spring】BeanName 的自动生成原理
    Windows 进程监视工具
    一、react简介
    【Metaverse系列二】3D引擎知多少
    Android11.0 修改设备名、型号、厂商
    思维导图:网络通信协议标准化
    网络编程打开的第一节预备课-----关于socket
    剑指:二叉树有关题目
  • 原文地址:https://blog.csdn.net/qq_25560849/article/details/125610722