Similarity and Matching of Neural Network Representations 论文阅读笔记

news2025/1/17 3:57:45

在这里插入图片描述

这是NIPS2021的一篇论文,文章主要是探究了通过一个stiching layer将两个已训练的不同初始化的相同结构的网络的某一层进行匹配的可能性。

前言

  • 作者对 “什么情况下两个表征是相似的?” 提出了一个新的问题:“如果我们知道两个表征是相似的,那么他们以什么方式相似?”为此作者将相似分为了两个方面:“representational similarity”和“functional similarity”
    • representation similarity 即我们常见的距离计算,指直接对两个特征向量计算各种距离
    • functional similarity 指功能相似度,表示两个特征向量被使用的方式的相似性,用于回答这个问题:“网络B能够使用网络A的特征完成其任务吗?”文章主要探讨的就是这个问题。

    这里我想到了一个比较形象的比喻可以用来形容这两个相似度量。想象一个单词“汤勺”,representation similarity比较高的单词可能是“场匀”,而functional similarity比较高的可能是“勺子”。

  • 文章做的就是将网络A的激活层特征取出来,加一个仿射变换,送进网络B的同一层。网络B的准确率并没有明显下降。
  • 对上述的仿射变换进行研究即可回答“如果我们知道两个表征是相似的,那么他们以什么方式相似?”这个问题。
  • 文章发现,两种similarity并不呈明显的正相关关系。当准确率没有明显下降时,两个特征可能具有较低的representation similarity,反之亦然。
  • 文章的另一个重要发现是,对特征向量进行奇异值分解得到的主成分并不与信息的内容直接相关。

相关工作

  • 下面这篇工作好像也做的是一样的,但是做了不同网络结构的

Yamini Bansal, Preetum Nakkiran, and Boaz Barak. Revisiting model stitching to compare neural
representations. Advances in Neural Information Processing Systems, 35, 2021.

  • 此外还有CCA CKA SVCCA PWCCA等工作,衡量相似性

正文

  • 如下图所示,其实就是做了这样一件事:把一个网络的某一层特征,接一个stitching layer(文章定义为1x1的卷积),送到另一个网络中去。固定两个网络的参数,只训练stitching layer,看看接起来的网络的准确率如何。而对stitching layer的训练文章介绍了两种方式:task loss matching 和 direct matching
  • 在这里插入图片描述

task loss

  • 其实就是用model 2 的输出作为soft label,算接起来网络的输出和model的输出的交叉熵,用交叉熵损失去训练stitching layer。也可以直接用 GT 的 label 算交叉熵。实验结果显示两种label训练出来的结果没有差别。

direct matching

  • 其实就是直接用 model 2 的特征图 B ∈ R n × p B\in R^{n\times p} BRn×p 作为target,用 model 1 的特征图 A ∈ R n × p A \in R^{n\times p} ARn×p 作为input,用最小二乘法找到最优的 M 0 ∈ C M_0 \in C M0C,使得 ∥ A M 0 − B ∥ F = m i n M ∈ C ∥ A M − B ∥ F \|AM_0-B\|_F = min_{M\in C}\|AM-B\|_F AM0BF=minMCAMBF 其中 p 为特征图的维度 p = c p=c p=c,所以这个其实就是个1x1的卷积,对所有所有图片所有位置的像素都是相同处理,n 为样本数,也可以理解为图像数量乘以hw。
  • 考虑C的几种方案:
    • p × p p\times p p×p的任意矩阵
    • p × p p\times p p×p的满秩矩阵
    • p × p p\times p p×p的非满秩矩阵
  • 上述三种情况都可以用A的伪逆左乘B矩阵求得近似值,而对于第二和第三种情况,有专门的矩阵算法求得最优解

Sparse matching

  • 此外其实还有一种理论是用 ∥ A M 0 − B ∥ F = m i n M ∈ C { ∥ A M − B ∥ F + α ⋅ ∥ M ∥ 1 } \|AM_0-B\|_F = min_{M\in C}\{\|AM-B\|_F+\alpha \cdot \|M\|_1 \} AM0BF=minMC{AMBF+αM1}作为目标函数,目的是求得一个稀疏的M矩阵,这里的stitching layer的L1范数可以对 direct matching 也可以对 task loss 两种求最优化的方式去添加

实验结果

比较task loss和direct matching

  • 在这里插入图片描述
  • 如图,可以看到
    • task loss相比direct matching具有更高的准确率(图中用相对准确率来表示迁移模型准确率相比原模型准确率的比值)
    • 不同网络具有不同的匹配相似度,inceptionV1上两个网络的匹配相似度就极高
  • 另外,图中没有体现,但论文中提到了两个细节:
    • 有无batch normalization得到的两个网络也可以很好地用上述两个方法匹配;不同optimizer优化的模型也可以;

    • 用direct matching先初始化参数后再用task loss去训练可以得到稳定且较高准确率的训练结果;而随机初始化则随着研究层的变浅逐渐呈现不稳定的结果。
      在这里插入图片描述

    • 即使是用不同训练集训练的两个模型,仍然能很好地配对

比较不同width

  • 在这里插入图片描述
  • 作者将 Resnet 的被匹配层的通道数分别增加为原来的2 3 4倍,再用 task loss 去训练,发现accurcay增加了不少

representation similarity不同于functional similarity

  • 作者观察了在task loss训练过程中,基于特征之间距离计算的相似性度量指标的变化情况,如下图所示
    在这里插入图片描述
  • 可以看到,随着训练的迭代,交叉熵降低,因此模型准确率提高,functional similarity因此提高,但很明显基于特征距离函数的相似性度量指标CKA和R2在多次训练中呈现出方差大、总体呈下降趋势的现象。
  • R2相似度的下降是显然的,因为 sitiching layer 是 direct matching 进行初始化的,因此0迭代处即为R2相似度的最大值。但这也说明了,基于最小二乘的 direct match得到 的stitching layer 显然并不体现模型的决策边界,也并非 functional similarity 最高的结果。
  • 作者还做了另一个有趣的实验,将模型A对自身进行match,将 stitching layer 初始化为单位矩阵,因此相似性度量一开始就是最大值。然后训练 stitching layer,除了原先的task loss,还增加了相似性度量(可导)作为损失,因此一边训练,stitching layer产生的特征图与原特征图的相似度就会不断下降,但实验结果显示与此同时交叉熵并没有显著增加,准确率也没有显著下降。因此可以说明,基于距离计算的 representation similarity,并不是 functional similarity的必要条件。
    在这里插入图片描述

低秩实验

  • 前面说了,stitching layer可以是不满秩的,不满秩的网络可以通过 bottleneck 结构(即通道数先减小再增加,其实就是把 p × p p\times p p×p 的矩阵分解为 p × k p \times k p×k 的矩阵和 k × p k \times p k×p 的矩阵的乘积,从而使得乘积的秩最多为k,可以通过SVD分解来实现)的模块来实现。
    在这里插入图片描述
  • 在不满秩的情况下实验可以发现,task loss仍然得到了最优的准确率,这进一步验证了前面的结论。

对stitching layer的性质探究

  • 通过不同初始化得到的stitching layer,除了部分陷入了局部极小值而导致准确率下降很大之外,其它的基本都能收敛到相近的准确率附近
  • 并且,这些表现很好的stitiching layer,呈现出了连续性,取两个不同的stitching layer,在两者之间进行插值,插值得到的一系列stitiching layer仍然具有很高的准确率。

稀疏的stitching layer

  • 通过添加stitiching layer 的L1范数作为损失,并且在训练结束后将低于阈值的参数置为零从而实现稀疏的stitching layer。在稀疏的stitching layer上得到的准确率实验结果如下:
    在这里插入图片描述
  • 可以看到,随着稀疏系数(零参数占参数总量的百分比)的提高,基于task loss的stitching layer准确率下降并不明显,仍然可以接受;而基于direct matching的则出现了严重的下降。

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

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

相关文章

Qt 停靠布局QDockWidget使用

基本使用 QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持浮动状态或在指定位置作为子窗口附加到主窗口中。停靠窗口QDockWidget类是应用程序中经常用到的,设置停靠窗口的一般流程如下。 创建一个QDockWidget对象的停靠窗体。设置此停…

Kafka是什么?Rocket MQ在Spring Boot中怎么整合使用/Kafka在SpringBoot中简单配置使用

写在前面: 继续记录自己的SpringBoot学习之旅,这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 3.5.4.5 SpringBoot整合RocketMQ 3.5.4.5.1 Rocket…

怎么设计个性时尚的班服?一起来看看莱佛士学生的设计

校园时期,每个学生其实都拥有一次做“设计师”的经历,那就是为自己的班集体设计班服! 莱佛士设计学院就曾与新加坡国立大学Yong Loo Lin 医学院合作,进行过一场别开生面的校园文创设计大赛,其中不仅有班服设计&#x…

【iOS开发】-UIPickerView

写在开头 昨天学习了iOS一个简单的控件。 UIPickerView; UIPickerView组件类似HTML都Select组件效果,提供数据供用户选择。可以通过plist文件提供数据。UIPickerView是一个选择器控件,可以生成单列的选择器,也可以生成多列的选择器&#xff…

【待解决】Not a Prefab scene

开发平台:Unity 2018.4.10f1 编程平台:Visual Studio   问题描述 注意:这是一个 意义不明 的报错内容。   问题发生环境(可能不唯一) 在 Unity 2018版本中,编辑场景内已有预制体的游戏对象时发生的问题…

stm32cubemx hal学习记录:FreeRTOS消息队列

一、基本介绍 1、消息队列就是一个像容器一样的东西,我们所有的任务都可以往内部写,然后队列会将我们的消息按顺序存下来,所有的任务也可以按顺序将其读出来。 2、队列需要明确数据的大小以及队列的长度,写队列和读队列都是采用…

16.面试重点CookieSession

一、文件上传(使用频率高,但不是很重要) 1.通过form表单 前端: form表单,method必须是POST, enctype属性是multipart/form-data, type是file 引起HTTP请求体的格式以multipart的形式传输 后端: 正常…

UnRaid虚拟机安装Uos家庭版并由Windows远程桌面访问的成功流程

文章目录0、前言1、UnRaid虚拟机安装Uos家庭版1.1、下载Uos系统镜像1.1.1、在https://home.uniontech.com/官网下载镜像安装包(如下图:)1.1.2、上传至Unraid1.1.3、添加虚拟机1.1.4、激活Uos家庭版2、开启Uos的远程桌面2.1、为Uos安装xrdp服务…

【制作数字人】零门槛通过三维重建技术生成个人三维模型

依托各项技术的发展,数字人技术开始拔地而起。我们发现,各大一线互联网企业、三大运营商,还有不少创业型公司都纷纷入局数字人。 难道元宇宙的入门票是数字人?等不及了,马上接触下这门技术。经简单了解,现…

前端学习路线(三)

往期回顾↓↓↓ 前端学习路线(一) 前端学习路线(二) 在前两章中,我们讲了如何去学习前端三剑客、js高级和bootstrap的重点,得到了很多前端初学者的好评,收藏量也是每天都在增加,所以…

【身份证识别】基于matlab GUI BP神经网络身份证识别【含Matlab源码 2239期】

⛄一、身份证号码识别简介 1 引言 当今是一个信息高度发达的时代,对于每个公民而言身份证那一连串的数字体现了个人信息的唯一性,出于保障公民合法权益和社会治安的考虑,越来越多的行业都开始建立自己的安全保障体系,其中最为关键…

STA:虚拟时钟(virtual clock)与I/O延时约束

1.什么是虚拟时钟? 虚拟时钟(virtual clock)是存在但没有clock source(pin/port)定义的时钟,仅作为输入输出端口延时约束的参考时钟。定义方式如下例: create_clock -name virtual_clock -period 10 -waveform {0 5} &#xff1…

第四章:Spring七大核心模块Bean、Core、Context

Spring框架七大模块 容器模块(spring core)、应用上下文模块(spring context)、AOP模块(spring aop)、JDBC抽象和DAO模块(spring dao)、对象/关系映射集成模块(spring o…

R3LIVE代码详解(三)

0. 简介 在上一章中,我们过完了主函数以及LIO的操作,由于这部分代码在FAST-LIO2中已经充分详细的介绍过了,所以说这里在R3LIVE中就不过多介绍了,下面我们来看一下本系列的重点,即VIO部分。 1. 主函数 我们在之前分析…

美国访问学者申请|J1签证官方指定材料大全

美国访问学者申请需要哪些材料?下面就随知识人网老师一起来看一看J1签证官方指定材料大全。 一、 有效护照:如果您的护照将在距您预计抵美日期的六个月内过期、或已损坏、或护照上已无空白的签证签发页, 请在前来面谈之前先申请一本新护照。 二、DS-160…

leetcode:1957. 删除字符使字符串变好

难度:简单 一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 。 给你一个字符串 s ,请你从 s 删除 最少 的字符,使它变成一个 好字符串 。 请你返回删除后的字符串。题目数据保证答案总是 唯一的 。 示例 1&#xf…

Podman 部署私有镜像仓库

Podman 部署私有镜像仓库 文章目录Podman 部署私有镜像仓库1. 安装 Podman 和 httpd-tools2. 配置仓库存储位置3. 生成访问仓库的凭据3.1 htpasswd 用户名和密码3.2 TLS 密钥对4. 启动容器5. 测试5.1 登陆5.2 API访问5.3 镜像入库5.4 查询镜像信息Podman是一个无守护进程的开源…

JavaScript基础(14)_in、hasOwnProperty、instanceof的用法、垃圾回收

in 用法:检查对象和原型对象是否含有该属性。 语法:"属性名" in 对象名 hasOwnProperty 用法:检查对象自身是否含有该属性。 语法:对象名.hasOwnProperty("属性名") instanceof 用法:检查一个对…

在裸机上输出Hello,world! [rCore-lab1]

引言 非常简单的“Hello, world”应用程序,实际上有着多层硬件和软件工具和支撑环境隐藏在它背后,才让我们不必付出那么多努力就能够创造出功能强大的应用程序。生成应用程序二进制执行代码所依赖的是以 编译器 为主的开发环境;运行应用程序执行码所依赖…

寻找更好的分类模型loss

寻找更好的loss1.CE loss并不完美2.可能更好的loss函数2.1 CC-LOSS2.2 Center-LOSS参考文献1.CE loss并不完美 最常用于深度学习分类模型的损失函数可以说就是CE(交叉熵) loss了。正如CC-LOSS paper中所述,该loss更关注各类是否separated,而非不同类之间…