第 39 题:InterHAt的层次化注意力,如何建模特征组的层级结构?
题目
InterHAt的层次化注意力,如何建模特征组的层级结构?
完整讲解
一、特征组的层级结构是什么
在推荐/CTR 里,特征常按语义分层:例如最底层是「原始特征」(年龄、性别、物品 ID、城市等),再往上是「特征组」或「field」(用户画像、物品属性、上下文),再往上可以是「模块级」(用户侧、物品侧、交叉侧)。层级结构指:组与组之间有包含或从属关系(如「用户画像」包含「年龄、性别」),或不同层级的抽象程度不同(底层细粒度、上层粗粒度),希望模型能同时利用「组内」和「组间」的关系。
二、InterHAt 的层次化注意力怎么建
InterHAt(Interpretable Hierarchical Attention)用多层注意力对应多层结构:
- 底层:特征级 attention。在每组(field)内部,对组内各特征的 embedding 做 self-attention 或类似聚合,得到「组表示」;同时得到组内每个特征的权重,表示该特征在组内的重要性。
- 上层:组级 attention。把各组的表示当作新的一层「token」,再对这些组做 attention,得到「组与组」之间的权重和最终的组级聚合表示;表示哪些组之间、哪些组整体更重要。
- 可有多层:若业务上还有更高层(如用户侧/物品侧),可再对「侧」做一层 attention,形成「特征 → 组 → 侧」的层级注意力。
这样,每一层 attention 负责一层结构:底层学组内关系,上层学组间关系,层级与 attention 的层级一一对应,既建模了特征组的层级,又便于可解释(每层可可视化权重)。
三、层级如何与网络结构对应
- 输入:按 field/组组织好的特征 embedding,例如 list of (field_embedding_matrix)。
- 第 1 层 attention:在每个 field 内做 attention,输出每个 field 的向量表示 + 组内权重。
- 第 2 层 attention:以各 field 的表示为输入,做 field 之间的 attention,输出 field 级权重与全局表示。
- 更高层(若有):继续把当前层输出当「超组」的表示,再 attention。
参数上,每层有各自的 $Q,K,V$ 或 scoring 网络;层级结构由「先组内、再组间」的拓扑固定,不是 DNN 那种「全连接层」的扁平结构,因此是显式的层次化建模。
四、小结
InterHAt 通过「特征 → 组 → (可选)更高层」的逐层 attention,让每一层 attention 对应一层特征组层级,从而建模组内重要性与组间重要性,并保持可解释性。
面试要点
- 能说清「特征组的层级」:如特征 → 组(field) → 侧,或组内/组间两层。
- 能描述 InterHAt:底层 attention 在组内、得到组表示;上层 attention 在组间、得到组间权重与全局表示;可堆叠更多层对应更高层级。
- 能说明层级与网络对应:每层 attention 负责一层结构,拓扑是「先组内再组间」,显式层次化。
记忆要点
- InterHAt:层次化注意力 = 底层组内 attention + 上层组间 attention,可再加更高层。
- 层级结构:特征 → 组 → (可选)侧;每层 attention 对应一层。
- 实现:按 field 组织输入,先算组内权重与组表示,再算组间权重与全局表示。