feat(training): TabM 排序模型架构优化与 Rank-Gauss 标签工程

- TabMSetRank: 将 TabM 输出改为隐藏层特征,经 SetRankHead 交互后通过 final_mlp 输出 Ensemble 排序分
- SetRankHead 引入可学习残差缩放因子(Zero-init)与 Pre-Norm 结构,提升训练稳定性
- TabMRankTask 新增 Rank-Gauss 连续标签变换,支持标准分位数/指数增益/Rank-Gauss 三种标签模式
- 修复 NDCG 评估在负值标签下的计算问题
- 调整实验脚本超参数(dropout、hidden dim、weight decay)及排除因子列表
- 迁移废弃的 torch.cuda.amp 到 torch.amp,并将数据预加载至 GPU 减少循环拷贝
This commit is contained in:
2026-04-05 19:01:08 +08:00
parent 598f6eefd8
commit 1fa4ff9544
7 changed files with 205 additions and 105 deletions

View File

@@ -46,12 +46,16 @@ TRAINING_TYPE = "tabm_rank"
# Label 配置(从 common.py 统一导入)
# LABEL_NAME 和 LABEL_FACTOR 已在 common.py 中绑定,只需从 common 导入
# 分位数配置(提高分辨率以更好地区分头部
# 分位数配置(分桶模式下使用Rank-Gauss 模式下不使用,但保留兼容性
N_QUANTILES = 50
# 【Top-K 优化】标签工程配置 - 默认启用平方增益
LABEL_TRANSFORM = "exponential" # 启用平方增益标签 (rank^2)
LABEL_SCALE = 20.0 # 保留参数(当前未使用,平方变换不需要缩放
# 标签工程配置
# 可选值:
# - "rank_gauss": Rank-Gauss 连续化标签(推荐,神经网络更友好
# - "exponential": 指数化增益标签 (rank^2)
# - None: 标准分位数标签 (0, 1, ..., n_quantiles-1)
LABEL_TRANSFORM = "rank_gauss"
LABEL_SCALE = 20.0 # 保留参数rank_gauss / exponential 下均未使用)
# 排除的因子列表
EXCLUDED_FACTORS = ["GTJA_alpha041", "GTJA_alpha127"]