OpenMax算法详解:深度学习中的高效开集识别技术

OpenMax

OpenMax算法详解:深度学习中的高效开集识别技术

在深度学习领域,模型的识别能力往往受限于其训练数据集的范畴。传统的分类模型,如卷积神经网络(CNN)或循环神经网络(RNN),通常被设计为在闭集环境下工作,即只能识别训练时见过的类别。然而,在现实世界的应用中,模型不可避免地会遇到未知类别的数据。为了应对这一挑战,OpenMax算法应运而生,它扩展了传统分类模型的能力,使其能够识别并拒绝未知类别的输入。

一、引言

随着深度学习技术的飞速发展,其在图像识别、语音识别、自然语言处理等领域取得了显著成就。然而,一个不容忽视的问题是,现有的大多数深度学习模型都假设测试数据仅包含训练时见过的类别,这在许多实际应用场景中是不切实际的。因此,开发能够处理未知类别的开集识别算法显得尤为重要。

二、OpenMax算法概述

OpenMax算法是一种基于深度神经网络的开集识别方法,它通过对模型输出的激活向量进行后处理,实现了对未知类别的有效识别。该算法的核心思想是利用已知类别的统计特性来推断未知类别的存在。

2.1 激活向量与均值激活向量

在深度神经网络中,倒数第二层(通常是全连接层)的输出被称为激活向量(Activation Vector, AV)。对于每个已知类别,OpenMax算法计算该类所有训练样本的激活向量的均值,得到该类的均值激活向量(Mean Activation Vector, MAV)。MAV表示该类在特征空间中的中心位置。

数学表达式如下:

MAV c = 1 N c ∑ i = 1 N c AV i \text{MAV}_c = \frac{1}{N_c} \sum_{i=1}^{N_c} \text{AV}_i MAVc=Nc1i=1NcAVi

其中, MAV c \text{MAV}_c MAVc 是类别 c c c 的均值激活向量, N c N_c Nc 是类别 c c c 的样本数量, AV i \text{AV}_i AVi 是第 i i i 个样本的激活向量。

2.2 距离集与Weibull分布

对于每个类别,OpenMax算法计算该类中所有正确分类的样本的激活向量与该类别MAV之间的欧式距离,形成该类的距离集。然后,使用极值理论中的Weibull分布来拟合每个类别的距离集。Weibull分布是一种用于描述极值事件的概率分布,它能够很好地刻画距离集中的极端值。

欧式距离的计算公式为:

d i c = ∥ AV i − MAV c ∥ 2 d_{ic} = \|\text{AV}_i - \text{MAV}_c\|_2 dic=AViMAVc2

其中, d i c d_{ic} dic 是第 i i i 个样本的激活向量与类别 c c c 的MAV之间的欧式距离。

Weibull分布的概率密度函数为:

f ( x ; λ , k ) = k λ ( x λ ) k − 1 e − ( x λ ) k f(x; \lambda, k) = \frac{k}{\lambda} \left(\frac{x}{\lambda}\right)^{k-1} e^{-\left(\frac{x}{\lambda}\right)^k} f(x;λ,k)=λk(λx)k1e(λx)k

其中, λ \lambda λ 是尺度参数, k k k 是形状参数。

2.3 测试样本识别

对于测试样本,OpenMax算法首先计算其激活向量到各个类别MAV的距离,然后将这些距离分别代入对应类别的Weibull分布的累积分布函数(CDF)中,得到测试样本属于各个已知类别的概率。

累积分布函数的表达式为:

F ( x ; λ , k ) = 1 − e − ( x λ ) k F(x; \lambda, k) = 1 - e^{-\left(\frac{x}{\lambda}\right)^k} F(x;λ,k)=1e(λx)k

如果测试样本属于所有已知类别的概率之和低于某个设定的阈值(通常称为开放空间风险),则将其识别为未知类别。

为了进一步调整模型的输出概率,OpenMax引入了一个参数化的SoftMax函数,即OpenMax函数。OpenMax通过逐类缩减每个已知类别的SoftMax分数,并将它们的差值分配给未知类别。

OpenMax的计算步骤为:

  1. 计算原始SoftMax概率:假设原始分类模型输出类别为 c c c 的概率为 S c ( x ) S_c(x) Sc(x)

  2. 缩减SoftMax概率:基于每个类别的Weibull分布,计算缩减后的概率 S c ′ ( x ) S'_c(x) Sc(x),公式如下:

    S c ′ ( x ) = S c ( x ) ⋅ ( 1 − F ( d c x ; λ c , k c ) ) S'_c(x) = S_c(x) \cdot \left(1 - F(d_{cx}; \lambda_c, k_c)\right) Sc(x)=Sc(x)(1F(dcx;λc,kc))

    其中, d c x d_{cx} dcx 是测试样本到类别 c c c 的MAV的距离, λ c \lambda_c λc k c k_c kc 是类别 c c c 的Weibull分布参数。

  3. 计算未知类别概率:未知类别的概率 S unknown ( x ) S_{\text{unknown}}(x) Sunknown(x) 为原始SoftMax概率与缩减后的概率之差:

    S unknown ( x ) = ∑ c = 1 C ( S c ( x ) − S c ′ ( x ) ) S_{\text{unknown}}(x) = \sum_{c=1}^{C} \left(S_c(x) - S'_c(x)\right) Sunknown(x)=c=1C(Sc(x)Sc(x))

  4. 归一化:最后,OpenMax对所有类别的概率进行归一化处理:

    S OpenMax ( x ) = S c ′ ( x ) ∑ j = 1 C + 1 S j ′ ( x ) S_{\text{OpenMax}}(x) = \frac{S'_c(x)}{\sum_{j=1}^{C+1} S'_j(x)} SOpenMax(x)=j=1C+1Sj(x)Sc(x)

其中, C C C 是已知类别的总数。

2.4 举个栗子

为了帮助理解OpenMax算法的核心概念,我们来看一个简单的例子:

假设我们正在开发一个识别水果的模型,模型在训练时见过的水果类别有苹果、香蕉和橙子。现在,模型需要识别一个从未见过的水果——梨。

在传统的SoftMax分类器中,模型会被强制选择一个最接近的已知类别,因此它可能会错误地将梨识别为苹果、香蕉或橙子。然而,OpenMax算法通过计算梨的激活向量与苹果、香蕉和橙子的均值激活向量的距离,并利用Weibull分布评估这些距离的极端性,来判断梨是否属于已知类别。

假设计算结果显示梨与所有已知类别的距离都较远,且其属于这些类别的概率之和低于设定的阈值,OpenMax算法就会将梨识别为未知类别,并输出一个低的已知类别概率和一个较高的未知类别概率。

三、算法优势与局限性

3.1 优势

  1. 有效处理未知类别:OpenMax算法通过学习已知类别的分布特性,能够推断出未知类别的存在,从而提高了模型的泛化能力和安全性。
  2. 适用场景广泛:该算法可以应用于多种深度学习模型,如CNN、RNN等,并且适用于图像分类、文本分类等多种任务。
  3. 可解释性强:通过计算测试样本到各个类别MAV的距离,OpenMax算法提供了关于测试样本与已知类别之间相似性的直观解释。

3.2 局限性

  1. 数据需求量大:为了准确拟合每个类别的Weibull分布,OpenMax算法需要大量的已知类别数据。这在实际应用中可能是一个挑战。
  2. 计算复杂度高:由于需要计算每个类别的MAV、构建距离集并拟合Weibull分布,OpenMax算法的计算复杂度相对较高。这可能会限制其在实时或资源受限的应用场景中的使用。
  3. 对复杂数据的适应性有限:在处理高度复杂或高度重叠的数据集时,OpenMax算法的性能可能会受到影响。

四、结论与展望

OpenMax算法作为一种有效的开集识别方法,在深度学习领域具有广泛的应用前景。通过扩展传统分类模型的能力,使其能够识别并拒绝未知类别的输入,OpenMax算法提高了模型的安全性和可靠性。然而,随着数据复杂性的增加,OpenMax算法的性能可能会受到一定限制。未来的研究可以集中于优化算法的计算效率、增强其对复杂数据的适应性,并探索更多适用于实际应用的开集识别方法。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第八节:Nodify 编辑器属性

引言 经过前几章的学习,你已经对Nodify框架有了初步的编程思路。当然只局限于这些还完全不够,本章节将阐述各个结构组件的一些常用属性,以便在日后的开发过程中更得心应手。 1、编辑器 平移 简介属性默认值平移功能 控制DisablePanningfals…

100128-批量获取视频音频时长添加到文件名中支持子孙文件夹下操作-UI

程序功使用环境▶适用的系统环境说明:win7以上64位win系统注意:win32位系统/mac系统需要额外定制▶使用期限:无需注册、不绑电脑、无时间限制▶如何安装:不需要安装程序功能说明▶子文件夹穿透:支持▶支持的文件格式&a…

MySQL集群技术详解

目录 一、MySQL在服务器中的部署方法 1.1 编译安装MySQL 1.2 部署MySQL 二、MySQL主从复制 2.1 配置master 2.2 配置slave 2.3 添加slave2 测试: 2.4 延迟复制 2.5 慢查询日志 2.6 MySQL的并行复制 2.7 MySQL主从复制原理剖析 2.8 架构缺陷 三、MySQL…

学习笔记——IP组播——IP组播基本概述

二、IP组播基本概述 IP组播技术有效地解决了单播和广播在点到多点应用中的问题。组播源只发送一份数据,数据在网络节点间被复制、分发(PIM),且只发送给需要该信息的接收者。 1、前言 网络中存在各种各样的业务,从流…

EasyCVR视频汇聚平台革新播放体验:WebRTC协议赋能H.265视频流畅传输

随着科技的飞速发展和网络技术的不断革新,视频监控已经广泛应用于社会各个领域,成为现代安全管理的重要组成部分。在视频监控领域,视频编码技术的选择尤为重要,它不仅关系到视频的质量,还直接影响到视频的传输效率和兼…

企业参与制定行业标准的主要途径有哪些?需要具备哪些条件?

在当今竞争激烈的商业环境中,参与制定行业标准已成为企业提升竞争力、塑造行业地位的重要战略举措。然而,并非所有企业都有能力和资格参与这一重要的活动。要想在行业标准制定的舞台上发挥积极作用,企业需要具备一系列关键条件。 企业参与制…

mapstruct和lombok同时使用时,转换实体类时数据丢失

全局搜一下maps,找到你进行转换的方法 可以看到新建了TswCaseInfoPlus后直接返回了,说明TswCaseInfoPlus没有set方法,或者说编译后lombok没生效 在pom文件中,编译打包插件中将lombok,mapstruct,lombok-map…

3ds Max - 导出顶点色模型

很久之前的笔记,整理归档; 在3ds Max中,给模型添加VetexPaint修改器后,可以给模型(顶点色通道R\G\B默认值为255\255\255)刷不同颜色的顶点色(默认为黑色,即让RGB通道都为0&#xff0…

PY信号和槽

知不足而奋进 望远山而前行 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 在使用PyQt进行图形用户界面(GU…

jenkins发送html邮件配置步骤与注意事项?

jenkins发送html邮件如何实现?Jenkins的配置方法? 通过jenkins发送html邮件,开发团队可以及时获取构建状态的详细报告,从而快速响应问题,提高工作效率。AokSend将详细介绍jenkins发送html邮件的配置步骤与注意事项&am…

【实现100个unity特效之28】皮毛shader着色器 实现可以用动的毛茸茸毛绒绒效果

效果 文章目录 效果一、内置渲染管线下载支持几只着色器Basic 基本Attributes 属性Force 力Rim Color 轮辋颜色 二、URP下载几只毛发着色器实现的示例Shell 壳Fin 翅片Fur Polygon 毛发多边形Compare 比较Move 移动 完结 一、内置渲染管线 缺点是仅支持内置渲染管线。且无法毛…

各个版本jdk新特性

jdk8新特性 方法引用:方法引用允许直接通过方法的名称来引用已经存在的方法,简化了函数式接口的实现。默认方法(Default Methods):默认方法允许在接口中定义具有默认实现的方法,以便接口的实现类可以继承该…

Linux基础知识(一、什么是Linux)

一、Linux之父——林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds) Linux操作系统最初是在1991年10月份由芬兰赫尔辛基大学的在校生Linus Torvalds所发布,最初被发布的LINUX0.02版本因其高质量的代码与开放源代码,迅速引起了一大批黑客的加…

STL中的stack与queue

前言: stack与queue是STL中的容器适配器,而不是容器。何为适配器?给手机充电的充电器就是一种适配器,将高电压变成低电压。适配器是用来做转化的,不用来直接管理数据,而是在其他容器的基础上去封装转换。 …

【Cadence23】Cadence HDL原理图如何将两个不同的全局网络连接

【转载】Cadence Design Entry HDL 使用教程 【Cadence01】Cadence PCB Edit相对延迟与绝对延迟的显示问题 【Cadence02】Allegro引脚焊盘Pin设置为透明 【Cadence03】cadence不小心删掉钢网层怎么办? 【Cadence04】一般情况下Allegro PCB设计时的约束规则设置&a…

Linux驱动开发基础(中断)

所学来自百问网 目录 1. 嵌入式中断系统 2. 中断处理流程 3. 异常向量表 4. Linux系统对中断的处理 4.1 ARM 处理器程序运行的过程 4.2 保护现场 5. Linux 系统对中断处理的演进 5.1 硬件中断和软件中断 5.2 中断拆分(上半部和下半部) 5.2.1 tasklet 5.2.2 工作队列…

Autofac容器

IoC:注册、注入(解析)、生命周期 Autofac的基本使用 基本使用 需要在NuGet包安装Autofac---建议7.1.0版本 注册: 默认注册: // 容器的初始化 ContainerBuilder builder new ContainerBuilder(); // 注册需要解析…

K8S部署MySQL5.7的主从服务

mysql-slave-0是master mysql-slave-1是slave 当mysql写的时候,找headless service中的 mysql-slave-0.mysql57-slave-headless;当mysql读的时候,找clusterip service中的mysql57-slave-read读,实现读写分离。 statefulset维护两个…

Linux操作系统常见面试题

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 分享常见的操作系统…

原创~尚未发表!基于改进秃鹰算法的多区域微网经济优化调度程序代码!

前言 随着光伏、风电等分布式电源的发展,配电网的供电模式得以改变,解决了传统火力发电带来的能源匮乏及环境污染问题,但其发电的随机性及波动性对配电网的稳定运行造成一定影响。以多个微电网组成的微电网群可有效消纳分布式电源&#xff0…