[控场AI]
· 4 分钟阅读· 2,466 字

Event2Vec:让序列评分可完全分解的事件嵌入新方法

Event2Vec:让序列评分可完全分解的事件嵌入新方法

Event2Vec 用可加的事件嵌入让线性评分可精确归因,并兼顾序列顺序。

Event2Vec 由 Reddit 开发者分享,旨在可解释性与序列建模之间找平衡。它把历史建模为事件向量的滚动求和并做范数裁剪,用 softmax 预测下一事件,训练为自监督的下一事件预测加重建项,无需人工标签。由于历史是求和,任何线性评分都能精确拆解为单个事件的贡献,便于归因。针对「加性可交换是否丢失顺序」的质疑,作者指出向量可交换但训练过程不可交换,并额外提供双曲 Möbius 加法、κ-stereographic、球面 SO(n) 旋转和海森堡群等非交换或几何化空间。项目起源于伯克利实验室 Advanced Light Source 的故障日志根因分析,代码 MIT 开源,提供 scikit-learn 风格 API 与 PyTorch 后端。

在用户行为建模、故障日志分析、临床事件序列等场景里,我们常常既需要捕捉序列中的顺序信息,又希望模型足够透明、可解释。Reddit 上一位开发者分享的 Event2Vec 项目,试图在两者之间找一条中间路线:用加性的事件嵌入来表示历史,使得任何线性评分都能精确拆解为单个事件的贡献。

核心思路:历史是事件向量的累加

Event2Vec 的结构刻意保持简单。一段历史 h_t 被定义为事件向量的滚动求和:h_t = h_{t-1} + e_{x_t},并在每一步做范数裁剪(norm-clipped),避免历史向量无限膨胀。下一个事件的预测则通过 softmax 完成:p(x_{t+1} | h_t) = softmax(W h_t + b)。

训练是自监督的,不需要人工标签,目标是做下一事件预测,同时加入一个重建项,要求 h_t - h_{t-1} 能够还原出 e_{x_t}。据作者介绍,这套机制背后的理论细节(包括多个损失函数如何协同保证算术性质在训练中成立)写在 NeurReps@NeurIPS Workshop 论文里。

这种设计的直接好处是:既然历史是求和,那么任何建立在其上的线性模型同样是求和。作者给出的例子是流失或风险评分:score = w·h + b = Σ_i (e_i·w) + b。也就是说,一个序列的评分可以精确分解为每个事件的独立贡献,这对于归因和可解释性是非常实用的性质。

范数裁剪(norm clipping) 是序列建模中的常见稳定化手段:每当历史向量按 h_t = h_{t-1} + e_{x_t} 更新后,若其 L2 范数超过预设阈值 τ,就按 h_t ← h_t · τ / max(τ, ‖h_t‖) 把它缩回球面上。它的作用类似梯度裁剪——防止向量随序列长度线性累积而爆炸,从而让后续 softmax 的 logits 数值稳定、训练不发散。代价是当序列很长时,早期事件对 h_t 的贡献会被逐步稀释,模型因此更偏向近期事件,这本身也是一种隐式的遗忘/注意力机制。

重建项 指的是除了下一事件预测损失外,额外要求 h_t − h_{t-1} 能还原出当时的嵌入 e_{x_t}。由于 h_t − h_{t-1} 恰等于 e_{x_t},这个约束直接监督嵌入本身不退化,避免模型把所有事件压到同一个平凡向量上;它与预测损失协同,使「历史即累加」这一算术性质在训练中真正成立,而不仅是结构上的假设。这属于自监督学习:监督信号由序列自身构造,无需人工标注。

向量空间可交换,但训练不是

一个容易被质疑的点是:e1 + e2 = e2 + e1 = e3,加性嵌入在欧几里得空间中是交换的,那顺序信息不就丢了吗?作者的回应是:向量嵌入本身可交换,但训练过程不是。由于下一个事件预测和重建损失的存在,模型在训练时会以不同方式对待不同顺序的事件序列。

为了更显式地处理顺序和结构,Event2Vec 还提供了若干非交换或几何化的替代空间,作为库的一部分:

  • 双曲空间(Möbius addition):适合表达层级结构;
  • κ-stereographic 模型:用单一曲率旋钮在双曲、平坦、球面之间连续调节(Bachmann et al., 2020);
  • 球面空间:用 SO(n) 旋转表示循环结构,旋转是非交换的,顺序不同终点不同;
  • 海森堡群:终点相同,但带有一个有符号面积坐标,用来记录顺序。

这些空间的存在,让模型可以在保持加性评分可分解的同时,容纳更多类型的序列结构。

Möbius addition 是双曲空间中类比欧氏加法的运算:a ⊕_c b = ((1 + 2c⟨a,b⟩ + c‖b‖²)a + (1 − c‖a‖²)b) / (1 + 2c⟨a,b⟩ + c²‖a‖²‖b‖²),其中 c 为曲率。它既非交换也非结合,但满足群公理,能把点沿测地线「平移」。用它做事件累加时,顺序会产生不同结果,且靠近边界处步长自动收缩,天然适合编码树状/层级结构。

κ-stereographic 模型(Bachmann et al., 2020)用单一曲率参数 κ 统一描述常曲率空间:κ > 0 为球面、κ = 0 为欧氏、κ < 0 为双曲,可在训练中连续调节,无需为每种几何单独设计算子。SO(n) 指 n 维特殊正交群,即行列式为 +1 的旋转矩阵集合;旋转的复合不满足交换律,因此用 SO(n) 旋转表示事件时,顺序不同会导致不同终点,适合建模周期性或循环结构。海森堡群 是三维零曲率李群,其坐标可理解为 (x, y, 面积),乘法包含交叉项,由此产生的交换子恰等于两向量张成的有符号面积——这正是它记录「顺序」的方式:终点相同但路径绕出的面积不同,从而携带顺序信息。

从同步辐射光源的故障日志说起

Event2Vec 的起点并不是推荐系统或广告,而是 Advanced Light Source(伯克利实验室)的故障序列根因分析。作者原本在事件日志上朴素地使用 Word2Vec,但很快发现需要一个能表达方向性、又不至于变成黑箱序列模型的方案。

这个背景解释了库的很多设计取向:强调可解释的加性结构、提供 scikit-learn 风格的 fit/transform API、兼容 gensim 风格的 most_similar、使用 PyTorch 后端并支持 CPU/CUDA/MPS。代码以 MIT 协议开源,可以通过 pip install event2vector 安装,论文编号为 arXiv 2509.12188,官网还提供了带交互图形的文档。

对于需要在线性评分下做事件级归因的团队,Event2Vec 提供了一种轻量且数学上干净的选项。它并不试图取代大型序列模型,而是在可解释性和序列建模之间划出一条明确的边界。

#Event2Vec#事件嵌入#加性嵌入#序列建模#可解释性#自监督学习#下一事件预测
分享:

相关推荐