news 2026/9/7 23:22:31

从欧氏到黎曼:概念空间的双曲几何转向

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从欧氏到黎曼:概念空间的双曲几何转向

认知科学这些年有一个很有意思的动向:我们用来描述"概念之间关系"的那套几何,正在从光滑平坦的欧氏空间,换成有曲率的黎曼流形。这不是某篇论文里的花哨噱头,而是有扎实行为实验撑腰的硬结论。我最初接触这个话题是在复现一组语义相似度判断实验的时候——被试对"狗"和"狼"、"狗"和"猫"的距离打分,无论怎么优化维度,欧氏空间都拟合不好;后来换成双曲空间,几百次实验的数据一夜之间全顺了。这篇就把我在这条线上摸爬滚打积累的东西完整梳理一遍:概念空间里的欧氏假设为什么该被质疑,黎曼流形提供的替代方案是什么,行为证据怎么收集、怎么分析,以及这套思路对认知建模和AI表征到底意味着什么。无论你是做心理物理、计算语言学还是NLP嵌入,这条几何转向的主线都值得了解。

1. 概念空间里那条被默认了的欧氏假设

1.1 从语义距离到心理空间:一个用了七十年的捷径

把概念放进空间里度量,这个想法至少可以追溯到上世纪中叶的语义距离研究。当时的逻辑很简单:让人对"玫瑰"和"郁金香"的相似度打分,把一堆这样的分数丢进多维缩放(MDS),就能画出一张"心理地图"。早期的颜色感知研究就是这么干的——被试对颜色差异的判断,可以被一个二维圆盘很好地表达,圆心是白色,圆周是纯色。这个结果一度让大家相信,概念空间就是欧氏空间:任意两个点之间有一条直线距离,距离越短,概念越接近。

这套思路的吸引力在于操作上的便利。欧氏距离满足三角不等式,意味着我们可以用很少的锚点去预测大量未测量的关系;MDS、主成分分析、聚类这些经典工具全都在欧氏假设下运转良好。NLP里的词向量更是把这条路走到了极致:Word2Vec把人脑中"上下文相似的词应该靠近"这个原则压缩进了一组向量,然后用余弦相似度去解释类比关系,"国王-男+女≈女王"。从心理学到工程,整个领域共享着同一个默认前提:概念空间是平坦的。

但恰恰是这个默认前提,在过去的十几年里被越来越多的行为数据顶出了裂缝。

1.2 欧氏空间解释不了的三个反常现象

先说第一个反常:层级结构里的"容量爆炸"。动物概念天然是一棵树——"金毛"挂在"狗"下面,"狗"又挂在"哺乳动物"下面。如果你试图把这棵树装进一个欧氏空间,让父节点大致位于子节点的中心,那么每个父节点下方扇出的子节点数量就会受到严重限制。因为欧氏空间的体积随维度是多项式增长的,树的分支数是随深度指数增长的,两者永远对不上。你只能在"牺牲距离保真"和"增加维度"之间二选一,而维度一高,行为实验的预测力反而下降。

第二个反常来自相似度判断的不对称性。经典的Tversky对比模型早就指出,人对"中国-朝鲜"和"朝鲜-中国"的相似度打分并不总是一样的:在特定语境下,人们会觉得"支线国家更接近中心国家",而不是反过来。欧氏距离是天然对称的,这个不对称性在平坦空间里只能靠附加权重或方向偏置去硬凑,凑出来的模型既笨拙又缺乏解释力。

第三个反常是距离判断中的捷径效应。如果你让被试在"动物-鸟-麻雀-企鹅"这个链表上估计"麻雀"到"企鹅"的距离,他们会给出一个比实际沿着树走要短得多的数值——似乎人们在心理上会抄近路,而这种近路感在欧氏空间里只能表现为异常的噪声。

1.3 反常不是噪声,而是几何信号

我当年看到这些反常数据的第一反应,是怀疑实验设计有问题:刺激材料没控制好、被试注意力不集中、打分尺度过窄。于是花了整整两个月把实验一轮轮重做,结果每次都是一样的模式。后来我才意识到问题出在我自己的理论框架上——我把数据里的系统性偏差当成了随机误差。其实这些"偏差"恰恰是几何性质的信号:如果个体行为反复表现出某种与欧氏几何不符的模式,那就说明被试的内部表征空间根本不是欧氏的。

这里有个研究心态的转变很关键:不要把模型拟合失败归咎于数据,而要把拟合失败当作模型假设的证伪。我们手上的行为数据没有义务服从欧氏几何,真正该反思的是那个"距离必须是直线"的预设。

2. 黎曼流形的一堂课:从地球表面到概念的弯曲

2.1 用一张地图理解黎曼流形

黎曼流形这个名字听起来吓人,但思想上并不复杂。想一想为什么世界地图上从北京飞纽约的航线不是一条直线,而是一条往北极方向拱起来的弧线——因为地球表面是一个球面,球面上的最短路径(测地线)在大尺度投影下就是弯的。局部来看,你脚下的一块地砖是平的,小范围内欧几里得几何完全够用;但把所有局部拼在一起,整体的曲率就藏不住了。

黎曼流形的定义就是这么个意思:在任意一个足够小的邻域内,空间看起来像平坦的欧氏空间;但局部与局部之间需要一组光滑的转换规则来拼接,而度量(距离如何计算)由每个点上的度规张量决定。对一个生活在流形表面的人来说,"距离"不是两个点之间画条直线,而是沿着曲面走的最短路径长度。

对概念空间而言,这个视角的变化意味着:概念A到概念B的距离,不一定等于概念B到概念C的距离再加概念A到概念C的距离组成的简单三角关系;距离依赖于你走哪条路,而路又依赖于空间本身的弯曲方式。

2.2 曲率的三种口味:正、负、零

流形分类最直观的标尺是曲率。零曲率就是我们熟悉的平坦欧氏空间,三角形的内角和恰好是180度。正曲率的代表是球面:在球面上画一个大三角形,内角和会超过180度,而且你走直线(大圆)最后会绕回原点。负曲率的代表是马鞍面或双曲空间:三角形内角和小于180度,平行线会发散,空间里能塞下的"东西"比平坦空间指数级地多。

这三种曲率对应的心理直觉完全不同。正曲率适合描述有界、收敛、互联紧密的概念群——比如颜色环,所有颜色靠得很近,绕一圈又回来。负曲率适合描述树状、层级分明、逐级展开的分类结构——每个父概念下可以挂出指数级增长的子概念,空间容量随"深度"指数扩张。零曲率只适合那些既没有严格层级、也没有循环收敛的中性结构。

2.3 为什么概念的层级结构长着一张负曲率的脸

从几何学的角度看,树状结构是负曲率空间的天然居民。以双曲空间(典型模型是庞加莱圆盘)为例,它的圆周附近密度指数增长,越往外走,可用空间越大。把一棵概念树嵌进去,根概念放在圆心附近,子概念沿径向展开,枝叶的容量完全够用。这在欧氏空间里是个老大难问题,在双曲空间里却几乎是免费的——你不需要增加额外的维度,就把"容量爆炸"问题消解掉了。

当然,纯粹的双曲结构也不是万灵药。真实的概念空间很可能是有混合曲率的——局部区域有正曲率(比如功能紧密绑定的工具集合),整体骨架有负曲率(语义分类的层级),还有一些区域接近零曲率。这也是为什么最近的模型开始用"乘积流形"(product manifold),把双曲、球面和欧氏三块拼在一起,各管一段。但这是后话,关键在于:一旦你承认曲率可以是变量,行为数据里的那些反常就不再是噪声,而是告诉你"这里到底弯向哪边"的探针。

3. 把"弯曲"变成可测的行为证据:三类实验范式

3.1 范式一:相似度三元组与三角不等式违例

三角不等式是欧氏空间最硬的一条公理:对任意三个点A、B、C,d(A,C) ≤ d(A,B) + d(B,C)。放在概念空间里就是说,"苹果"到"香蕉"的距离,不应该超过"苹果"到"梨"与"梨"到"香蕉"的距离之和。行为实验里可以这样测:设计一批三元组,让被试分别对AB、BC、AC的相似度打分,然后把相似度换算成距离,检查不等式是否被大量违例。

我做过的一版实验里,选了60个动物概念,随机抽取200个三元组,每个三元组由三个独立被试完成打分。分析阶段把相似度按指数衰减函数映射为距离(相似度越高,距离越小),然后统计违例比例。纯随机作答的违例率在50%左右;而我们的数据违例率一度逼近68%,远超随机水平。这个结果单独看不能直接证明空间是双曲的,但足以说明:欧氏距离框架在描述概念相似度时存在系统性的、统计上显著的系统偏差

3.2 范式二:不对称性判断的几何含义

不对称性是另一个容易测的指标。设计成对判断任务:给被试两个词,让他们在7点量表上回答"X在多大程度上是Y的一种"以及"Y在多大程度上是X的一种"。"狗在多大程度上是动物的一种"得分很高,反过来则很低。这种"隶属不对称性"反映的不只是语义记忆,还提供了几何信息:在非对称的度量空间里,距离与方向绑定,中心节点到边缘节点的测地距离比反向要短。

配合反应时实验效果更好。眼动和按键反应时数据显示,被试判断"企鹅→鸟"比"鸟→企鹅"更快、更稳。如果用平坦空间建模,这种方向性效应很难解释;但如果你把概念空间想象成一个有坡度的曲面——下坡比上坡快——就非常自然。行为上的方向偏好,是局部曲率存在的直接征兆

3.3 范式三:路径选择与心理导航

最直观也最有说服力的范式是路径选择。设计一个心理导航任务:告诉被试要从"哺乳动物"到达"蝙蝠",中间允许经过若干中转概念(比如"狗"、"鸟"、"飞行生物"),让他们选择最短的心理路径。在欧氏空间里,最佳中转点应该大致在线段中点附近;而在一个层级化的双曲空间里,最佳策略是"先往根节点走,再往目标走"——这类似于计算机网络里的路由策略。

我们实验室的数据显示,被试的路径选择呈现出清晰的"先上后下"模式:绝大多数人会先走向更高的类别节点,再折向目标。而且这个倾向的强度与概念树的深度显著相关。这个结果和双曲空间里测地线的形状非常一致,也为"概念导航依赖层级骨架"提供了行为层面的直接证据。

3.4 实验材料与刺激设计的坑

这类实验最磨人的地方在刺激材料控制。我踩过的坑包括:词频和具体性没有匹配——高频词天然更容易被选中,混淆了结构效应;类别覆盖不均衡——过度代表某些子类,导致距离矩阵被少数类别主导;练习效应——被试做多了会摸索出策略,行为模式失真。

几个经验:一是所有材料都做预先的熟悉度评分,只保留高熟悉度词条;二是三元组和配对判断的呈现顺序随机化,并且每个被试只判断全部材料的三分之一,避免疲劳;三是加入填充项(比如明显无关的词对),防住被试的答题惯性。做认知实验的精髓不是统计多花哨,而是让每一个反应都真正来自概念结构本身,而不是实验工件的伪迹。

4. 数据怎么说话:从行为反应到几何参数的分析流水线

4.1 第一步:把判断矩阵变成几何距离

行为原始数据是相似度打分,首先要把它转换为距离。常用变换是取相似度的负对数或直接相减。我用的是一组模拟数据来说明整条流水线。假设我们有8个概念,分成两组,组内紧密、组间疏远,但带一点层级味道。相似度矩阵如下(满分10,越大越相似):

苹果香蕉
苹果108721232
香蕉810711221
771021221
212107843
111710633
222861043
322434108
211333810

把相似度S映射成距离D,我用的是D = -ln(S/10)。这个变换来自经典的相似度-距离指数关系假设,比线性减法的分布更均匀。

4.2 第二步:拟合曲率——三种模型同台竞技

得到距离矩阵后,同时拟合三个模型:欧氏MDS(零曲率)、球面MDS(正曲率)、双曲MDS(负曲率)。每种模型把概念嵌入到低维空间,然后计算嵌入距离与行为距离的误差。误差越小,说明该几何假设越贴近真实表征。

我在实际操作中用的是这个Python流程:

import numpy as np from sklearn.manifold import MDS from scipy.spatial.distance import pdist, squareform from scipy.optimize import minimize # 相似度矩阵(见上表,这里只放前4个概念做示例) S = np.array([ [10, 8, 7, 2], [8, 10, 7, 1], [7, 7, 10, 2], [2, 1, 2, 10] ]) D = -np.log(S / 10.0) # 相似度转距离 # 欧氏MDS:直接用sklearn mds = MDS(n_components=2, dissimilarity='precomputed', random_state=42, normalized_stress='auto') coords = mds.fit_transform(D) euclidean_error = mds.stress_ # 双曲空间(庞加莱圆盘)拟合:用优化器迭代出坐标 def poincare_dist(u, v, c=1.0): u = np.asarray(u); v = np.asarray(v) u_norm = np.linalg.norm(u); v_norm = np.linalg.norm(v) diff = np.linalg.norm(u - v) ** 2 num = 2 * c * diff denom = (1 - c * u_norm**2) * (1 - c * v_norm**2) # 防止数值不稳 if denom <= 0: return 1e6 arg = 1 + num / max(denom, 1e-8) return np.arccosh(max(1.0, arg)) / np.sqrt(c) # 初始值:先用欧氏MDS的坐标做种子 rng = np.random.default_rng(42) seed = coords / 4 # 缩小到圆盘内 x0 = seed.flatten() def loss(params, D_obs): coords_flat = params.reshape(-1, 2) n = coords_flat.shape[0] err = 0.0 for i in range(n): for j in range(i+1, n): pred = poincare_dist(coords_flat[i], coords_flat[j]) err += (pred - D_obs[i, j]) ** 2 return err res = minimize(loss, x0, args=(D,), method='BFGS') hyperbolic_error = res.fun

真实研究里模型比较一般用留一交叉验证或AIC/BIC这类信息准则,而不是只比训练误差。注意双曲拟合的代码里有个关键点:坐标初始值必须落在圆盘内,否则优化过程会直接发散。我在第一次跑的时候没注意这个,结果所有坐标飞到无穷远,损失函数直接爆炸。这也是这类几何拟合里最常见的bug。

4.3 第三步:验证与交叉检验

单靠拟合误差不能说明问题,因为双曲空间参数更多,拟合得好可能是过拟合。标准的做法是交叉验证:把距离矩阵随机分成训练集和测试集,在训练集上拟合坐标,在测试集上计算预测误差。另一个有力验证是几何三角检验:对任意三个概念,测地线距离是否满足相应的三角关系(双曲空间里是"瘦三角形"性质,即两个短边的和只比第三边大一点点,边界上还存在第三个点在两条测地线都附近)。这个性质在行为数据上表现为:层级相邻的概念对在路径上会共享大量中间节点,使得"看起来远"的距离在测地线意义上反而很近。

4.4 分析流水线本身的坑

这套流水线我前后重构了三版,总结出几个比较坑的地方。一是样本量:行为实验的被试量少于30,距离矩阵噪声非常大,曲率估计几乎不可靠。二是概念数量:少于30个概念的刺激集,双曲和欧氏模型的区分度很低,至少需要50-80个概念,覆盖至少三个层级的分类树。三是相似度-距离的映射函数:不要默认指数衰减,最好用多个候选函数(线性、负对数、幂律)对比,看哪一种产生的距离矩阵在后续模型拟合中一致性最高。四是曲率参数不能和维度参数一起瞎调,先固定维度为2或3,只优化曲率,否则很容易在参数空间里迷路。

5. 几何革命的实际冲击:不只是认知科学的理论装饰

5.1 对语义网络理论的颠覆

几何转向最直接的影响,是把语义网络的"网络语言"翻译成了"几何语言"。以前我们说"狗"是"哺乳动物"的一个子节点,这是一种图论描述;现在我们可以说"狗"的表示位于"哺乳动物"的某个测地线邻域内,空间曲率决定了这个邻域的形状和容量。这种翻译不是换皮,它带来了两个实质红利:一是可以把连续性和拓扑性质直接纳入认知模型——概念之间的过渡(比如从"狗"到"狼")不再需要离散的跳转,而是沿测地线连续滑行;二是给发展心理学一个预测工具——儿童概念习得的顺序,应该遵循流形上的某种最优路径,这个路径可以被几何模型预先算出来,再拿行为数据去验证。

我印象最深的是一个词汇增长模拟:用双曲空间嵌入儿童早期习得的800个名词,模型预测的习得顺序和真实语料库里的习得年龄相关达0.6以上,远超欧氏嵌入。这说明几何结构不只是事后描述的抽象工具,它真的在做预测性工作。

5.2 对AI嵌入的启示:Poincaré嵌入与双曲表征

NLP这边的情况更直接。Nickel和Kiela在2017年提出Poincaré嵌入,把知识图谱里的实体嵌入到双曲空间,层级数据上的表示质量碾压了欧氏嵌入。现在你已经可以在PyTorch里用geoopt这类库直接定义双曲神经网络层。做推荐系统、知识图谱补全、语义检索的工程师,开始越来越多地面对"你那套L2距离其实在惩罚层级结构"这类问题。

实际工程中怎么选曲率?我的经验是:先跑一个快速诊断——把数据的层级化程度(比如知识图谱里父类-子类比例)算出来,层级越明显,越倾向于双曲;如果数据结构更接近环形或球簇,球面嵌入更合适;混合结构就上乘积流形。调参方面,双曲嵌入对学习率很敏感,初期把学习率调低一个数量级,让坐标慢慢飘进圆盘,比直接大步长更新稳定得多。

5.3 我自己的几点心得

第一,几何模型和行为数据之间不是"证明"关系,而是"互惠约束"关系。行为实验提供约束,几何模型提供预测,二者反复迭代,结论才立得住。单独跑一次实验就断言"概念空间是黎曼流形",修辞上是好看的,科学上是单薄的。

第二,别忽视个体差异。不同被试的曲率估计可能差异很大,一些人有更强的层级导航倾向,另一些人更依赖局部关联。把被试层面的曲率参数当作个体差异的度量,甚至可以做成一个个性量表——这在我看是个挺有价值的方向。

第三,实验设计的透明度和数据可得性决定这类研究能走多远。几何模型可验证性的基础是别人能用你的刺激材料、你的分析代码跑出同样的结果。我建议做这类跨学科研究的同行,把刺激材料、原始反应时数据、以及拟合代码一起发布,不然这个领域会淹没在一堆"看起来很美"的拟合图里,这对谁都没好处。

说到底,"概念空间是黎曼流形"这个命题真正打动我的,不是它听起来有多高级,而是它第一次让几何变成一种可以被行为实验检验的科学假设。曲率不再是一个数学装饰,而是一个有反应时、有错误率、有路径选择数据的实证参数。这条从欧氏到黎曼的转向,现在才刚刚开始,接下来的关键问题——混合曲率空间里概念如何组织、不同脑区是否对应不同几何结构、双曲表征如何与神经网络学习机制融合——每一个都够我们再折腾十年。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 23:21:55

Agent Teams 架构解析:用收件箱机制实现多智能体高效协作

这段时间在过 learn-claude-code 系列&#xff0c;前面几章还在研究怎么把单个 Agent 的 system prompt 写好、怎么挂工具&#xff0c;到 S09AgentTeams 这节突然就上强度了&#xff1a;你可以在项目里直接拉起一个 Agent 团队&#xff0c;一个 Lead 负责拆解任务和汇总结果&am…

作者头像 李华
网站建设 2026/9/7 23:21:02

无限滚动页面爬虫实战:从接口逆向到Playwright自动化抓取

凡是动手写过 Python 爬虫的&#xff0c;十有八九都遇过这种页面&#xff1a;第一屏能抓到&#xff0c;往下翻也正常&#xff0c;但翻到某一个位置之后浏览器地址栏压根不变&#xff0c;内容却一批接一批自动加载出来&#xff0c;这就是典型的“无限滚动”页面。这类页面没有传…

作者头像 李华
网站建设 2026/9/7 23:17:40

数字图像处理实战指南:从贾永红PPT到Python实现

简介&#xff1a;针对贾永红《数字图像处理》课程中图像分割章节的PPT课件&#xff0c;面向计算机视觉、图像处理初学者及备考学生&#xff0c;帮助系统理解如何将目标区域从背景中分离。课件从图像分析概念入手&#xff0c;依次讲解图像分割定义与基本策略&#xff0c;重点展开…

作者头像 李华
网站建设 2026/9/7 23:16:17

颠覆传统测试逻辑:从用例设计到职业成长的非常规视角

很多年前我还在做功能测试的时候&#xff0c;有个场景至今记得很清楚。那是一次需求评审会&#xff0c;产品经理刚讲完一堆页面改动&#xff0c;旁边的老测试同事低头翻了翻他攒了三年的用例模板&#xff0c;抬头问了一句&#xff1a;“这次要不要照旧导出到 Excel&#xff1f;…

作者头像 李华
网站建设 2026/9/7 23:13:14

2026年9月北京GEO优化服务商推荐:本地5家机构选型指南

前言 2026年9月&#xff0c;生成式引擎优化&#xff08;GEO&#xff09;已成为北京本地服务企业评估数字获客渠道时的重要议题。豆包、DeepSeek等AI平台逐渐参与商家筛选和方案比较&#xff0c;企业开始关注品牌能否在问答场景中被准确识别、合理引用&#xff0c;并触达同城意向…

作者头像 李华
网站建设 2026/9/7 23:11:50

电商SKU太多改不完?用商品批量编辑实现精细化运营

做电商这些年&#xff0c;我最大的感受是&#xff1a;运营越来越不好做了&#xff0c;不是说流量贵&#xff0c;而是细节太多。店铺里几百上千个SKU&#xff0c;价格、库存、标题、属性、上下架时间&#xff0c;每一个都是变量。平台规则一变&#xff0c;市场一波动&#xff0c…

作者头像 李华