google-research graph_embedding/metrics:无监督嵌入质量评估指标库实战指南
google-research graph_embedding/metrics无监督嵌入质量评估指标库实战指南【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research本指南围绕 google-research 仓库中的 graph_embedding/metrics 模块展开该模块是论文《Unsupervised Embedding Quality Evaluation》arXiv:2305.16562的官方实现提供一套无需标签即可评估嵌入embedding表示质量的指标集。读完本文你将掌握该库的安装运行方式、七个核心指标的数学定义与源码实现细节、合成测试用例的行为解读以及如何在自监督学习SSL场景下用它检测表示坍缩representation collapse等退化现象。模块定位为什么需要无监督的嵌入质量评估在自监督学习Self-Supervised LearningSSL中模型学到的嵌入往往缺乏标签监督信号评估其质量是个经典难题。传统的做法需要借助下游任务线性探测、KNN 分类等间接衡量成本高且依赖任务选择。而 graph_embedding/metrics 提供了一套纯无监督的评估方案只输入嵌入矩阵本身dense matrix即可从谱结构、秩、行向量几何特性等多个角度量化表示质量从而在没有标注数据的情况下判断嵌入是否发生坍缩即所有样本被映射到同一个点或极低维子空间导致信息丢失嵌入的有效维度/秩是否合理嵌入的各向异性与谱衰减程度如何嵌入的簇结构是否清晰。从仓库结构看graph_embedding 目录下还包含 dmon、ddgk、huge、monet、persona、slaq、watch_your_step 等多个图嵌入相关子项目而 metrics 模块作为独立库存在可被任何嵌入方法复用。快速上手运行官方示例仓库在 graph_embedding/metrics/README.md 中给出了唯一一条运行命令。在仓库根目录执行# 从 google-research/ 根目录运行 python3 -m graph_embedding.metrics.example运行后程序会依次打印论文中使用的所有指标值。该命令实质上是执行 graph_embedding/metrics/example.py其运行逻辑如下构造三组合成数据作为测试用例zeros、ones、random对每组数据调用report_all_metrics批量计算全部指标按指标名排序后以case_name metric_name: value的格式逐行输出每组之间用*分隔。可调参数absl flags从 example.py 的源码可以看到两个命令行参数Flag类型默认值说明--n_pointsint1024嵌入矩阵的行数样本数 / 聚类数lower_bound0--n_dimsint128嵌入矩阵的列数特征维度lower_bound0例如想用 512 个样本、64 维嵌入验证指标表现可运行python3 -m graph_embedding.metrics.example --n_points512 --n_dims64批量计算入口report_all_metrics 与 SVD 预计算graph_embedding/metrics/metrics.py 是全部指标实现的载体核心入口是report_all_metrics(tensor)metrics.pydef report_all_metrics(tensor): Computes all metric values given a tensor and its SVD. # Pre-compute SVD for metric computations. u, s, _ np.linalg.svd(tensor, compute_uvTrue, full_matricesFalse) fns [ rankme, coherence, pseudo_condition_number, alpha_req, stable_rank, ne_sum, self_clustering, ] return dict((fn.__name__, fn(tensor, uu, ss)) for fn in fns)该函数有两个关键设计一次性预计算 SVD先对输入矩阵做一次np.linalg.svd(tensor, compute_uvTrue, full_matricesFalse)得到左奇异向量u与奇异值向量s再分发给各指标函数复用避免每个指标重复做分解大幅降低计算开销统一的函数签名约定所有指标函数都遵循(tensor, sNone, uNone, epsilon1e-12, **_ )的可选参数约定——调用方可以传入预计算的奇异值s或左奇异向量u以复用未传入时各函数会自行调用 SVD 兜底例如pseudo_condition_number在s is None时执行np.linalg.svd(tensor, compute_uvFalse)epsilon为数值稳定性常数默认1e-12用于防止除零或对数零值。返回值是一个Mapping[str, float]键为指标函数名值为对应指标值便于直接序列化或接入下游分析。七大指标逐一详解以下七个指标构成了论文《Unsupervised Embedding Quality Evaluation》的完整评估体系全部实现在 metrics.py 中。1. RankMe有效秩出处Garrido 等人《RankMe: Assessing the Downstream Performance of Pretrained Self-Supervised Representations by Their Rank》arXiv:2210.02885源码注释见 metrics.py。源码实现def rankme(tensor, sNone, epsilon1e-12, **_): if s is None: s np.linalg.svd(tensor, compute_uvFalse) p_ks s / np.sum(s epsilon) epsilon return np.exp(-np.sum(p_ks * np.log(p_ks)))原理先将奇异值归一化为概率分布p_ks并加epsilon保证非零再计算其香农熵的指数形式。直观理解若嵌入的各奇异值大小相近熵最大RankMe 值接近嵌入维度d表示信息分散、秩高若奇异值高度集中如坍缩到单一方向熵很小RankMe 接近 1。该指标可直接用于筛选预训练模型——RankMe 高通常意味着下游任务表现更好。2. Coherence一致性 / 相干性源码实现metrics.pydef coherence(tensor, uNone, **_): if u is None: u, _, _ np.linalg.svd(tensor, compute_uvTrue, full_matricesFalse) maxu np.linalg.norm(u, axis1).max() ** 2 return maxu * u.shape[0] / u.shape[1]原理基于左奇异向量矩阵u的行范数最大值。先求每行的L2范数并取最大者平方再乘以行数 / 列数作为归一化。该指标度量奇异向量在样本上的集中程度若某些奇异向量被少数样本主导行范数异常大Coherence 值偏高提示嵌入中存在极端样本或数据结构上的不均匀分布。3. Pseudo-condition number伪条件数源码实现metrics.pydef pseudo_condition_number(tensor, sNone, epsilon1e-12, **_): if s is None: s np.linalg.svd(tensor, compute_uvFalse) return s[-1] / (s[0] epsilon)原理取最小奇异值与最大奇异值之比分母加epsilon防止除零。经典条件数是s[0] / s[-1]越大越病态本指标取倒数形式值越接近 1 表示矩阵越各向同性、数值越稳定值接近 0 则说明最小奇异值远小于最大奇异值嵌入在某个方向上几乎坍缩。它衡量的是嵌入协方差谱的动态范围是对表示病态程度的快速诊断。4. Alpha-ReQ谱衰减指数出处Agrawal 等人《α-ReQ: Assessing representation quality in self-supervised learning by measuring eigenspectrum decay》NeurIPS 2022源码注释见 metrics.py。源码实现def alpha_req(tensor, sNone, epsilon1e-12, **_): if s is None: s np.linalg.svd(tensor, compute_uvFalse) n s.shape[0] s s epsilon features np.vstack([np.linspace(1, 0, n), np.ones(n)]).T a, _, _, _ np.linalg.lstsq(features, np.log(s), rcondNone) return a[0]原理将奇异值加epsilon后取对数对一条从 1 到 0 线性递减的斜坡linspace(1, 0, n)做最小二乘线性回归返回回归系数a[0]即斜率。该斜率刻画了特征谱的衰减速度绝对值越大说明奇异值从大到小衰减越快、信息越集中于少数主方向谱越尖接近 0 则谱相对平坦。论文中该指标与下游表示质量有较强的相关性可作为预训练质量的离线判据。5. Stable rank稳定秩源码实现metrics.pydef stable_rank(tensor, sNone, epsilon1e-12, **_): if s is None: s np.linalg.svd(tensor, compute_uvFalse) trace np.square(tensor).sum() denominator s[0] * s[0] epsilon return trace / denominator原理由矩阵分析中的经典概念而来。trace(tensor²)等于所有奇异值平方之和即 Frobenius 范数平方除以最大奇异值平方后得到的是一个对奇异值微小扰动不敏感的有效秩——它等于Σ sᵢ² / s₁²取值范围在 1完全坍缩到嵌入维度之间。相比硬秩非零奇异值个数稳定秩能平滑地反映实际起作用的维度有多少即使奇异值不为 0 也能捕捉到维度的虚胖。6. NESum归一化特征谱和出处He Ozay《Exploring the Gap between Collapsed Whitened Features in Self-Supervised Learning》ICML 2022具体见论文 Definition 4.1源码注释见 metrics.py。源码实现def ne_sum(tensor, epsilon1e-12, **_): cov_t np.cov(tensor.T) ei_t np.linalg.eigvalsh(cov_t) epsilon return (ei_t / ei_t[-1]).sum()原理先计算嵌入的协方差矩阵np.cov(tensor.T)维度为d×d用eigvalsh求出其特征值已升序排列加epsilon后以最大特征值ei_t[-1]做归一化再求和。该指标衡量协方差谱的平坦程度若所有特征值大小接近比值之和接近维度d表示白化程度高、表示信息充分若仅少数特征值占主导比值之和接近 1表示嵌入塌缩进低维子空间。论文用它刻画 SSL 中坍缩 vs 白化两个极端之间的连续状态。7. SelfCluster自聚类指标源码实现metrics.pydef self_clustering(tensor, epsilon1e-12, **_): tensor tensor epsilon tensor / np.linalg.norm(tensor, axis1)[:, np.newaxis] n, d tensor.shape expected n n * (n - 1) / d actual np.sum(np.square(tensor tensor.T)) return (actual - expected) / (n * n - expected)原理这是唯一一个不依赖奇异值、而是直接分析行向量几何关系的指标。步骤为先对每行做L2归一化加epsilon防除零再计算样本间的 Gram 矩阵tensor tensor.T并求所有元素平方和作为actual。expected是对各样本方向随机均匀分布这一零假设下actual的期望值对角项贡献n非对角项在d维球面上均匀分布时的期望为n(n-1)/d。最终结果将实际值相对于期望值做归一化范围约为 01接近0行向量方向接近均匀随机无多余簇结构对随机高斯嵌入通常如此接近1行向量高度一致全部同向表示嵌入坍缩或过度聚集。合成测试用例的行为解读example.py 构造了三组具有代表性的合成数据来演示指标行为cases { zeros: np.zeros((_N_POINTS.value, _N_DIMS.value)), ones: np.ones((_N_POINTS.value, _N_DIMS.value)), random: np.random.randn(_N_POINTS.value, _N_DIMS.value), }结合 metrics.py 的数学定义从源码逻辑可以推断三组用例各自的预期语义zeros全零矩阵代表极端坍缩的退化输入。所有奇异值为 0stable_rank约为 0self_clustering经epsilon扰动与行归一化后各行方向几乎一致值趋近 1rankme因概率分布集中于 epsilon 级数值而极低。它对应模型把一切映射到原点的最坏情况。ones全一矩阵代表秩为 1 的退化输入。所有样本是同一个方向向量仅有一个非零奇异值stable_rank d / n默认 1024×128 下约为 0.125、ne_sum接近 1、self_clustering接近 1。它对应模型把所有样本映射到同一方向的典型坍缩。random标准正态随机矩阵代表良态、高秩输入。以大概率满秩且各奇异值相对均匀rankme、stable_rank接近嵌入维度dne_sum接近dself_clustering接近 0伪条件数相对接近 1。它是理想表示的对照基准。因此运行示例程序不仅能验证库可用性也相当于一次指标的标定实验把真实嵌入的各项数值与上述三组基线的位置对比即可快速判断其质量区间。在自监督学习实践中的使用方式结合论文主题与源码结构该库的典型用法可以归纳为三类模型筛选在预训练多个候选模型后无需标注即可对各自的嵌入调用report_all_metrics用rankme、stable_rank、ne_sum等指标挑选信息量最充分的模型再对少数入选者做下游微调。坍缩监测在训练过程中周期性抽取嵌入批量计算self_clustering与pseudo_condition_number一旦self_clustering攀升、伪条件数趋近 0即可提前发现表示坍缩及时调整损失或正则化项。可复用的库接口由于report_all_metrics只接受一个numpy稠密矩阵任何产出(n_samples, d_dims)嵌入张量的系统图嵌入、视觉 SSL、文本表示等都可以直接调用。注意该库不依赖 TensorFlow/JAX仅需要numpy接入成本极低。引用与联系方式如果你在研究中使用了这些指标README 要求引用以下论文Tsitsulin, A., Munkhoeva, M., Perozzi, B., (2023). Unsupervised Embedding Quality Evaluation. arXiv preprint arXiv:2305.16562.BibTeX照录自 README.mdarticle{tsitsulin2023unsupervised, title{Unsupervised Embedding Quality Evaluation}, author{Tsitsulin, Anton and Munkhoeva, Marina and Perozzim Bryan}, journal{arXiv preprint arXiv:2305.16562}, year{2023} }此外metrics.py 源码注释中还引用了三个构成指标来源的关键工作RankMeGarrido 等arXiv:2210.02885、NESumHe OzayICML 2022、α-ReQAgrawal 等NeurIPS 2022如需深入理解各指标的推导可查阅对应论文。对实现有疑问或建议可按 README.md 中的信息联系作者 antontsitsul.in 或 bperozzigoogle.com。小结graph_embedding/metrics 是一个轻量、纯 numpy 实现、接口统一的无监督嵌入质量评估库report_all_metrics一次 SVD 计算七个指标example.py提供开箱即用的标定演示。无论你是研究自监督表示学习、图嵌入还是需要在无标签场景下监控表示质量这套指标集都能作为可靠、可复现的离线评估工具直接落地。【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Egg 项目 TypeScript 基础配置包 @eggjs/tsconfig 完全指南:从安装、配置项解析到版本演进

Egg 项目 TypeScript 基础配置包 @eggjs/tsconfig 完全指南:从安装、配置项解析到版本演进

Egg 项目 TypeScript 基础配置包 eggjs/tsconfig 完全指南:从安装、配置项解析到版本演进 【免费下载链接】egg 🥚🥚🥚🥚 Born to build better enterprise frameworks and apps with Node.js & Koa. https://307.…

2026/9/21 2:17:12 阅读更多 →
Hyperledger Fabric osnadmin channel 命令完全指南:orderer 通道参与管理实操与源码解析

Hyperledger Fabric osnadmin channel 命令完全指南:orderer 通道参与管理实操与源码解析

区块链密码学 【免费下载链接】fabric Hyperledger Fabric is an enterprise-grade permissioned distributed ledger framework for developing solutions and applications. Its modular and versatile design satisfies a broad range of industry use cases. It offers a u…

2026/9/21 2:17:12 阅读更多 →
基于BiLSTM的轴承剩余寿命预测及MATLAB GUI实现

基于BiLSTM的轴承剩余寿命预测及MATLAB GUI实现

简介:一套基于MATLAB的BiLSTM轴承剩余寿命预测实战项目,面向具备编程基础、从事故障诊断与预测性维护的科研人员和工程师。项目围绕振动信号采集、预处理、滑动窗口序列构建、BiLSTM回归建模及评估可视化展开,覆盖从数据构造到GUI交互部署的完…

2026/9/21 2:16:12 阅读更多 →

最新新闻

react-admin 实时订阅实战:深入掌握 `useSubscribeToRecord` 单记录事件订阅 Hook

react-admin 实时订阅实战:深入掌握 `useSubscribeToRecord` 单记录事件订阅 Hook

react-admin 实时订阅实战:深入掌握 useSubscribeToRecord 单记录事件订阅 Hook 【免费下载链接】react-admin A frontend Framework for single-page applications on top of REST/GraphQL APIs, using TypeScript, React and Material Design 项目地址: https:/…

2026/9/21 3:27:56 阅读更多 →
在 Vue 3 应用中接入 json-render DevTools:@json-render/devtools-vue 完整接入与源码解析

在 Vue 3 应用中接入 json-render DevTools:@json-render/devtools-vue 完整接入与源码解析

在 Vue 3 应用中接入 json-render DevTools:json-render/devtools-vue 完整接入与源码解析 【免费下载链接】json-render The Generative UI framework 项目地址: https://gitcode.com/GitHub_Trending/js/json-render json-render/devtools-vue 是 json-ren…

2026/9/21 3:27:56 阅读更多 →
Etherpad 自更新子系统 Tier 3 深度解析:带宽限窗口的自动升级(Auto-Update with Grace Window)

Etherpad 自更新子系统 Tier 3 深度解析:带宽限窗口的自动升级(Auto-Update with Grace Window)

后端协同办公WebSocket前端富文本 【免费下载链接】etherpad Etherpad: A modern really-real-time collaborative document editor. 项目地址: https://gitcode.com/gh_mirrors/et/etherpad 点击查看 免费下载 Etherpad 内置的"自更新子系统"&#xff0…

2026/9/21 3:27:55 阅读更多 →
lark-cli apps +plugin-list 命令完全指南:妙搭应用插件声明与安装状态核验

lark-cli apps +plugin-list 命令完全指南:妙搭应用插件声明与安装状态核验

CLIAI 技能 【免费下载链接】cli The official Lark/飞书 CLI tool, maintained by the larksuite team — built for humans and AI Agents. Covers core business domains including Messenger, Docs, Base, Sheets, Calendar, Mail, Tasks, Meetings, and more, with 200 co…

2026/9/21 3:27:55 阅读更多 →
Gradle 属性命名规范 ADR-0010:org.gradle 前缀体系下的 public/internal 与特性稳定性契约

Gradle 属性命名规范 ADR-0010:org.gradle 前缀体系下的 public/internal 与特性稳定性契约

构建工具开发工具 【免费下载链接】gradle Adaptable, fast automation for all 项目地址: https://gitcode.com/gh_mirrors/gr/gradle 点击查看 免费下载 本文是 Gradle 仓库 architecture/standards/0010-gradle-properties-naming.md 这份架构决策记录&#xff…

2026/9/21 3:27:55 阅读更多 →
V8 字符串表示体系详解:从 SeqString 到 ConsString 的内部表示、internalization 与 String Table

V8 字符串表示体系详解:从 SeqString 到 ConsString 的内部表示、internalization 与 String Table

语言运行时编译器JIT编译解释器内存管理 【免费下载链接】v8 The official mirror of the V8 Git repository 项目地址: https://gitcode.com/gh_mirrors/v81/v8 点击查看 免费下载 导读 JavaScript 中的字符串是最基础的数据类型,V8 并没有使用单一的…

2026/9/21 3:26:55 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →