论文阅读:DLME = Deep Local-flatness Manifold Embedding

news2024/11/25 0:44:06

Author: Zelin Zang, Siyuan Li, Di Wu and Stan Z Li.
1-4: Westlake University

摘要

流形学习(ML, Manifold learning)旨在从高维数据中识别低维结构和嵌入,然而我们发现现有工作在采样不足的现实数据集上效果不佳。一般的ML方法对数据结构进行建模然后构造一个低维embedding,但是采样不足的现实数据会导致局部关联性/连续性较差,或由于优化目标不合适导致结构失真、embedding存在缺陷。为解决该问题我们提出了深度的、局部平坦的、流形embedding(DLME):通过减少失真来获得可靠的embedding。该方法通过数据增强构建语义流形、借助局部平坦假设克服结构失真问题,并设计了一个新的损失,在数学上证明了局部平坦假设能够得到理想的embedding。实验表明我们的方法在下游分类聚类任务中优于SOTA方法,也优于对比学习方法。

1. Introduction

在这里插入图片描述
图1:我们的DLME包括了结构建模网络 f θ f_\theta fθ和低维嵌入网络 g ϕ g_\phi gϕ。前者将输入数据映射到可以描述数据连接的结构空间中,后者再利用局部平坦特性将卷曲的流形映射到平面嵌入空间中,以对下游任务友好并提升可辨别能力。

我们将目前的流形学习方法的问题总结为:

  • D1: 对流形嵌入的约束不足
    专注于局部结构的关系容易产生扭曲失真的嵌入,从而影响下游任务的执行,如图2(D2)和图6所示。由于对潜在特征空间的约束不足,即使是最先进的ML方法在下游任务上也会失去性能,如对比学习。

  • D2: 流形结构失真
    我们将现有方法在现实数据集上的问题归因于结构失真:现有ML方法使用输入空间中的距离来构建局部近邻图,据此来定义可以保留局部结构的无监督损失。然而,该方法引入了一个严格的假设,即局部一定存在短程连接,使得距离度量可以描述数据的近邻关系。这通常只有数据密集时才有可能满足,而在真实数据集中并不一定能得到保证。

  • D3: 局部嵌入崩溃
    最近,对比学习利用数据增广之间的相似性取得了好的性能并得到广泛关注,然而它在流形学习中遇到的了更严重的困难,因为该方法需要大量的数据进行预训练,对比学习无平滑损失导致模型学习到的特征容易局部崩溃,需要大量的数据来学习有效的知识,如图2(D3)所示。

图2
图2:传统ML和CL方法的问题。(D1):局部视角和一阶相似性约束 → \rightarrow 导致约束不足的流形嵌入;(D2):现实数据的超高维度导致数据分布稀疏/采样不良 → \rightarrow 打破流形的局部连通性 → \rightarrow 导致结构失真;(D3):对比学习非平滑的损失函数 → \rightarrow 导致局部崩溃的嵌入 → \rightarrow 对下游任务不友好。

在图1中,我们希望更好的限制潜在特征空间以防止出现结构失真问题,同时希望出现类似对比学习方法的崩溃嵌入问题,于是提出了一个两步走的模型结构:1)通过测量每个样本对的关系来获得流形的图结构,2)将得到的结构映射到低维平面特征空间中。具体来说,我们首先提出一种新的局部平坦假设,添加了二阶流形曲率约束来获得更合理的潜在空间(解决D1);然后我们设计了一个与数据增广兼容的深度学习框架使得方法可以更好的训练并scale到更大数据集上(解决D2);最后,我们根据局部平坦假设设计了一个与数据增广兼容的平滑损失函数,该函数基于长尾 t-分布来指导网络学习。我们进一步在数学上说明了为什么DLME不同与传统对比损失以及DLME为什么可以获得平面的局部嵌入。

2 Related work

3 Method

3.1 问题描述和局部平坦假设

定义1:流形学习
M \mathcal M M为欧式空间 R d \R^d Rd中的d维嵌入, f : M → R D f:\mathcal M\rightarrow \R^D f:MRD为可微的嵌入映射,流形学习的目的是从足够的采样观测数据 X = { x i } i = 1 N X=\{x_i\}_{i=1}^N X={xi}i=1N中找到 Z = { z i } i = 1 N , z i ∈ M Z=\{z_i\}_{i=1}^N, z_i\in\mathcal M Z={zi}i=1N,ziM。在我们的方法中,利用神经网络 f θ f_\theta fθ学习该映射 R D → R d \R^D\rightarrow \R^d RDRd

每个ML方法都是根据特定的流形假设设计一个损失函数,将观察到的数据 x i x_i xi映射到内在流形 z i z_i zi,例如,LLE假设局部流形是线性的,而UMAP假设局部流形是均匀的。对比之下,我们提出了潜在空间中的局部平坦假设。

假设1: 局部平坦假设(LFA)
我们希望每个数据点与其邻居位于局部的平坦平面上,我们引入了Gauss-Bonnet定理,使用平均曲率 K ‾ M \overline{K}_{\mathcal M} KM来量化高维流形的平坦程度:
在这里插入图片描述
其中, X ( M ) \mathcal X(\mathcal M) X(M)为欧拉特征(Euler Characteristic), H 1 \mathrm H_1 H1为当前数据点的1-近邻, θ ( x j , x i , x j + 1 ) \theta(x_j,x_i,x_{j+1}) θ(xj,xi,xj+1)为这三个点的角度。

从一阶约束到二阶(曲率)约束
传统方法设计保持距离(如LLE)或保持相似性(如UMAP)的目标函数,希望在映射过程中保证数据的一阶结构关系。我们引入了二阶曲率约束来解决结构失真问题。但是二阶损失的计算复杂度十分昂贵,我们因此需要利用局部平坦假设来最小化流形embedding的曲率。这种想法类似于压缩感知中的先验稀疏性——局部平坦假设期望不受约束的局部曲率信息是稀疏的

局部平坦假设的作用
对于单个流形:局部平坦假设减少了不合适的嵌入空间中的卷曲(如图6)从而避免了嵌入过程的失真。
对于多个流形:局部平坦假设可以简化多个流形之间的判别关系,在避免崩溃嵌入的同时减少了不同流形之间重叠的可能性,使下游任务可以通过简单的线性模型完成。

3.2 DLME框架

DLME的损失是根据 A i j A_{ij} Aij和从头训练的神经网络空间中的点对相似性计算的,如果来自相同数据的增广,则 A i j = 1 A_{ij}=1 Aij=1,否则 A i j = 0 A_{ij}=0 Aij=0

利用数据增广解决结构失真。利用对比学习的思想,DLME通过数据增强提供的先验知识解决由于采样点稀疏导致的结构失真问题:由于数据增强尽可能少地改变原始数据的语义,因此当原始数据的局部连接中断时,通过数据增强可以生成孤立数据点的近邻数据,从而保证了局部连接

DLME的前向过程
在这里插入图片描述
其中 x i x_i xi x j x_j xj采样自不同的随机图像增广, d y d_y dy d z d_z dz分别为嵌入维度。

DLME的损失函数
在这里插入图片描述
其中 d i j y , d i j z d_{ij}^y, d_{ij}^z dijy,dijz 为处于嵌入空间y和z中点对 ( i , j ) (i,j) (i,j)的距离度量,双路差异度量 D ( p , q ) \mathcal D(p,q) D(p,q)定义了两个潜在空间的不相似性
D ( p , q ) = p log ⁡ q + ( 1 − p ) log ⁡ ( 1 − q ) \mathcal D(p,q)=p \log q + (1-p)\log (1-q) D(p,q)=plogq+(1p)log(1q)
这是连续版本的交叉熵,用于引导两个潜在空间的点对相似性以互相匹配。

由于潜在空间的维度不同,直接计算两个空间的距离存在维度不匹配的障碍。我们因此采用t-分布作为核函数来计算点对之间的相似性,从而描述数据的分布。t-分布中的自由度 v y , v z \mathcal v_y,\mathcal v_z vy,vz是一种用于增强嵌入空间平坦度的必要设置:
在这里插入图片描述
其中Gam表示Gamma函数,自由度 v \mathcal v v控制核函数的形状。

最后, R ( A i j ) R(A_{ij}) R(Aij)将近邻信息整合到 A i j A_{ij} Aij中:
R ( A i j ) = 1 + ( α − 1 ) A i j R(A_{ij})=1+(\alpha -1)A_{ij} R(Aij)=1+(α1)Aij
即,当点j是点i的近邻时,在结构空间中的距离将被减少到 α ∈ [ 0 , 1 ] \alpha \in [0,1] α[0,1],否则设置为1,这两个点的相似度将会增加。

3.3 通过更平滑的对比学习框架来对抗局部崩溃

传统自监督对比学习框架可以写为:
L C = − E x i , x j [ A i j log ⁡ κ ( d i j z ) + ( 1 − A i j ) log ⁡ ( 1 − κ ( d i j z ) ) ] L_C=-\mathbb E_{x_i,x_j}[A_{ij}\log \kappa (d_{ij}^z)+(1-A_{ij})\log \left(1-\kappa (d_{ij}^z)\right )] LC=Exi,xj[Aijlogκ(dijz)+(1Aij)log(1κ(dijz))]
该对比学习目标是不平滑的,因为点对的学习目标随着 A i j A_{ij} Aij的变换在 log ⁡ κ \log \kappa logκ log ⁡ ( 1 − κ ) \log (1-\kappa) log(1κ)之间切换。DLME降低折衷了学习过程,避免了梯度中的尖锐冲突。为了比较DLME损失和CL损失之间的差异,我们假设 g φ g_φ gφ满足K-Lipschitz连续性,然后:
d i j z = k ∗ d i j y , k ∗ ∈ [ 1 / K , K ] d_{ij}^z=k^*d_{ij}^y, k^*\in [1/K,K] dijz=kdijy,k[1/K,K] 其中 k ∗ k^* k为Lipschitz常量。那么CL损失和DLME损失的差异为:
∣ L D − L c ∣ = E x i , x j [ A i j − κ ( ( 1 + ( α − 1 ) A i j k ∗ d i j z ) log ⁡ ( 1 κ ( d i j z ) − 1 ) ] |L_D-L_c|=\mathbb E_{x_i,x_j}\left[A_{ij}-\kappa\left ((1+(\alpha-1)A_{ij}k^*d_{ij}^z\right )\log(\frac{1}{\kappa(d_{ij}^z)}-1) \right] LDLc=Exi,xj[Aijκ((1+(α1)Aijkdijz)log(κ(dijz)11)]

分析上式,当 i i i j j j为近邻, A i j = 1 A_{ij}=1 Aij=1,再当 α → 0 \alpha\rightarrow0 α0时, α k ∗ d i j z → 0 ,   1 − κ ( α k ∗ d i j z ) → 0 \alpha k^*d_{ij}^z\rightarrow 0, \ 1-\kappa(\alpha k^*d_{ij}^z)\rightarrow 0 αkdijz0, 1κ(αkdijz)0,于是 ∣ L D − L c ∣ → 0 |L_D-L_c|\rightarrow 0 LDLc0,而当 α > 0 \alpha > 0 α>0时,DLME的最优解保留了关于embedding结构 d i j d_{ij} dij的余数,表明我们的损失不会最大化当前点和近邻点的相似性,我们的损失相比对比损失更平滑,可以保留embedding空间中的结构(只会有轻微崩溃),而不会把近邻点都压缩到一起变成崩溃embedding空间

3.4 为何DLME导致局部平坦面

本节讨论DLME如何优化局部曲率以变得更平坦。我们已经讨论了如何对结构建模并在利用对比学习防止局部连接不良的同时利用平滑损失防止崩溃解,但是流形依然是卷曲的,可能导致不同流形之间的重叠和变形,使得下游的线性模型性能下降。我们因此需要获得尽可能平坦的embedding空间,我们的损失可以控制embedding空间的平坦程度。这是因为损失函数中的基于长尾t-分布的核函数,我们在两个潜在空间中应用不同的自由度参数,自由度 v y \mathcal v_y vy v z \mathcal v_z vz的差异形成了不同的核函数 κ ( d , v y ) \kappa(d,\mathcal v_y) κ(d,vy) κ ( d , v z ) \kappa(d,\mathcal v_z) κ(d,vz)

在这里插入图片描述
图4:推拉性质。如果 d y < d p d^y<d_p dy<dp,那么 d z + < d y d^{z+}<d^y dz+<dy(黄色线拉近d),如果 d y > d p d^y>d_p dy>dp,那么 d z + > d y d^{z+}>d^y dz+>dy(粉色线拉远d)

引理1:推拉性质
v y , v z v^y,v^z vy,vz时,令 d z + = κ − 1 ( κ ( d , v y ) , v z ) d^{z+}=\kappa^{-1}(\kappa(d,\mathcal v^y),v^z) dz+=κ1(κ(d,vy),vz)为最优化损失函数的解,那么存在 d p d_p dp使得 ( d y − d p ) ( d z + − d y ) > 0 (d^y-d_p)(d^{z+}-d^y)>0 (dydp)(dz+dy)>0

DLME的伪代码:
**
先将原始和增广数据集随机采样,点对经过两个网络,计算在第一个网络下和第二个网络下embedding后的距离,再根据距离计算计算相似度,得到的结果用于损失函数的优化。

4. 实验

在这里插入图片描述
图5:(左)标签识别概率与排序距离的条形图。条形图的左端越高,表示最近邻样本的相同标签的概率越高,这意味着局部连通性得到了保证。(右)ML方法(UMAP)在四个图像数据集上的结果。复杂数据无法保证局部近邻连接导致失败。所提出的DLME方法在更复杂的CIFAR数据集上具有更好的嵌入结果。
在这里插入图片描述
图6:SwissRoll和StarFruit数据集上不同方法得到的平均局部曲率和散点图。这两个例子表明,DLME可以通过优化局部曲率来尽可能地得到合理的平坦embedding。

在这里插入图片描述
表1:在12个数据集上的效果,我们汇报了在下游线性分类和k-means聚类上的效果,下划线表示准确率高出最好的方法超过5%。

在这里插入图片描述
表2:我们也汇报了和对比学习方法的比较,许多对比学习方法得到的embedding产生了崩溃解以至于无法应用于下游的聚类任务。

在这里插入图片描述
图7:生物数据集、简单图像数据集和复杂图像数据集的可视化结果。画圈的部分标出了baseline方法的聚类互相重叠

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

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

相关文章

C++学习记录——이십 map和set

文章目录 1、setmultiset 2、map3、map::operator[] 1、set vector/list/deque等是序列式容器&#xff0c;map&#xff0c;set是关联式容器。序列式容器的特点就是数据线性存放&#xff0c;而关联式容器的数据并不是线性&#xff0c;数据之间有很强的关系。 它们的底层是平衡…

P1038 [NOIP2003 提高组] 神经网络

题目背景 人工神经网络&#xff08;Artificial Neural Network&#xff09;是一种新兴的具有自我学习能力的计算系统&#xff0c;在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向&#xff0c;兰兰同学在自学了一本神经网络的…

用PyCharm和Anaconda搭建强化学习环境

一些碎语&#xff1a;因为我之前没学习过python&#xff0c;所以搭建这个环境的周期差不多一周&#xff0c;最终搭好了这个又爱又恨的环境&#xff08;这个成语用的多少有点文化沙漠了&#xff09;&#xff0c;这里简单梳理一下搭建环境的完整步骤。 首先下载Anaconda 下载地址…

Java线程间通信方式(3)

前文了解了线程通信方式中的CountDownLatch&#xff0c; Condition&#xff0c;ReentrantLock以及CyclicBarrier&#xff0c;接下来我们继续了解其他的线程间通信方式。 Phaser Phaser是JDK1.7中引入的一种功能上和CycliBarrier和CountDownLatch相似的同步工具&#xff0c;相…

mapbox-gl 移动端(H5)位置共享交互

文章目录 前言逆地理编码&#xff1a;获取周边地点地理编码&#xff1a;查询位置大头针选位位置卡片 前言 分享最近写的一个小demo&#xff0c;功能类似微信小程序端的大头针位置共享功能&#xff0c;需要实现的主要功能包括位置查询、周边地点检索、位置定位等&#xff0c;数…

BUUCTF jarvisoj_level0

小白垃圾做题笔记而已&#xff0c;不建议阅读。。。 这道题感觉主要就是64位程序ebp8 题目中给出了shellcode 我们直接将返回地址覆盖就好。 在main函数中调用了vulnerable_function()函数。 vulnerable函数是一个漏洞函数&#xff1a;(存在缓溢出)&#xff0c;我们只需要将…

html-audio标签样式重写思路

搭配slider 组件 ,利用原生audio的属性和方法重写样式 写个样式.监听url变化 初始化绑定播放, 拖动进度条,拖动音量, 静音按钮等事件 const audioRef ref(null) // 绑定audio标签 const playProcess ref(0) // 进度条绑定的值 const volume ref(1) // 音量绑定的值 const …

C++ STL之vector容器

目录 一、vector容器的介绍 二、vector容器的使用 1.vector的构造函数 2.vector的赋值操作 3.vector的容量与大小 4.vector的插入和删除 5.vector的数据存取 6.vector的互换容器 7.算法模块在vector的应用 ①find算法(std) ②sort算法(std) 一、vector容器的介绍 引…

07 - 进程创建大盘点

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. 进程创建回顾2. 再论进程创建2.1 思考2.2 vfork()深度分析2.3 vfork()要点分析2.4 fork()的现代优化2.5 编程实验&#xff1a;fork() &…

【安卓源码】Binder机制2 -- addService 流程

0、binder 进程间通信原理 一次完整的 Binder IPC 通信过程通常是这样&#xff1a; 首先 Binder 驱动在内核空间创建一个数据接收缓存区&#xff1b; 接着在内核空间开辟一块内核缓存区&#xff0c;建立内核缓存区和内核中数据接收缓存区之间的映射关系&#xff0c;以及内核中…

PHP入门【1】环境搭建

目录 一&#xff0c;安装appserv组合包 二&#xff0c;运行第一个php程序 一&#xff0c;安装appserv组合包 组合包&#xff1a;将apache&#xff0c;mysql&#xff0c;php等服务器软件和工具安装配置完成后打包处理 组合包大大提高了我们的效率&#xff0c;不需要为配置环境…

Linux服务器出现503 服务不可用错误怎么办?

​  HTTP 503 服务不可用错误代码表示网站暂时不可用。无论您是网站访问者还是管理员&#xff0c;503 页面都很麻烦。尽管该错误表明存在服务器端问题&#xff0c;但对于访问者和网络管理员来说&#xff0c;有一些可能的解决方案。本文将解释Linux服务器出现503 服务不可用错…

PowerShell Studio 2023 Crack

PowerShell Studio 2023 Crack SAPIEN Script Packager为MSI Builder添加了ARM64平台支持。 增加了对Microsoft PowerShell 7.2.11和7.3.4的支持。 WiX工具集已更新到3.14。 PowerShell Studio 2023 Crack是可用的功能最强大、功能最完整的PowerShell集成脚本环境(ISE)之一。更…

通达信VCP形态选股公式,憋了好几天才写出来

VCP形态的英文”Volatility Contraction Pattern”的缩写&#xff0c;意思是“波动收缩形态”。VCP形态是全美交易冠军马克米勒维尼的核心交易模式之一&#xff0c;在其著作《股票魔法师》中有详细介绍。 马克米勒维尼把VCP形态比喻为湿毛巾&#xff0c;拧过一次后仍含水&…

动态链接库的链接和运行

本文对动态链接库的链接和运行进行一个总结&#xff0c;为什么要分开说呢&#xff1f;因为链接通过生成可执行文件并不代表运行时能找到依赖的动态库。这与静态库是不一样的&#xff0c;因为静态库在编译完成后会库会编译到可执行程序中&#xff0c;但是动态链接库则不然&#…

最新研究:可审计的具有拜占庭鲁棒的联邦学习方案

本人新论文&#xff0c;可免费下载&#xff1a;https://download.csdn.net/download/liangyihuai/87727720 Y. Liang, Y. Li and B. -S. Shin, “Auditable Federated Learning With Byzantine Robustness,” in IEEE Transactions on Computational Social Systems, doi: 10.…

【Unity3D日常开发】Unity3D中实现UI擦除效果、刮刮卡功能

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 使用Unity3D实现UI的擦拭效果、刮刮卡功能的效果实现方式比较多…

Python基于Pytorch Transformer实现对iris鸢尾花的分类预测,分别使用CPU和GPU训练

1、鸢尾花数据iris.csv iris数据集是机器学习中一个经典的数据集&#xff0c;由英国统计学家Ronald Fisher在1936年收集整理而成。该数据集包含了3种不同品种的鸢尾花&#xff08;Iris Setosa&#xff0c;Iris Versicolour&#xff0c;Iris Virginica&#xff09;各50个样本&am…

BatchNormalization和LayerNormalization的理解、适用范围、PyTorch代码示例

文章目录 为什么要NormalizationBatchNormLayerNormtorch代码示例 学习神经网络归一化时&#xff0c;文章形形色色&#xff0c;但没找到适合小白通俗易懂且全面的。学习过后&#xff0c;特此记录。 为什么要Normalization 当输入数据量级极大或极小时&#xff0c;为保证输出数…

【算法基础】直接插入排序 + 希尔排序

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;【C/C】算法 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有…