BYOL论文精读

news2024/11/20 1:27:26

文章目录

  • 概要
  • 背景
  • 方法
    • 1. 概述
    • 2. 参数更新
    • 3.目标z'_ξ的构建和q_θ的预测
  • 结果
  • 结论
  • 个人看法

在这里插入图片描述

概要

本篇博客介绍了Bootstrap Your Own Latent (BYOL)方法,这是DeepMind和Imperial London提出的一种自监督学习方法。

  • BYOL 包含两个架构相同但参数不同的网络。
  • BYOL 不需要负对,而大多数对比学习方法都需要,例如SimCLR

背景

对比学习 (contrastive learning, CL)目前在自我监督学习中取得了最先进的性能。在对比学习中,从相同图像创建的视图称为正对,而来自不同图像的视图称为负对。

然而,可以有无限数量的负对,CL 需要大量的负对以确保其性能。因此,这项工作提出了一个称为 BYOL 的新框架,以消除对负对的需求。

方法

1. 概述

这个框架中有两个网络。一个名为在线模型,另一个名为目标模型。在线模型由 θ 参数化,目标模型由 ξ 参数化。两个模型具有动态行为:

  • 目标模型通过计算θ的指数移动平均值 (EMA)来更新其参数 ξ 。
  • 在线模型通过学习目标模型的参数 ξ 来更新其参数 θ。

在这里插入图片描述

2. 参数更新

我将在下面详细解释每个更新的方式:

  • ξ 由 θ 更新:这是通过计算指数移动平均线 (EMA) 完成的,其定义如下:
    在这里插入图片描述
    指数移动平均线 (EMA) 的公式。τ 是目标衰减率,τ ∈ [0,1]。假设与在某个时间序列上获得 θ 的简单平均值相比,EMA 为最近的 θ 分配了更大的权重。这可以从以下事实中看出:如果您展开右侧的 ξ,则 τ 变为 τⁿ(n 是时间步长)。随着 τ 越来越小,τⁿ 会变小,这意味着它的重要性正在衰减。

  • θ 由 ξ 更新:这是通过优化目标函数来完成的。目标函数是归一化预测 q_θ_bar 和目标 z’_ξ_bar 之间的均方误差:
    在这里插入图片描述

  • q_θ_bar 是 q_θ 的L2 归一化
    在这里插入图片描述

  • z’_ξ_bar 是 z’_ξ 的 L2 归一化:

在这里插入图片描述

3.目标z’_ξ的构建和q_θ的预测

这是该方法的核心部分。在在线模型中,分为三个阶段:encoder f_θ、projector g_θ和predictor q_θ。

在这里插入图片描述
在线模型由编码器、投影仪和预测器组成。在线模型通过上述目标函数预测目标的投影。sg 代表停止梯度,意味着梯度不会在目标模型中反向传播,因为目标模型是使用 EMA 更新的。训练后,除了 f_θ 之外的所有东西都被丢弃。

整个结构很可能建立在SimCLR框架之上,因此我将简要介绍一下。在 SimCLR 中,输入图像通过 t 和 t’ 进行变换以生成两个增强视图,然后通过编码器 f(⋅) 和投影仪 g(⋅) 以获得投影表示。然后对比投影表示 zᵢ 和 zⱼ 以最大化它们的一致性,发现这比直接最大化 hᵢ 和 hⱼ 之间的一致性导致更好的性能。负对是通过使用来自不同输入图像的视图来构建的。

在这里插入图片描述
然而,不同之处在于,在 BYOL 中,两个视图是通过不同的编码器 f_θ 和 f_ξ 生成的。这两个是相同的架构,但参数不同。此外,在 BYOL 中,有一个预测器和一个目标网络。如您所见,在 BYOL 中,不需要负数对。

结果

在这里插入图片描述

结论

  • BYOL 提供了一种不需要负对的自我监督学习的新方法。

  • BYOL 有两种模型,架构相同但参数不同。在线模型通过优化目标函数来更新其参数。目标模型通过计算指数移动平均值来更新其参数。

个人看法

  • 构造足够多的负对是保证对比学习性能的重要一步。否则,可能会发生称为折叠表示的问题。这项工作为不使用负对的自监督学习开辟了一条新途径。

  • EMA 用于考虑以前的 θ,偏向较新的。该技术已用于其他方法,例如Adam优化器。原始论文还对 EMA 的 τ 进行了消融研究。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot 项目打成 .exe 程序

准备 准备工作: 1.一个jar包,没有bug能正常启动的jar包 2.exe4j,一个将jar转换成exe的工具 3.inno setup,一个将依赖和exe一起打成一个安装程序的工具 开始 以我为例子,我将jar包放在了桌面 打开安装好的exe4j 直…

面渣逆袭:Java并发六十问,快来看看你会多少道

这篇文章有点长,四万字,图文详解六十道Java并发面试题。人已经肝麻了,大家可以点赞、收藏慢慢看!扶我起来,我还能肝! 基础 1.并行跟并发有什么区别? 从操作系统的角度来看,线程是…

现在有哪些好用的企业报表软件?

简单来讲,企业报表就是“用表格、图表等格式来动态显示数据”,各行各业、每年每月,都需要通过报表来展示组织和人员在经营管理上的真实情况。当前大家常用的实现企业报表的方式包含代码开发、用 Excel 制作离线报表、开源产品、利用业务系统&…

基于遗传编程的符号回归

0 前言 作为一种监督学习方法,符号回归(symbolic regression)试图发现某种隐藏的数学公式,以此利用特征变量预测目标变量。 符号回归的具体实现方式是遗传算法(genetic algorithm)。一开始,一…

数字三角形问题

数字三角形问题一、题目描述二、题目分析1、问题分析2、思路分析(1)状态转移方程状态表示状态转移(2)循环的设计三、代码实现一、题目描述 二、题目分析 1、问题分析 这道题给我们的第一眼感觉就是情况太多了,太复杂…

虚拟化环境下,如何高效开展勒索病毒防护加固?

本文重点 近些年,勒索病毒攻击事件频发,由于其“难发现、难阻止、难破解”的特点,不少用户——尤其是使用虚拟化的金融、医疗、制造、公共服务等重要行业用户——已遭受严重数据与经济损失。勒索攻击的防控是一项系统性工程,除了…

2-2-3-9-1-1、jdk1.7HashMap详解

目录数据结构链表的作用链表问题数据结构简图源码解析重要成员变量说明构造函数put操作初始化数组Key为null的处理计算hash添加链表节点--新增Entry扩容缺点扩容死锁分析单线程扩容多线程扩容数据结构 jdk1.7的hashmap的底层结构是数组加单向链表实现的。将key的hash值进行取模…

深度学习环境搭建

深度学习环境搭建0.引言1.Jupyter Notebook1.1.ANACONDA安装1.2.基于conda安装Jupyter Notebook1.3.Jupyter Notebook使用2.Pycharm2.1.安装Pycharm2.2.Pycharm设置0.引言 一步步采坑更新。 1.Jupyter Notebook 官方文档 安装参考 通过安装Anaconda来解决Jupyter Notebook…

300行HTML+CSS+JS代码实现动态圣诞树

文章目录1. 前言2. 效果展示3. 准备🍑 下载编译器🍑 下载插件4. 源码🍑 HTML🍑 JS🍑 CSS5. 结语1. 前言 一年一度的圣诞节和考研即将来临,那么这篇文章将用到前端三大剑客 HTML CSS JS 来实现动态圣诞树…

Java面试题(六)多线程经典编程题

经典的多线程编程题猜数字游戏键盘输入练习3个线程轮流打印ABC多窗口买票猜数字游戏 题目说明:有2个线程,第一个线程A随机一个100内的数,第2个线程B来猜,B每次猜一个数后A会判断,如果猜对了程序结束,如果猜…

工具在接口测试中发挥什么样的作用?

接口测试究竟是什么?为什么要用接口测试?它有哪些工具呢?这一连串的问题敲击着我们,请带着这些问题,在本文中寻找答案,我将为您打开接口测试的大门。 1 初探接口测试 接口测试是什么。它检查数据的交换&…

从《我要投资》,看藏在“对立面”里的创业正解

文|智能相对论 作者|青月 六位07届的快乐男声选手在象山体验养鹅,意外出圈;随后播出的09届超女的怀旧综艺却热度一般,可见只有单纯的情怀消费并不能保证节目的口碑,只有建立在准确的节目定位与恰当的价值输出基础上,…

面试必备:从常见的存储引擎到混淆的锁分类,请上车

今天我们来总结一下MyISAM和InnoDB引擎下锁的种类及使用方法。 MySQL的四大常见存储引擎 谈到MyISAM和InnoDB了我们先来了解一下什么是存储引擎吧。MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同…

m基于贝叶斯理论的超分辨率重构算法matlab仿真,对比Tikhonov重构算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 超分辨率(Super-Resolution)通过硬件或软件的方法提高原有图像的分辨率,通过一系列低分辨率的图像来得到一幅高分辨率的图像过程就是超分辨率重建。超分辨率成像(SR-imagi…

一个内核oops问题的分析及解决

最近在调试设备时,遇到了一个偶发的开机死机问题。通过查看输出日志,发现内核报告了oops错误,如下所示(中间省略了部分日志,以......代替): Unable to handle kernel NULL pointer dereference…

YOLOV7学习记录之训练过程

在前面学习YOLOV7的过程中,我们已经学习了其网络结构,然而实际上YOLOV7项目的难点并不在于其网络模型而是在于其损失函数的设计,即如何才能训练出来合适的bbox。 神经网络模型都有训练和测试(推理)过程,在Y…

QT JS交互、调用JS、传值

本文详细的介绍了QT JS交互、调用JS、传值的各种操作,包括QT向JS传递String字符串、包括QT向JS传递Int数字、包括QT向JS传递List数组,同时也接收JS向QT返回的List数组、JS向QT返回的Json、JS向QT返回的数字、JS向QT返回的字符串。 本文作者原创&#xff…

Vue基础8之Vue组件化编程、非单文件组件与单文件组件

Vue基础8Vue组件化编程对组件的理解一些概念的理解非单文件组件基本使用几个注意点组件的嵌套VueComponent一个重要的内置关系先导篇:原型对象正文(可以理解为类的继承)单文件组件Vue组件化编程 对组件的理解 传统方式: 使用组…

计算机网络-交换方式

目录电路交换(Circuit Switching)分组交换(Packet Switching)报文交换(Message Switching)电路交换、报文交换、分组交换的对比电路交换(Circuit Switching) 在电话问世后不久&#…

扫雷游戏的设计(百分百还原电脑操作)

目录 🌲了解扫雷游戏的作用原理并梳理思路 🌲扫雷游戏前期部分完善 🌷文件的创建 🌷创建菜单,完善主函数 🌳代码呈现: 🌲扫雷游戏主题内容 🌴第一步初始化棋盘 &#x1…