从Manifold到SNE再到t-SNE再回到Manifold

news2025/1/16 8:46:47

在介绍t-SNE之前,要从流形开始讲起。

流形Manifold

将流形引入到机器学习领域主要有两个用途:
  1. 改进原本欧式空间中的算法,使它能作用到流形上,直接或者间接地利用和流行的性质和构造。
  2. 将流形映射到欧式空间中,令欧式空间中的算法能对流形起作用。

eg. Isomap就是一个典型的将原本存在于欧式空间的算法进行改造,将流形映射到欧式空间的算法。

测地线 vs 直线

欧式空间中用线段(直线)测量两点之间的距离;流形中也一样,不过这条“直线”就不是直的了,称为测地线。

另一方面是改造现有算法使其适合流形结构甚至专门针对流形的特点来设计新的算法,比较典型的是 graph regularized semi-supervised learning 。当然,所有的这些都是基于同一个假设,那就是数据是分布在一个流形上的(部分算法可能会有稍微宽松一些的假设),然而 real world 的数据,究竟哪些是分别在流形上的呢?这个却是很难说。不过,除了典型的 face 和 hand written digit 之外,大家也有把基于流形的算法直接用在诸如 text 看起来好像也流形没有什么关系的数据上,效果似乎也还不错。

在实际应用中,获取测地距离是比较困难的,一般通过构造kNN图,在图中寻找最短路径距离作为真实的测地距离。

kNN图

构建kNN图的常见方法一般有三类:第一类是空间分割树(space-partitioning trees)算法,第二类是局部敏感哈希(locality sensitive hashing)算法,第三类是邻居搜索(neighbor exploring techniques)算法。其中k-d(Random Projection Tree)树和随机投影树均属于第一类算法。

SNE

核心思想很简单,在高维空间中相似的数据点,在映射后的低维空间中也相似。常规做法是将欧式距离作为相似度度量。考虑高维空间中的两个数据点xi和xj,xi以条件概率pj∣i选择xj作为它的邻近点。
![请添加图片描述](https://img-blog.csdnimg.cn/0b673e6b38d24460a0cc8685a80855bc.png =2请添加图片描述
77x))
假设高维数据点xi和xj在低维空间的映射点分别为yi和yj。类似的,低维空间中的条件概率用qj∣i表示
请添加图片描述)

可推。若考虑xi与其他所有点之间的条件概率,则可构成一个条件概率分布Pi,同理在低维空间存在一个条件概率分布Qi且应该与Pi一致。那么,如何衡量两个分布之间的相似性…?

KL距离!(Kullback-Leibler Divergence)。SNE算法的目的就是最小化这个目标函数。优化算法可以使用梯度下降法。
请添加图片描述)
似乎到这里问题就解决了,但是注意观察目标函数,当pj∣i较小而qj∣i较大时,函数的代价居然也较小。为什么说“居然”呢,刚才讲了pj∣i较小表示两个数据点在高维空间中距离较远,qj∣i较大表示两个数据点在映射的低维空间中距离较近,这个时候得到的代价居然偏小,这就有问题了。也就是说,SNE只关注到全局数据,而忽略了局部数据。

对称SNE

关键在于,它解决了SNE存在的不对称问题。

在原始的SNE中,pi∣j与pj∣i是不相等的,低维空间中qi∣j与qj∣i也是不相等的。所以如果能得出一个更加通用的联合概率分布更加合理,即分别在高维和低维空间构造联合概率分布P和Q,使得对任意i,j,均有pij=pji,qij=qji。

相应地,将pij和qij定义为:
请添加图片描述)请添加图片描述)

?是这样吗。

由于KL散度的不对称性,这样定义的分布又会遇到跟SNE一样的问题。因此这里采用一个更简单直接的定义:
请添加图片描述)
相应地,目标函数写成:
请添加图片描述)
相比刚才定义的公式,这个梯度更加简化,计算效率更高。但是别高兴的太早,虽然我们解决了SNE中的不对称问题,得到了一个更为简单的梯度公式,但是Maaten指出,对称SNE的效果只是略微优于原始SNE的效果,依然没有从根本上解决问题。

拥挤问题 The Crowding Problem

由于我们生活在一个低维的世界中,我们对于数据可视化的接受程度最多不超过三维,超过这个维度的可视化我们便难以理解了。这也是为什么在讨论流行的时候,总喜欢以“Swiss roll”为例,这不过是将二维流形嵌入到三维空间而已。实际上,流形的实际应用远比它要复杂得多。举个例子,在10维流形上可以存在11个点且两两之间距离相等。在二维空间中呢?我们最多只能使三个点两两之间距离相等,想将高维空间中的距离关系完整保留到低维空间是不可能的。随着维度的不断增大,定会存在数据点拥挤问题。

t分布

t分布是典型的长尾分布。在稳定分布中,除了正态分布,其他均为长尾分布。长尾分布在处理小样本和异常点具有良好的效果。
使用自由度为1的t分布重新定义qij:

Alt
依然用KL距离衡量两个分布之间的相似性,此时梯度变为:
请添加图片描述
这就是最终的t-SNE算法,它相比最初的SNE做了两个改进:1)SNE改为对称的SNE;2)t分布代替高斯分布。

回到Manifold

对于t-SNE在获取数据在流形空间中相似性的方法,有很多中改进方法。以及对于测度度量的方法,也能有很多改进。
当然,本文只是浅谈流形,对于其测地线、距离度量方法都有很多值得我们深究探讨的地方。

参考:
[1]: https://bindog.github.io/blog/2016/06/04/from-sne-to-tsne-to-largevis/
[2]: https://blog.pluskid.org/archives/533

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

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

相关文章

软件测试面试:年后就拿到了5个offer,希望也能助你拿下满意的offer

求职,就像打仗,不仅是一场挑战自己的战斗,也是一场与用人单位的较量。 而求职者只有准备足够充分,才能在这场毫无硝烟的“战场”上取得胜利。 那么软件测试面试需要做哪些准备以及软件测试面试需要哪些技巧呢? 1、熟…

ThreadLocal 适合用在哪些实际生产的场景中?

在通常的业务开发中,ThreadLocal有两种典型的使用场景 场景1,ThreadLocal 用作保存每个线程独享的对象,为每个线程都创建一个副本,这样每个线程都可以修改自己所拥有的副本, 而不会影响其他线程的副本,确保线程安全 …

【内网安全-隧道搭建】内网穿透_Frp上线、测试

目录 Frp(简易上线) 1、简述: 2、工具: 3、使用: 1、准备: 2、服务端(公网): 2、客户端(内网): 3、测试方法: 4、…

【Linux】基础IO --- 软硬链接、acm时间、动静态库制作、动静态链接、动静态库加载原理…

我用执着烧死了所有的幼稚和任性,那片荒野慢慢长出了理智冷漠和清醒。 文章目录一、软硬链接1.软硬链接的区别(是否具有独立的inode)2.软硬链接的作用2.1 软链接作用(建立快捷方式)2.2 硬链接作用(防止误删…

PLC信号处理系列之滤波器设计(MATLAB滤波器设计工具箱介绍)

在学习和应用滤波器解决工程问题之前,需要了解一定的信号处理相关基础知识,有关信号和系统的学习笔记可以参看下面的专栏: https://blog.csdn.net/m0_46143730/article/details/128788864https://blog.csdn.net/m0_46143730/article/details/128788864命令行窗口输入>&g…

排序模型进阶-FTRL

5.8 排序模型进阶-FTRL 学习目标 目标 无应用 无 5.8.1 问题 在实际项目的时候,经常会遇到训练数据非常大导致一些算法实际上不能操作的问题。比如在推荐行业中,因为DSP的请求数据量特别大,一个星期的数据往往有上百G,这种级别…

combit Report Server 28

combit Report Server 28 Added Microsoft SharePoint Online task action.Added support for PostgreSQL 15.Added support for Microsoft SQL Server 2022.Added new option to Microsoft Excel export template. Converting texts starting with “” into Excel formula.Im…

力扣:除自身以外数字的乘积(详解)

前言:本期是关于除自身以外数字的乘积的详解,内容包括四大模块:题目,代码实现,大致思路,代码解读,今天你c了吗? 题目: 给你一个整数数组 nums,返回 数组 ans…

【javaEE】文件

目录 文件概念 文件路径 绝对路径 相对路径 文件类型 文本文件 二进制文件 Java中对文件的操作 对文件系统的操作 get相关方法 文件类型判断和创建 文件删除 文件目录的创建 文件重命名 对文件内容的操作 字符流(操作字符数据) 代码例子 删除文件 复制文件 …

算法刷题-求素数、数据流的中位数、不同的二叉搜索树

求素数、数据流的中位数、不同的二叉搜索树求素数数据流的中位数不同的二叉搜索树求素数 求1-100内的素数&#xff1a; public static void main(String[] args){for(int i0;i<100;i) {checkPrime(i);}}private static void checkPrime(int x){boolean isPrime true;if(x…

nodejs+vue大学生提问论坛系统vscode

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 前端技术&#xff1a;nodejsvueelementui,视图层其实质就是vue页面&#xff0c;通过编写vue页面从而展示在浏览器中&#xff0c;编写完成的vue页面…

Linux-时间和日期、磁盘信息和进程信息

为了方便通过远程终端维护服务器时&#xff0c;查看服务器上当前系统日期和时间 /磁盘空间占用情况/程序执行情况&#xff0c;本节基本都是查询命令时间和日期datecal磁盘和目录空间dfdu进程信息pstopkill1.时间和日期序号命令作用01cal查看一个月日历&#xff0c; -y选项可以查…

consul集群解决单注册弊端

consul集群前面我们用consul注册发现服务&#xff0c;这里的弊端显而易见&#xff0c;单机版如果挂掉&#xff0c;就无法正常使用。consul的集群是复制模式&#xff0c;每个节点的信息一致。当其中一个挂掉&#xff0c;其他正常运行。consul官网建议最好是3个节点&#xff0c;其…

MyEclipse安装及需要进行的配置

安装&#xff1a;https://blog.csdn.net/qq_30764991/article/details/82531415?spm1001.2101.3001.6650.9&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-82531415-blog-126523828.pc_relevant_aa2&depth_1-utm_sou…

网络游戏与未来生存——谈一下不要因为认知不到位让孩子失去未来的机会

这个话题要从几个月前的一个事件谈起&#xff0c;先看看下面的截图&#xff1a;于是&#xff0c;那一天&#xff0c;各种阴谋论甚嚣尘上&#xff0c;大多数的话题都是直指腾讯&#xff0c;说腾讯的活动能力太强了。随后几天网上也是各种关于网络游戏毁掉孩子未来的说法和观点&a…

2022区块链投融资鸟瞰:总额超千亿元,数字货币坚挺,Web3叙事强劲

文/尹宁出品/陀螺研究院从整个区块链行业来看&#xff0c;2022年&#xff0c;在全球通胀与投资受限的环境下&#xff0c;资本圈与区块链之间可谓一波三折。在TMT、新消费、生物医药等赛道的各种消极表现下&#xff0c;年初Web3与元宇宙的横空出世正中资本下怀&#xff0c;a16z、…

c++ 快排思想

文章目录讲下思想时间复杂度优化代码实现讲下思想 我这边主要是分左右两边的指针寻找 left指针从左边寻找大于p的数 right 从右寻找小于p的数 然后找到进行交换&#xff0c;直到相遇在一起 说明这个位置是分隔的位置 而p的数就是分隔的数&#xff0c;所以对p和l进行一个…

什么都不会的应届生怎么找工作?

2023年&#xff0c;很多大学应届生都会面临到的一个问题&#xff1a;疫情三年上网课没有学到什么知识和技能&#xff0c;并且学习效果大多不理想&#xff1b;现在面临就业时对自身专业技能不自信&#xff0c;怀疑自己是否能找到工作&#xff0c;更别说是适合自己喜欢的工作。面…

Vue 3.2 源码系列:有点难的《最新 diff 算法详解》

本文首发自&#xff1a;稀土掘金、思否 博客代码已上传至github 点击这里 即可访问 另提供&#xff1a;完整代码&#xff08;tsrollup&#xff09;和视频教程 序 所谓算法指的是&#xff1a;把一种数据结构转化为另外一种数据结构的方法。 在runtime(运行时)阶段存在一个无论如…

内网渗透(四)之基础知识-搭建域环境

系列文章 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 注&#xff1a;阅读本编文章前&#xff0c;请先阅读系列文章&#xff0c;以免造成看不懂的情况&#xff01;&#xff01; 搭建域环境 在…