【论文精读】Detecting Out-of-Distribution Examples with Gram Matrices 使用Gram矩阵检测分布外实例

文章目录

  • 一、文章概览
    • (一)Gram矩阵
      • 1、Gram(格朗姆)矩阵的定义
      • 2、Gram矩阵计算特征表示
      • 3、风格迁移中的Gram矩阵
    • (二)ood检测
    • (三)核心思路:扩展 Gram 矩阵以进行分布外检测
    • (四)研究成果
  • 二、模型细节
    • (一)符号定义
    • (二)Gram 矩阵和高阶 Gram 矩阵
    • (三)预处理
    • (四)计算分层偏差
    • (五)测试图像的总偏差
    • (六)阈值
    • (七)计算复杂度
    • (八)与 Mahalanobis 检测的关系
  • 三、实验
    • (一)实验配置
    • (二)实验结果
    • (三)消融实验
  • 四、局限性和未来的工作
    • (一)近分布异常值
    • (二)改进的 δl
    • (三)隐式置信度预测


一、文章概览

(一)Gram矩阵

1、Gram(格朗姆)矩阵的定义

n维欧式空间中任意k个向量之间两两的内积所组成的矩阵,称为这k个向量的格拉姆矩阵(Gram matrix)。它的行列式则称为Gram(格朗姆)行列式。
在这里插入图片描述
Gram矩阵是两两向量的内积组成,所以Gram矩阵可以反映出该组向量中各个向量之间的某种关系。

2、Gram矩阵计算特征表示

  • 输入图像的feature map为[ ch, h, w]。
  • 经过flatten(即是将h*w进行平铺成一维向量)和矩阵转置操作,可以变形为[ ch, h*w]和[ h*w, ch]的矩阵。
  • 再对两个作内积得到Gram Matrices。 (蓝色条表示每个通道flatten后特征点,最后得到 [ch *ch ]的G矩阵):

在这里插入图片描述
在feature map中,每一个数字都来自于一个特定滤波器在特定位置的卷积,因此每个数字就代表一个特征的强度,Gram矩阵中的元素表示了两两特征之间的相关性,哪两个特征是同时出现的,哪两个是此消彼长的等等,对角线上的元素就体现了每个特征在图像中出现的量。

3、风格迁移中的Gram矩阵

Gram矩阵实际上是矩阵的内积运算,在风格迁移算法中,其计算的是feature map之间的偏心协方差(即没有减去均值的协方差矩阵)。在feature map 包含着图像的特征,每个数字表示特征的强度,Gram矩阵代表着特征之间的相关性,因此,Gram矩阵可以用来表示图像的风格,要度量两个图像风格的差异,只需比较他们Gram Matrix的差异即可。

深度学习中经典的风格迁移大体流程是:

  • 准备基准图像和风格图像;
  • 使用深层网络分别提取基准图像(加白噪声)和风格图像的特征向量(或者说是特征图feature map);
  • 分别计算两个图像的特征向量的Gram矩阵,以两个图像的Gram矩阵的差异最小化为优化目标,不断调整基准图像,使风格不断接近目标风格图像。

(二)ood检测

ood:标记不包含训练分布中建模的任何类的测试示例。

之前旨在改进 OOD 检测的工作可以大致分为几个主题:

  • 贝叶斯神经网络
  • 使用带有 OOD 示例的任何预先训练的 softmax 深度神经网络
  • 替代训练策略
  • 生成模型

(三)核心思路:扩展 Gram 矩阵以进行分布外检测

通过联合考虑输出层分配的类和中间层的活动模式来识别分布外的示例。 例如,如果图像被预测为狗,但中间活动模式在某种程度上与网络在训练期间看到的其他狗图像的活动模式不同,那么这就是 OOD 示例的有力指标。这有效地使我们能够检测网络做出的预测与其到达该预测的路径之间的不一致。

使用Gram矩阵描述中间特征表示。 为了描述激活路径,我们需要描述中间特征表示,并且作为描述这些表示的代理,我们使用格拉姆矩阵,因为它们不仅描述各个通道的激活,还总结通道之间的成对相互作用。另外,通过简单地将每个值与其在训练数据上观察到的各自范围进行比较,就可以识别出 Gram 矩阵中的异常情况。

(四)研究成果

通过 Gram 矩阵表征活动模式并识别 Gram 矩阵值中的异常可以产生较高的 OOD 检测率。

这个方法的优势在于:

  • 通过简单地将每个值与其在训练数据上观察到的各自范围进行比较,就可以识别出 Gram 矩阵中的异常情况。
  • 可以与任何预先训练的 softmax 分类器一起使用,既不需要访问 OOD 数据来微调超参数,也不需要访问 OOD 数据来推断参数。
  • 我们凭经验证明了跨各种架构和视觉数据集的适用性,并且对于检测远不分布示例的重要且令人惊讶的艰巨任务,它通常表现优于或等于最先进的 OOD 检测方法(包括那些假设可以访问 OOD 示例)。

二、模型细节

一种不需要访问任何 OOD 示例、不引入需要调整的超参数并且跨架构工作的方法。

Gram 矩阵可用于计算成对特征相关性,并且通常在 DNN 中用于编码纹理和图案等风格属性(Gatys 等人,2016)。我们扩展这些矩阵,如下所述,然后使用它们来计算网络多层特征相关性的类条件边界。从预先训练的网络开始,我们仅在训练集上计算这些边界,然后在测试时使用它们来有效地区分分布内样本和分布外样本。与其他 SOTA 算法不同,我们不需要“查看”任何分布外的样本来调整任何参数;唯一需要调整的是归一化因子,我们使用(分布内)测试集的随机选择的验证分区来计算该因子。

(一)符号定义

考虑的深度卷积网络有 L L L 层,第 l l l 层有 n l n_l nl 个通道,考虑 ∑ 1 < = l < = L n l ∗ ( n l + 1 ) 2 \sum_{1<=l<=L}\frac{n_l ∗(n_l +1)}{2} 1<=l<=L2nl(nl+1) 对特征图之间的特征共现。

  • F l ( D ) F_l(D) Fl(D):输入图像D的第l层特征图,存储在维度为 n l × p l n_l × p_l nl×pl 的矩阵中,其中 n l n_l nl 是第 l l l 层的通道数, p l p_l pl(每个通道的像素数)是特征图的高度乘以宽度。
  • D c , f ( D ) D_c , f (D) Dc,f(D): 输入图像 D 的预测类别
  • T r Tr Tr:所有训练示例的集合
  • V a Va Va:所有验证示例的集合。随机选择训练中未使用的 10% 的示例作为验证示例。

所有测试示例的集合与平常一样与 Tr 和 Va 不相交。并且假设只有测试集可能包含分布外示例。

(二)Gram 矩阵和高阶 Gram 矩阵

计算第 l l l层活动的Gram 矩阵d:( F l F_l Fl是之前定义的 n l ​​ × p l n_l ​​× p_l nl​​×pl 矩阵。) G l = F l F l T G_l=F_lF_l^T Gl=FlFlT
计算具有更突出的特征图激活的高阶Gram 矩阵:
G l p = ( F l p F l p T ) 1 p G_l^p=(F_l^p{F_l^p}^T)^{\frac{1}{p}} Glp=(FlpFlpT)p1

(三)预处理

预处理计算特定于类别的相关性的最小值和最大值:
在这里插入图片描述

(四)计算分层偏差

给定 NS 特征相关性的特定于类的最小值和最大值,我们可以计算测试样本与训练时看到的图像相对于每一层的偏差。为了考虑值的范围,我们将偏差计算为相对于特征共现的最大值或最小值的百分比变化;观察到的相关值与训练期间观察到的最小和最大相关值的偏差可以计算为:
在这里插入图片描述
测试图像相对于给定层 l l l的偏差是相对于每个 Σ p ∈ P 1 2 n l ( n l + 1 ) Σ_{p∈P}\frac{1}{2}n_l(n_l + 1) ΣpP21nl(nl+1) 相关值的偏差总和:
在这里插入图片描述

(五)测试图像的总偏差

测试图像的总偏差通过取分层偏差的总和来计算。然而,层向偏差的规模随着每一层的变化而变化,具体取决于层中的通道数、每个通道的像素数以及层中包含的语义信息。因此,我们将偏差归一化。
在这里插入图片描述
此外,我们可以通过将上述项除以 MSP 来考虑最大 softmax 概率 (MSP)。在某些情况下,这会略微提高检测率。

(六)阈值

作为标准,用于区分分布外数据和分布内数据的阈值 τ 计算为测试数据总偏差的第 95 个百分位数 (Δ(D) )。换句话说,计算阈值使得95%的测试样例的偏差小于阈值τ;基于阈值的判别器为:
在这里插入图片描述

(七)计算复杂度

对于单个示例,提取上对角线元素需要 O ( Σ l n l ( n l + 1 ) 2 ) O( Σ_l \frac{n_l (n_l +1)}{2}) O(Σl2nl(nl+1)) 。因此,偏差的预处理和测试时间计算都是通道数量的二次方。为了减少计算时间并使其与通道数量呈线性关系,我们实际上可以基于行总和而不是单个元素来计算偏差。

(八)与 Mahalanobis 检测的关系

共同点:两种算法都根据类条件分层偏差计算总偏差:
在这里插入图片描述

区别:

  • Mahalanobis 算法使用通道均值作为分层激活 Fl 的描述,我们使用高阶 Gram 矩阵作为 Fl 的(更紧密耦合)描述。
  • 计算缩放值和分层偏差的方式不同。

三、实验

(一)实验配置

  • 模型:DenseNet 和 ResNet
  • 数据集:各种计算机视觉基准数据集(例如:CIFAR-10、CIFAR-100、SVHN、TinyImageNet、LSUN 和 iSUN)
    • 在 CIFAR-10、CIFAR-100 数据集上训练的 ResNet34 和 DenseNet3 模型,分布外数据集为:TinyImagenet、LSUN 、SVHN和 iSUN。
    • 在 SVHN 数据集上训练的 ResNet34 和 DenseNet3 模型,分布外数据集为:TinyImagenet、LSUN 、CIFAR-10 和 iSUN。
  • 指标:
    • TNR@95TPR:当真阳性率 (TPR) 高达 95% 时,正确识别 OOD(负)示例的概率
    • 检测精度:区分分布内和分布外示例时在所有可能阈值上的最大可能分类精度。如果为分布内示例分配较高分数,即为: m a x τ 0.5 P i n ( f ( x ) ≥ τ ) + 0.5 P o u t ( f ( x ) < τ ) max_τ {0.5P_{in}(f (x) ≥ τ ) + 0.5P_{out}(f (x) < τ )} maxτ0.5Pin(f(x)τ)+0.5Pout(f(x)<τ);如果为分布内示例分配较高分数,即为: m a x τ 0.5 P i n ( f ( x ) ≤ τ ) + 0.5 P o u t ( f ( x ) > τ ) max_τ {0.5P_{in}(f (x) ≤τ ) + 0.5P_{out}(f (x)> τ )} maxτ0.5Pin(f(x)τ)+0.5Pout(f(x)>τ)
    • AUROC:TPR 与 FPR 图下面积的度量。例如,对于那些为分布内示例分配较高分数的方法,这测量了 OOD 示例比分布内示例分配较低分数的概率。

(二)实验结果

表中显示了模型架构和训练数据集的所有组合的 OOD 检测性能比较。 ODIN 的超参数以及 Mahalanobis 的超参数和参数是使用 OOD 数据集的随机样本进行调整的。

  • 在总共 32 种组合中,作者所提出的方法在其中 22 种中优于之前的竞争方法, 7 场比赛达到标准杆,其中 3 场比赛取得第二高成绩。
  • 如果使用 FGSM 对抗性示例而不是真实的 OOD 示例对 Mahalanobis 和 ODIN 算法的超参数和/或参数进行微调,则它们的性能会下降。
    在这里插入图片描述

(三)消融实验

  • Q1 如果考虑严格对角元素或严格非对角元素而不是完整的Gram格拉姆矩阵会怎样?
  • Q2 如果偏差是根据平均值而不是极值计算的,会发生什么?
  • Q3 如果我们在聚合时不对分层偏差进行归一化,会发生什么情况?

为了回答Q1-Q3,作者进行了12个实验:Q1的3个选择×Q2的2个选择×Q3的2个选择。研究结果发现,虽然没有一条规则是不被例外打破的,但我们提出的组合——即使用完整的 Gram 矩阵、使用最小/最大度量以及使用归一化,通常比我们尝试过的任何其他组合都更稳健。

在回答 Q4 和 Q5 时,我们考虑通过回答 Q1-Q3 确定的最稳健的设置。

  • Q4 哪些层表示最有用?

    • 较低级别的表示在区分分布内和分布外数据集方面提供了更多信息。
    • Cifar-100 的高级表示和低级表示之间的检测能力差异比 Cifar-10 更大。
      在这里插入图片描述
  • Q5 哪些阶的 Gram 矩阵最有用?

    • 高阶 Gram 矩阵在区分分布内和分布外方面提供更多信息
    • 忽略阶数大于 4 时的变化,我们发现 TNR @ 95TPR 随着阶数的增加而增加,最终饱和。
      在这里插入图片描述

四、局限性和未来的工作

(一)近分布异常值

近分布异常值与远分布异常值的区分: 遵循 Hendrycks 等人的惯例,CIFAR10 与 CIFAR100 任务可以被视为近分布异常值,其余任务视为远分布异常值。然而,近分布异常值和远分布异常值们之间的区别并没有明确定义。 “Near-OOD”往往隐含地用来指代那些与训练集非常相似的示例,如果不了解分布内示例的结构,就不可能检测到它们。

研究现状:

  • 传统上,OOD 检测算法是通过考虑远分布离群值来评估的。并且,由于提出一种通用算法来检测这些远离分布的例子一直具有挑战性,促使早期的论文对远离分布的例子的来源做出假设。
  • 检测近分布异常值的任务比检测远分布异常值更具挑战性。

本文的方法也是在检测远分布分类器,并且与几乎所有其他当前远 OOD 检测器一样,它对于近 OOD 示例表现不佳。

(二)改进的 δl

高阶 Gram 矩阵估计与改进的 δl 估计相结合,将来可能有助于获得更好的结果。比如说均值偏差在某些特定情况下会有优势:对于ResNet和DenseNet结构,考虑偏离均值可将SVHN vs CIFAR-10任务的TNR@TPR95提高到94%。

(三)隐式置信度预测

softmax 预测(使用 OE 训练时)和分层偏差包含互斥的信息,此外,使用经过异常值暴露训练的网络的度量与使用经过交叉熵损失训练的网络获得的结果相当。鉴于使用内部特征表示可靠地检测 OOD 示例而不对数据源做出任何假设的可行性已被证明,未来一个自然的研究问题是训练程序和/或网络架构的修改是否可以隐式产生对异常更敏感的可靠置信度估计在中间特征表示中。

参考:
格拉姆矩阵(Gram matrix)详细解读

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DHCP工作过程以及抓包分析

从PC1的e0/0/1接口进行抓包 客户端基于UDP、源端口68、目标端口67进行广播请求&#xff0c;源IP0.0.0.0&#xff0c;&#xff08;无效地址&#xff0c;代表本地无地址&#xff09;目标IP255.255.255.255&#xff1b; 从下面截图可以看出&#xff1a; 源mac为电脑mac&#xff…

steam和epic的使用

steam和epic的使用 介绍 这俩都是游戏平台。 登录注册 steam 使用网吧uu加速器打开steam 点击启动游戏&#xff1a;&#xff08;网吧实例&#xff0c;接着点启动&#xff09; 两种方法&#xff1a; 1.直接点内个“创建免费账户”。然后直接注册就行&#xff08;我在网…

论文笔记:UNDERSTANDING PROMPT ENGINEERINGMAY NOT REQUIRE RETHINKING GENERALIZATION

ICLR 2024 reviewer评分 6888 1 intro zero-shot prompt 在视觉-语言模型中&#xff0c;已经取得了令人印象深刻的表现 这一成功呈现出一个看似令人惊讶的观察&#xff1a;这些方法相对不太受过拟合的影响 即当一个提示被手动工程化以在给定训练集上达到低错误率时&#xff0…

【测开求职】校招生在面测开前需要了解的信息

博主在2021年拿到了字节测开实习的offer&#xff0c;实习时长4个月&#xff0c;并于2023年秋招拿到了字节测开的校招offer&#xff0c;仅以本专栏记录对该岗位的所思所想。 目录 1. 测试开发需要做什么工作2. 为什么选择测试开发3. 测试开发不如开发吗4. 如何准备测试开发 1. …

如何使用 Viggle AI 生成模特动作视频

Viggle AI 是一款基于骨骼动画的 AI 工具&#xff0c;可以将图片转换为流畅且一致的角色动画。 这意味着您可以上传一张模特全身照&#xff0c;然后指定该模特要执行的动作&#xff0c;Viggle AI 会自动生成一段由该模特执行该动作的视频。 步骤 1&#xff1a;准备工作 首先&…

【mysql 第3-10条记录怎么查】

mysql 第3-10条记录怎么查 在MySQL中&#xff0c;如果你想要查询第3到第10条记录&#xff0c;你通常会使用LIMIT和OFFSET子句。但是&#xff0c;需要注意的是&#xff0c;LIMIT和OFFSET是基于结果集的行数来工作的&#xff0c;而不是基于记录的物理位置。这意味着它们通常与某种…

栈、队列-栈的概念及结构/栈的实现/栈的顺序存储结构-队列的概念及结构、队列的实现(链式存储结构))

一、栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO (Last In First Out)的原则。 压栈&#xff1a;栈的插入操作…

数学建模----MATLAB----forwhile循环(进阶)

目录 1.for循环的运用 &#xff08;1&#xff09;求和计算 &#xff08;2&#xff09;闰年的判断 &#xff08;3&#xff09;斐波那契数列的计算 &#xff08;4&#xff09;一列数的5个数据一样&#xff0c;删除&#xff0c;5个数据不一样&#xff0c;就保留下来&#xff1…

深入解析:如何使用Xcode上传苹果IPA安装包至App Store?

目录 引言 摘要 第二步&#xff1a;打开appuploader工具 第二步&#xff1a;打开appuploader工具&#xff0c;第二步&#xff1a;打开appuploader工具 第五步&#xff1a;交付应用程序&#xff0c;在iTunes Connect中查看应用程序 总结 引言 在将应用程序上架到苹果应用商…

【Spring篇】Spring IoC DI

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring系列】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 前言一、IoC二、…

用html写一个爱心

<!DOCTYPE html> <html lang"zh-CN"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><title>爱您</title><style>* {padding: 0;margin: 0;}body {background-color: pin…

智慧公厕:提升城市管理效率,改善居民生活体验

智慧公厕作为城市基础设施的重要组成部分&#xff0c;正逐渐成为改善城市品质和提升居民生活体验的一项关键措施。通过智能化管理、数字化使用和信息化运行&#xff0c;智慧公厕不仅可以为城市居民带来更舒适便利的使用体验&#xff0c;而且对于城市的高质量发展、宜居性和包容…

Java快速入门系列-5(Java进阶特性)

第五章:Java进阶特性 5.1 多线程与并发编程5.1.1 多线程基础5.1.2 线程同步与锁5.1.3 线程间通信与协作5.1.4 线程池5.2 Java I/O流5.2.1 字节流与字符流5.2.2 缓冲流5.2.3 对象序列化与反序列化5.3 网络编程基础5.3.1 Socket编程5.3.2 NIO编程5.4 Java反射机制反射的基本用法…

使用 ChatGPT 创建在线课程:一步一步指南与提示模板

原文&#xff1a;Creating Online Courses with ChatGPT 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 谢谢 作为对你支持的感谢&#xff0c;随意定制本书中列出的任何提示&#xff0c;并将其作为你自己的重新销售。是的&#xff0c;对你免费。 它们都结构良好且用…

深入探索力扣第12题:整数转罗马数字的算法之旅

力扣&#xff08;LeetCode&#xff09;第12题“整数转罗马数字”提供了一个绝佳的学习机会&#xff0c;不仅让我们深入古罗马的数字系统&#xff0c;也锻炼了我们的编程技巧。一起看看其背后的逻辑。 罗马数字基础 罗马数字是一种古老的数字表示方法&#xff0c;广泛用于古罗…

linux安装和使用Rancher

linux安装和使用Rancher Rancher介绍请看如下博客 arm架构安装Rancher并导入k8s集群解决Error: no objects passed to apply 华为云arm架构安装k8s(kubernetes) linux下安装Rancher Rancher部署监控k8s集群状态等,比Dashboard插件强大 提前安装好K8S 在master上执行#如果…

【GFS】大数据技术的基石,分布式文件系统的鼻祖

目录 1.概述 1.1.分布式文件系统在大数据中的基石地位 1.1.谷歌当初面对的问题 1.2.谷歌如何解决这些问题的 1.数据量大&#xff0c;数据格式复杂&#xff0c;有大文件也有小文件 2.运行在普通机器上&#xff0c;失效是常态 2.系统架构 3.读操作 4.写操作 5.追加操作…

TiDB 社区智慧合集丨解码 TiDB 性能谜题:让你的数据库发挥最强动力!

来自社区&#xff0c;回归社区。非常感谢各位 TiDBer 在之前 【TiDBer 唠嗑茶话会丨征集 TiDB 数据库性能优化大师&#xff0c;你是如何优化 TiDB 数据库性能的呐&#xff1f;】( https://asktug.com/t/topic/1005563 )里提供的各种性能优化方法。这篇帖子收集整理了大家推荐的…

STL库 —— string 类的编写

目录 一、成员函数 1.1 构造函数 1.1.1 无参构造 1.1.2 传参构造 1.1.3 优化 1.2 析构函数 1.3 拷贝构造函数 1.4 赋值运算符重载 二、容量成员 2.1 size 函数 2.2 capacity 函数 2.3 reserve 函数 2.3 resize 函数 2.4 clear 函数 三、元素访问成员 3.1 [] 的…

希尔排序解读

在算法世界中&#xff0c;排序算法是至关重要的一部分。而希尔排序&#xff08;Shell Sort&#xff09;作为一种基于插入排序的改进算法&#xff0c;通过允许交换非相邻元素&#xff0c;从而在一定程度上提高了排序效率。本文将深入探讨希尔排序的原理、实现方式以及它的性能特…