DINO结构中的exponential moving average (ema)和stop-gradient (sg)

news2024/11/19 16:47:53

DINO思路介绍

在这里插入图片描述

在 DINO 中,教师和学生网络分别预测一个一维的嵌入。为了训练学生模型,我们需要选取一个损失函数,不断地让学生的输出向教师的输出靠近。softmax 结合交叉熵损失函数是一种常用的做法,来让学生模型的输出与教师模型的输出匹配。具体地,通过 softmax 函数把教师和学生的嵌入向量尺度压缩到 0 到 1 之间,并计算两个向量的交叉熵损失。这样,在训练过程中,学生模型可以通过模仿教师模型的输出来学习更好的特征表示,从而提高模型的性能和泛化能力。当然,这也可以看作是一个分类问题,以便网络可以从局部视图中学习更有意义的全局表示。

论文对图片中DINO结构的解释如下

我们用一个简单的视角对 (x1, x2) 来说明DINO。在该模型中,输入图像经过两种不同的随机变换后分别传递给学生网络和教师网络。两个网络具有相同的架构但参数不同。教师网络的输出以批次的均值进行中心化。每个网络输出一个K 维的特征,并通过特征维度上的温度 softmax进行归一化。然后通过交叉熵损失函数来测量它们的相似性。我们在教师网络上应用一个停止梯度(stop-gradient,sg)操作,以仅通过学生网络传播梯度。教师网络的参数通过学生网络参数的指数移动平均(ema)来更新。

核心特点

无标签自蒸馏: 不需要人工标注的数据,通过模型自身的知识传递来进行训练。
双视角 (x1, x2): 输入图像经过两种不同的随机变换,生成两种视角,以增加数据的多样性和模型的鲁棒性。
学生网络和教师网络: 两个网络结构相同,但参数不同。学生网络用于训练,教师网络提供稳定的指导信号。
教师网络输出中心化: 教师网络的输出在批次内进行中心化处理,以消除偏差并稳定训练过程。
温度 Softmax 归一化: 网络输出通过温度 Softmax 进行归一化,控制特征向量的平滑度,防止梯度消失或爆炸。
相似性度量: 通过交叉熵损失函数测量学生网络和教师网络输出之间的相似性,鼓励学生网络学习到与教师网络相似的表示。
停止梯度操作(SG): 在教师网络上应用停止梯度操作,确保梯度只通过学生网络进行反向传播,避免教师网络影响梯度更新。
指数移动平均更新(EMA): 教师网络的参数通过学生网络参数的指数移动平均进行更新,确保教师网络的参数更加平滑和稳定,从而提供可靠的指导信号。

再总结一下:在两个完全一样的教师和学生网络(ViT/CNN 均可)中

  • 教师网络通过 centering 和 sharpening 正则化避免训练崩塌。
      • Centering:教师模型的输出也经过 EMA 操作,从原始激活值中减去一个平均值。
      • Sharpening:在 Softmax 中加入一个 temperature 参数,强制让概率分布更加尖锐。
    • 两个网络的输出都通过 Softmax 层归一化处理
    • 通过交叉熵损失计算损失
  • 学生网络通过 SGD 更新参数,并通过 EMA 更新教师网络参数,教师网络的参数因为sg不会自己动**。

问题一:centering中使用的EMA(Exponential Moving Average)是什么东西,指数是怎么被体现的

在 DINO 中,教师网络的参数通过学生网络参数的指数移动平均(Exponential Moving Average, EMA)进行更新。以下是 EMA 操作的详细解释:

1. 定义

EMA 是一种用于平滑时间序列数据的技术,它通过对新数据赋予较高权重,同时对旧数据赋予较低权重,从而平滑数据变化。具体来说,EMA 的计算公式为:

θ t teacher = α θ t student + ( 1 − α ) θ t − 1 teacher \theta_t^{\text{teacher}} = \alpha \theta_t^{\text{student}} + (1 - \alpha) \theta_{t-1}^{\text{teacher}} θtteacher=αθtstudent+(1α)θt1teacher

其中:

  • θ t teacher \theta_t^{\text{teacher}} θtteacher 是第 t t t 次更新后的教师网络参数。
  • θ t student \theta_t^{\text{student}} θtstudent 是第 t t t 次学生网络的参数。
  • α \alpha α 是平滑系数,介于 0 和 1 之间,通常取一个较小的值(例如 0.99 或 0.999)。
  • θ t − 1 teacher \theta_{t-1}^{\text{teacher}} θt1teacher 是第 t − 1 t-1 t1 次更新后的教师网络参数。
2. 指数的体现

EMA 操作中的“指数”体现在计算过程中旧数据的权重以指数形式递减。具体地,如果我们展开几次 EMA 的更新,可以看到:

θ t teacher = α θ t student + α ( 1 − α ) θ t − 1 student + α ( 1 − α ) 2 θ t − 2 student + ⋯ \theta_t^{\text{teacher}} = \alpha \theta_t^{\text{student}} + \alpha(1 - \alpha) \theta_{t-1}^{\text{student}} + \alpha(1 - \alpha)^2 \theta_{t-2}^{\text{student}} + \cdots θtteacher=αθtstudent+α(1α)θt1student+α(1α)2θt2student+

这表明旧数据的权重以 ( (1 - \alpha)^k ) 的形式递减,其中 ( k ) 是时间步长。因此,最近的数据对当前参数的影响最大,而更早的数据影响则逐渐减小,以指数形式衰减。

3. 核心思想

EMA 操作的核心思想是使教师网络参数逐步融合学生网络的最新知识,同时保留一部分历史信息。这使得教师网络参数更新更加平滑,避免剧烈波动,从而提供稳定的指导信号。

4. 优点
  • 稳定性:通过 EMA,教师网络参数的变化更加平滑,减小了训练过程中的不稳定性。
  • 延迟效应:EMA 赋予新数据较高权重,能够快速反映学生网络的最新学习成果,同时历史信息的保留可以防止模型过拟合于噪声数据。
  • 无梯度反传:在 DINO 中,教师网络的参数更新不需要反向传播梯度,EMA 操作直接基于学生网络参数进行更新,这简化了计算。
5. 在 DINO 中的应用

在 DINO 的训练过程中,教师网络的参数不参与反向传播,而是通过 EMA 操作根据学生网络的参数进行更新。这确保了教师网络能够稳定地指导学生网络学习,同时防止了学生网络的梯度直接影响教师网络。

途中右上角有个sg,这个停止梯度操作又是什么

停止梯度操作 (Stop-Gradient)

在 DINO 中,我们在教师网络上应用了停止梯度(stop-gradient, sg)操作,使得梯度只通过学生网络进行传播。具体来说,停止梯度操作的目的是阻止梯度在反向传播时更新教师网络的参数,而仅更新学生网络的参数。

定义

停止梯度操作是一种在反向传播过程中冻结部分网络参数的技术。通过这种操作,某些部分的网络参数不会更新,以保持其值不变。

作用与优点
  1. 保持教师网络的稳定性:通过停止梯度操作,教师网络的参数在训练过程中保持不变,这有助于提供稳定的指导信号。
  2. 防止梯度泄漏:停止梯度操作可以防止梯度从学生网络泄漏到教师网络,从而确保梯度仅用于更新学生网络的参数。
  3. 增强训练效果:这种操作确保学生网络在训练过程中受到稳定的指导信号,促进其更有效地学习。
在 DINO 中的应用

在 DINO 的训练过程中,教师网络的参数通过指数移动平均(EMA)从学生网络的参数中更新,但不参与反向传播。具体来说:

  • 我们对教师网络应用停止梯度操作,使得梯度不通过教师网络进行传播。
  • 教师网络的参数更新通过 EMA 操作,从学生网络的参数中获得。

停止梯度操作 (Stop-Gradient)

在 DINO 中,我们在教师网络上应用了停止梯度(stop-gradient, sg)操作,使得梯度只通过学生网络进行传播。具体来说,停止梯度操作的目的是阻止梯度在反向传播时更新教师网络的参数,而仅更新学生网络的参数。

定义

停止梯度操作是一种在反向传播过程中冻结部分网络参数的技术。通过这种操作,某些部分的网络参数不会更新,以保持其值不变。

作用与优点
  1. 保持教师网络的稳定性:通过停止梯度操作,教师网络的参数在训练过程中保持不变,这有助于提供稳定的指导信号。
  2. 防止梯度泄漏:停止梯度操作可以防止梯度从学生网络泄漏到教师网络,从而确保梯度仅用于更新学生网络的参数。
  3. 增强训练效果:这种操作确保学生网络在训练过程中受到稳定的指导信号,促进其更有效地学习。
在 DINO 中的应用

在 DINO 的训练过程中,教师网络的参数通过指数移动平均(EMA)从学生网络的参数中更新,但不参与反向传播。具体来说:

  • 我们对教师网络应用停止梯度操作,使得梯度不通过教师网络进行传播。
  • 教师网络的参数更新通过 EMA 操作,从学生网络的参数中获得。

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

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

相关文章

阿赵UE引擎C++编程学习笔记——GameMode和生命周期

大家好,我是阿赵。   之前在介绍HelloWorld的时候,我们很创建了一个MyGameModeBase的c类,然后就可以在BeginPlay函数里面写打印的HelloWorld。这一篇主要是说一下,GameMode究竟是一个什么东西,然后UE里面的生命周期是…

huggingface 笔记:聊天模型

1 构建聊天 聊天模型继续聊天。传递一个对话历史给它们,可以简短到一个用户消息,然后模型会通过添加其响应来继续对话一般来说,更大的聊天模型除了需要更多内存外,运行速度也会更慢首先,构建一个聊天: ch…

企业文件加密实现数据泄露防护

在数字化时代,数据成为企业最宝贵的资产之一。然而,数据泄露事件频发,给企业带来了巨大的经济损失和声誉风险。为了保护企业的核心利益,实现数据泄露防护,企业必须采取有效的文件加密措施。 一、数据泄露的严重性 数据…

基于STM32实现智能交通灯控制系统

目录 引言环境准备智能交通灯控制系统基础代码示例:实现智能交通灯控制系统 GPIO控制交通灯定时器配置与使用红外传感器检测车辆用户界面与显示应用场景:城市交通管理与自动化控制问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌…

汽车大灯中擎耀智能控制器在车灯智能化配置下的创新与分析

随着科技的飞速发展,汽车工业也在不断地进行着革新。其中,车灯作为汽车的重要组成部分,其智能化配置已经成为汽车行业的一大趋势。这种趋势不仅为消费者带来了更加安全、便捷的驾驶体验,同时也为商家提供了丰富的商业机会。汽车工…

JS中运算符详解

一:赋值运算符 1 类型 、、-、*、/等 2 如何运行 ,是将等号右边的数赋值给左边以为例,let num 5;num2等价于numnum2 二:一元运算符 1 自增运算符 什么是一元运算符 只需要一个操作数就可以运算的运算符 &#x…

开源数据库同步工具DBSyncer

前言: 这么实用的工具,竟然今天才发现,相见恨晚呀!!!! DBSyncer(英[dbsɪŋkɜː],美[dbsɪŋkɜː 简称dbs)是一款开源的数据同步中间件,提供M…

解读vue3源码-1

提示:看到我 请让滚去学习 vue3渲染流程 文章目录 vue3渲染流程vue3的3个核心:1.响应式模块(Reactivity Module)--创建响应式数据2.编译模块(Compiler Module)--模版编译器将html转换为一个渲染函数3.渲染模块(Renderer Module) 渲染流程:1.首…

【御控工业物联网】 Java JSON结构转换、JSON结构重构、JSON结构互换(17):数组To对象——键值互换属性重组

文章目录 一、JSON结构转换是什么?二、核心构件之转换映射三、案例之《JSON数组 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换…

2024第三届AIGC开发者大会圆桌论坛:AI Agent中国落地发展现状及多模态结合具身智能的发展展望

在2024年第三届AIGC开发者大会上,多位业内专家齐聚一堂,共同探讨了AI Agent在中国的落地发展现状以及多模态结合具身智能的发展前景。本次圆桌论坛的嘉宾包括: Fast JP作者于金龙Agent创始人莫西莫必胜作者秦瑞January Agent创始人李晨 多模…

JavaEE:Servlet创建和使用及生命周期介绍

目录 ▐ Servlet概述 ▐ Servlet的创建和使用 ▐ Servlet中方法介绍 ▐ Servlet的生命周期 ▐ Servlet概述 • Servlet是Server Applet的简称,意思是 用Java编写的服务器端的程序,Servlet被部署在服务器中,而服务器负责管理并调用Servle…

【第5章】SpringBoot整合Druid

文章目录 前言一、启动器二、配置1.JDBC 配置2.连接池配置3. 监控配置 三、配置多数据源1. 添加配置2. 创建数据源 四、配置 Filter1. 配置Filter2. 可配置的Filter 五、获取 Druid 的监控数据六、案例1. 问题2. 引入库3. 配置4. 配置类5. 测试类6. 测试结果 七、案例 ( 推荐 )…

vivo X100 Ultra自称销售额破5亿,真实销量成谜?

文/张诗雨 5月28日9点,vivo 正式启动了其旗舰新机vivo X100 Ultra的全渠道销售工作。这款新机,早在5月13日就已正式亮相,并推出了三种存储容量的版本,分别是12GB256GB、16GB512GB以及16GB1TB,而相应的售价也不低&…

短道速滑短视频:四川京之华锦信息技术公司

短道速滑短视频:冰雪激情的视觉盛宴 随着冬奥会的热度不断攀升,短道速滑作为其中一项紧张刺激、充满观赏性的运动,受到了越来越多人的关注。而在社交媒体和短视频平台的助力下,短道速滑短视频成为了人们了解、欣赏这项运动的新窗…

vxe-form-design 表单设计器的使用

vxe-form-design 在 vue3 中表单设计器的使用 查看官网 https://vxeui.com 安装 npm install vxe-pc-ui // ... import VxeUI from vxe-pc-ui import vxe-pc-ui/lib/style.css // ...// ... createApp(App).use(VxeUI).mount(#app) // ...使用 github vxe-form-design 用…

Linux软硬链接详解

软链接: ln -s file1 file2//file1为目标文件,file2为软链接文件 演示: 从上图可以得出: 软链接本质不是同一个文件,因为inode不同。 作用: 软连接就像是Windows里的快捷方式,里面存放的是目标…

Llama模型家族训练奖励模型Reward Model技术及代码实战(二)从用户反馈构建比较数据集

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…

DES加密算法笔记

【DES加密算法|密码学|信息安全】https://www.bilibili.com/video/BV1KQ4y127AT?vd_source7ad69e0c2be65c96d9584e19b0202113 根据此视频学习 DES是对称密码中的分组加密算法 (分组加密对应流加密算法) 流加密算法就是一个字节一个字节加密 分组加…

Mybatis枚举类型转换

Mybatis枚举类型转换 类型转换器源码分析 在Mybatis的TypeHandlerRegistry中,添加了常用的类转换器,其中默认的枚举类型转换器是EnumTypeHandler。 public final class TypeHandlerRegistry {....public TypeHandlerRegistry(Configuration configura…

第 8 章 机器人平台设计之传感器(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.6.1 传感器_激光雷达简介 激光雷达是现今机器人尤其是无人车领域及最重要、最关键也是最常见的传感器之一&…