论文arxiv:https://arxiv.org/abs/2606.01111(作者:bilibili搜索团队。已被ECML-PKDD 2026录用)
一、现状与挑战
在深度学习推荐系统中,想要自动化地筛选特征,并没那么简单。现有的特征选择方法在真实的工业场景下,目前依然存在以下挑战:
挑战1 维度异构问题
工业模型的输入极其复杂,既有 1D 的连续统计特征,也有高达 128D 甚至 256D 的用户行为序列 embedding。用统一的惩罚项来约束所有特征,这就导致高维特征天然能产生更大的梯度来对抗惩罚;而有用的 1D 特征更容易被稀疏化。
挑战2 稀疏特征问题
真实场景中存在长尾特征,99%以上的样本在这个特征上都是默认值。现有的特征选择算法常把这种“低激活频次”误认为是“毫无用处的噪音”,从而施加重罚直接剔除,导致模型丢失了关键的个性化长尾信号。
挑战3 排列(Permutation)方法的算力问题
什么是 Permutation [1] ?它的核心思想是:如果想知道某个特征到底重不重要,就把这一列特征的样本数据彻底打散(Shuffle),人为制造噪声以切断它与真实标签之间的关联,然后看模型的预测性能掉了多少。性能掉得越惨,说明特征越关键。
虽然这种方法直观、客观且具有很强的模型无关性,但它要求对成百上千个特征依次、孤立地进行打乱和重新前向推理。这种次推理的计算复杂度,在动辄几十上百亿样本的大规模数据流中,面临严峻的算力问题。
挑战4 掩码门控(Mask-Gate)的权重代偿与不极化困境
业界主流的深度学习特征选择通常基于掩码门控机制 [2,3,4],但在端到端联合训练时,门控变量与网络下游权重存在严重的代偿效应。当正则化项施压迫使门控值缩小时,为了维持原有特征的信息传递量,模型会自动放大该特征对应的下游网络参数进行补偿。这种代偿机制使得特征得分往往停留在非零的模糊区间,无法实现向 0 或 1 的极化收敛。由于门控分数的绝对值无法直接反应特征真实贡献,特征保留的阈值划定退化成了繁复的阈值试错过程,大幅增加了验证成本。
挑战5 超参调节问题
工业级特征选择模块应当具备极简的超参空间。部分现有方法(如 LPFS [2])为了强制特征重要性收敛到0,引入了复杂的极化函数,额外增加了多达5个以上的超参数,不同超参数组合产出的特征重要性又不一致,导致实际使用的困难。
二、LeAP: 把“特征打散”做成
端到端可学,并采用自适应
梯度去偏的正则稀疏
为了推翻这五个挑战,LeAP (Learnable Adaptive Permutation)放弃了传统的离散打乱验证,将计算密集型的特征打散过程改造成了一个复杂度的端到端可学习模块。
核心网络架构与公式化表述
理论上,我们可以将门控网络插入到模型的任何位置,但在工程实践中,为了方便和通用性,LeAP 通常在模型的特征拼接层之后插入一个轻量级的门控模块。
在每一次 batch 训练中,我们通过算法在 batch 内部对第 i 个特征进行独立洗牌,生成服从原始边缘分布的“伪造噪声”。为了让大家更直观地理解这个过程,这里贴一段精简后的 TensorFlow 核心代码:
# shuffle all feature# hidden is the feature concat representationdef shuffle_all_features(hidden, fea_dim_range_dict):"""对 hidden(形状 [B, D]) 的所有特征做样本间行洗牌。不同的特征使用不同的随机排列。fea_dim_range_dict: 类似 {fea_0: {'dim_start':0, 'dim_end':3},fea_1: {'dim_start':3, 'dim_end':7},fea_2: {'dim_start':7, 'dim_end':10},...}返回: shape=[B, D] 的张量,逐特征完成洗牌。"""# 先把特征 ID 排序,确保按原顺序拼接回去sorted_keys = sorted(fea_dim_range_dict.keys())shuffled_blocks = []for f in sorted_keys:d_start = fea_dim_range_dict[f]['dim_start']d_end = fea_dim_range_dict[f]['dim_end']# 切出这个特征的列区间mid_part = hidden[:, d_start:d_end] # [B, (d_end - d_start)]# 对该特征单独生成一个随机行排列 perm_fB = tf.shape(mid_part)[0]perm_f = tf.random.shuffle(tf.range(B)) # [B], 每行打乱# 对 mid_part 行洗牌mid_part_shuffled = tf.gather(mid_part, perm_f, axis=0)shuffled_blocks.append(mid_part_shuffled)# 把所有洗牌后的分块按列拼回 [B, D]hidden_shuffled = tf.concat(shuffled_blocks, axis=1)hidden_shuffled.set_shape([None, hidden.shape[1]])return hidden_shuffled
接着,引入一个特征专属的可学习门控变量(通过 Sigmoid 函数参数化),将原始特征与噪声特征进行无缝的融合组合:
这里使用了一个至关重要的操作——。这个操作的作用是确保反向传播时,梯度不会通过噪声分支传回去污染上游。
为了促使特征走向稀疏,我们在模型的总损失(Total Loss)中加入了正则项约束:
很明显,如果一个特征是冗余的,用噪声替换它后模型的并不会受到影响。那么在正则化的持续施压下,就会被压向0。
当时,模型完全依赖真实的原始特征;
当时,模型则倾向于完全使用打散后的噪声。
对比掩码门控(Mask-Gate),LeAP 的核心机制转变在于,将特征层面的“幅度缩放”(Masking)替换为了“信息替换”(Noise Substitution)。 面对按比例混入的真实打散特征,由于洗牌操作直接切断了该维度与 Label 之间的互信息,下游网络即使试图通过放大权重来进行代偿,也只会成比例地放大纯噪声的方差,进而导致模型整体的 Task Loss 迅速恶化。这种结构设计从根本上阻断了网络的代偿退路:对于核心特征,模型必须顶着正则压力维持其门控值。
【自适应梯度去偏正则】
为了解决异构维度和极度稀疏问题,LeAP 抛弃了统一惩罚(如全局 L1 正则),创新性地提出了 基于特征打散差异(Shuffle Divergence)的自适应正则化。
我们在每次 batch 训练中,实时计算原始特征与其被打乱版本之间的 L2范数差异:
为了防止常数特征的 Shuffle Divergence 计算为 0 导致惩罚项失效,LeAP 会对其设置一个下界截断。
通过指数移动平均(EMA)在整个训练周期内平滑这个散度得到后,特征 i 的自适应正则化权重被定义为:
这里的是我们在全局设定的稀疏项超参数,这也是 LeAP 中唯一需要调参的变量。
为什么这个设计能解决上述的异构与稀疏难题?这背后隐藏着非常巧妙的梯度动力学机制。损失可以拆分成任务损失和正则损失。根据链式法则,任务损失对门控变量的偏导数最终可以推导并解耦成如下两部分的乘积:
正如公式所示,任务梯度的更新力度本质上由两项决定:
(1) 真实敏感度(Sensitivity):模型任务本身对该特征表征的敏感程度,这才是我们真正想要的“特征重要性”指标。
(2)打散差异(Shuffle Divergence):特征被打散前后的物理距离偏差,高维特征或稠密特征的物理差异天生就很大,这导致它们的梯度是被严重放大。这其实是一种不公平的“特征梯度偏差(Bias)”。
而 LeAP 的精妙之处在于,我们将正则化惩罚项设置成了与正相关的。在反向传播中,总损失等于任务损失+正则损失。任务损失对门控产生的梯度本质上是,而正则损失的梯度则是。当任务损失与正则损失进行对抗时,这个偏差项就被抵消了!
最终的梯度方向,变成了特征的真实敏感度期望(特征重要性)与我们设定的全局稀疏化超参之间的纯粹较量。
这套设计在数学上带来了一个极其优雅的特性:高可解释性与天然的极化趋势。
在这里,“高可解释性”有着明确的物理意义:在设定了当前正则系数的前提下,门控分数直接反映了该特征能否被随机打散的噪声安全替换的概率 。
同时,正因为优化的核心变成了与的直接拉扯,对于绝大多数特征而言,其敏感度与设定的之间存在明确的强弱差异:如果有用特征的敏感度压过了,它就会在梯度驱动下坚定地奔向 1;反之,若敏感度不足以抗衡,冗余特征则会被快速压向 0。
上图是一个真实业务模型产生的特征重要性频数分布图,如图所示,LeAP 学出的特征重要性呈现出非常清晰的两极分化。这意味着算法工程师不需要像以前那样反复调参、设置多个阈值。在实际业务中,我们通常直接设定 0.5 作为分界线,就能干脆利落地“一刀切”,大大提升了特征筛选的确定性和迭代效率。
三、真实的工业落地:
在复杂业务中实现降本增效
在公开数据集(Criteo [9] , Avazu [7] , ML-1M [6] , AliCCP [8] )上,LeAP 在不同剪枝率下的表现均达到了现有的 SOTA(State-of-the-Art)水平。
在实际的真实业务生态中,目前,LeAP 已经在B站内的多个核心业务场景中成功落地应用。
为了验证 LeAP 在业务场景下的能力,我们在一个包含 12,000+ 维特征、checkpoint大小高达 2TB 的排序模型上进行了离线验证。LeAP 成功识别出超过 3,600 个(占比超 30%)冗余特征维度,且离线评估指标没有任何降低。这充分证明了它在应对大规模工业模型时的有效性与稳健性。
LeAP 带来了:
推理提效,降本增效: 在各个业务线的多种模型场景中,LeAP 初次使用普遍有效删减了 15%~50% 的冗余特征。在保持线上核心业务指标(如播放量、互动量等)稳定的前提下,单模型的线上推理资源消耗直接降低了 5%~20%。
加速日常特征迭代: 当算法团队引入一批新特征时,不再需要“盲人摸象”。先让模型训练收敛一段时间,随后接入 LeAP 跑一遍,可以直接客观评估新特征的实际价值,从而进行针对性筛选。这种“白盒化”的迭代体验,大幅缩短了实验验证周期,避免了无效特征对计算资源的无谓消耗。
综上所述,LeAP 通过将离散的特征打乱过程转化为端到端的可学习门控网络,并结合优雅的自适应梯度去偏机制,成功解决了工业界特征选择中的维度异构与长尾稀疏难题。这套方法不仅在理论和公开数据集上得到了验证,更在 B站复杂的真实业务生态中实现了真正的降本增效。
引用
[1] Fisher, A., Rudin, C., Dominici, F.: All models are wrong, but many are useful: Learning a variable’s importance by studying an entire class of prediction models simultaneously. Journal of machine learning research: JMLR 20 (2019)
[2] Yi Guo, Zhaocheng Liu, Jianchao Tan, Chao Liao, Daqing Chang, Qiang Liu, Sen Yang, Ji Liu, Dongying Kong, Zhi Chen, et al. 2022. LPFS: Learnable Polarizing Feature Selection for Click-Through Rate Prediction. arXiv preprint arXiv:2206.00267 (2022).
[3] Yejing Wang, Xiangyu Zhao, Tong Xu, and Xian Wu. 2022. AutoField: Automating Feature Selection in Deep Recommender Systems. In Proceedings of the ACM Web Conference.
[4] Yejing Wang, Zhaocheng Du, Xiangyu Zhao, Bo Chen, Huifeng Guo, Ruiming Tang, and Zhenhua Dong. 2023. Single-shot Feature Selection for Multi-task Recommendations. In Proceedings of the 46th International ACM SIGIR Conference on Research and Development in Information Retrieval. 341–351.
[5] Jia P, Wang Y, Du Z, et al. Erase: Benchmarking feature selection methods for deep recommender systems[C]//Proceedings of the 30th ACM SIGKDD Conference on Knowledge Discovery and Data Mining. 2024: 5194-5205.
[6] https://grouplens.org/datasets/movielens/1m/
[7] https://www.kaggle.com/competitions/avazu-ctr-prediction
[8] https://tianchi.aliyun.com/dataset/408
[9] https://ailab.criteo.com/ressources/
-End-
作者丨r小黑、芯艺、飞戈、ylin、海忻、问天
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...