sgr-interview-300

第 40 题:MaskNet的实例引导掩码,动态特征选择的实现机制?

题目

MaskNet的实例引导掩码,动态特征选择的实现机制?


完整讲解

一、实例引导掩码在做什么

MaskNet 的核心是实例级(instance-wise)动态特征选择:对每个样本,根据当前输入生成一个掩码,用这个掩码对特征或特征通道做加权/门控,从而不同样本看到不同的特征子集或不同的特征强度,实现「动态特征选择」。所谓实例引导,就是掩码由当前样本经过一个小网络(如 MLP)或 attention 得到,而不是全局共享的固定权重。

二、动态特征选择的实现机制

常见做法有两种(或组合使用):

  1. 基于 MLP 的掩码生成:输入为当前样本的 embedding 拼接(或 pooled 表示)$\boldsymbol{e}$,经过一两层全连接 + 激活(如 sigmoid),输出与「特征数」或「特征维度」同长的向量 $\boldsymbol{m} \in [0,1]^{n}$ 或 $[0,1]^d$。然后用 $\boldsymbol{m}$ 对特征做逐元素乘:$\tilde{\boldsymbol{e}} = \boldsymbol{m} \odot \boldsymbol{e}$(或对每个 field 一个标量掩码)。这样每个样本的 $\boldsymbol{m}$ 不同,相当于每个实例选出了「对自己有用的」特征或维度,实现动态选择。
  2. 基于 attention 的掩码:用当前样本的某个 query 表示对「所有特征」或「所有 field」做 attention,得到权重 $\alpha_i$,再用 $\alpha_i$ 对对应特征或 field 加权。attention 权重天然在 0~1 之间(softmax),且随样本变化,等价于软掩码;若对权重做 threshold 或 top-k,可得到近似「硬」选择。

训练:掩码生成器与主模型一起端到端训练;损失只来自最终预测,梯度会反传到掩码,使掩码学会「在哪些样本上突出哪些特征」能降低损失,从而学到实例相关的有用模式

三、与静态特征选择的区别

四、小结

MaskNet 的实例引导掩码 = 用当前样本的表示通过 MLP 或 attention 生成掩码向量,对特征或维度做逐元素乘(或加权),实现按样本动态特征选择;掩码与主模型联合训练,由任务目标驱动学到「何时突出哪些特征」。


面试要点


记忆要点

返回模块 返回总览