关注我们,一起学习
标题:Helen: Optimizing CTR Prediction Models with Frequency-wise Hessian Eigenvalue Regularization
论文地址:https://arxiv.org/pdf/2403.00798.pdf
代码链接:https://github.com/NUS-HPC-AI-Lab/Helen
会议:WWW 2024
学校,公司:新加坡国立,华为
1 引言
本文发现特征频率与特征emb的最高特征值之间存在正相关性,这种相关性凸显了参数空间中损失的不平衡分布,使得传统的优化器很难发现有效泛化的平坦的最小值,而导致将模型优化到次优状态。针对此发现且受启发于Sharpness-Aware Minimization(SAM)方法,基于频率维度的Hessian特征值正则化设计了用于CTR预估模型的优化器Helen
2 先验知识
2.1 CTR预估
定义
S=(x_i, y_i)^{n}_{i=1}代表训练集,其中每个样本服从分布D,
x_i=[x_i^1,x_i^2,…,x_i^m]表示用户、产品以及用户和产品之间的信息,m代表特征域的个数。同样地,特征emb也可以表示为多个域
e= [e^1,e^2,…,e^m],emb权重
e^j可以被拆分成sj个成分,定义为
e^j=[e_1^j,e_2^j,…,e_{sj}^j],
e_k^j表示第j个域内的的第k个特征的表征。
2.2 模型优化
给定预测网络f,对于样本(x,y)和模型参数w,损失函数L用来测量预估值和真实标签y的差异,通常损失函数L使用交叉熵函数,因此模型的优化问题为:
\boldsymbol{w}^*=\underset{\boldsymbol{w}}{\arg \min } \mathbb{E}_{(\boldsymbol{x}, \boldsymbol{y}) \sim \mathcal{D}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{y}, f(\boldsymbol{x} ; \boldsymbol{w}))
然而实际中这个优化问题很棘手,因为分布D是未知的,但可以基于训练数据集S解决一下经验风险最小化问题:
\hat{\boldsymbol{w}}=\underset{\boldsymbol{w}}{\arg \min } \frac{1}{n} \sum_{i=1}^n \mathcal{L}\left(x_i, y_i, f\left(x_i ; \boldsymbol{w}\right)\right)
2.3 锐度感知最小化
锐度感知最小化算法(SAM)的目标是确定最小化训练损失L的参数同时考虑LP球内的相邻点,利用一下修改后的目标函数来实现:
\mathcal{L}_{\mathcal{S}}^{S A M}(w)=\max _{\|\epsilon\|_p \leq \rho} \mathcal{L}_{\mathcal{S}}(w+\epsilon)
其中
\|\epsilon\|_p \leq \rho确保扰动的幅度保持在指定阈值内。 由于计算内部最大化的最优解是不可行的,SAM采用一步梯度来逼近最大化问题,如下所示:
\hat{\boldsymbol{\epsilon}}(\boldsymbol{w})=\rho \frac{\nabla_{\boldsymbol{w}} \mathcal{L}_{\mathcal{S}}(\boldsymbol{w})}{\left\|\nabla_{\boldsymbol{w}} \mathcal{L}_{\mathcal{S}}(\boldsymbol{w})\right\|} \approx \arg \max _{\|\boldsymbol{\epsilon}\|_p \leq \rho} \mathcal{L}_{\mathcal{S}}(\boldsymbol{w}+\boldsymbol{\epsilon})
最后,SAM计算更新关于扰动模型的梯度
\boldsymbol{g}=\left.\nabla_{\boldsymbol{w}} \mathcal{L}_{\mathcal{S}}^{S A M}(\boldsymbol{w}) \approx \nabla_{\boldsymbol{w}} \mathcal{L}_{\mathcal{S}}(\boldsymbol{w})\right|_{\boldsymbol{w}+\hat{\boldsymbol{\epsilon}}}
3 方法
3.1 特征分布的倾斜性
CTR预测与其他传统的机器学习任务(例如图像分类)的区别是其独特的输入数据格式——通常由多热编码(multi-hot encoded)的分类特征组成。在CTR预测模型中,特征数量可能极其庞大甚至与用户或项目的总数相当,这将创建了一个既高维又稀疏的输入向量。更具挑战性的是,这些特征的分布呈现出显著的倾斜性。如下图所示特征频率的分布高度倾斜,流行特征的出现频率远高于不流行特征。先前工作如反事实推理和模型正则化忽略了倾斜特征分布给CTR预测模型优化带来的内在困难,这导致模型优化到次优。最近的一项工作CowClip提出了据特征频率裁剪特征嵌入的梯度,并成功地将批量大小扩大以减少训练时间。然而它的讨论仅限于一阶梯度,未能揭示损失的二阶信息,即Hessian矩阵。在接下来的部分中,本文将展示即使特征频率影响特征嵌入梯度的范数,其影响也不如特征频率与Hessian矩阵的主特征值之间的相关性显著。
3.2 Hessian矩阵和特征频率
在一般条件下,基于梯度的方法保证会收敛到损失函数的局部最小化解w,使得
\boldsymbol{g}=\nabla_{\boldsymbol{w}} \mathcal{L}_{\mathcal{S}}(\boldsymbol{w}) =0
并且损失对应的Hessian矩阵
H=\nabla_{\boldsymbol{w}}^2 \mathcal{L}_{\mathcal{S}}(\boldsymbol{w})是半正定的,即所有的特征值都是非负的,第j个特征域中每个特征k的频率按照以下等式计算
N_k^j(\mathcal{S})=\sum_{i=1}^n x_i^j[k]
如2.1节所说,ctr模型的参数可以分类为
同样的梯度可以分解为
关于Hessian矩阵,我们主要关注对角分块矩阵diag(H),其定义为:
在此使用
\lambda^{j}_k来表示Hessian矩阵
H^{j}_k的最大特征值,训练了PNN和DeepFM两个模型,下图显示了Hessian矩阵最大特征值和相关特征频率的关系,同时也对比了梯度范数。
如图可看出特征频率的和Hessian矩阵最大特征值的相关性更显著
3.3 Helen: 基于频率的Hessian特征值正则化
SAM已经证明了通过同时最小化损失值和锐度来增强深度学习模型能有效的提高模型泛化性能。最近的实验研究也确立了SAM有效降低Hessian矩阵主特征值的能力
引理1:最小化SAM损失函数
\mathcal{L}_{\mathcal{S}}^{S A M}(w)=\max _{\|\epsilon\|_p \leq \rho} \mathcal{L}_{\mathcal{S}}(w+\epsilon)
在原始损失中引入偏差
\underset{\boldsymbol{w}}{\arg \min }\lambda(\nabla_{\boldsymbol{w}}^2 \mathcal{L}_{\mathcal{S}}(\boldsymbol{w}))
其中
\lambda(\nabla_{\boldsymbol{w}}^2 \mathcal{L}_{\mathcal{S}}(\boldsymbol{w}))定义为Hessian矩阵的最大特征值
如引理1所总结,SAM在由扰动半径界定的流形局部邻域内减少了损失函数Hessian矩阵的最大特征值。这一发现促使探索使用SAM对特征嵌入的Hessian矩阵进行正则化。然而,原生SAM的一个局限性在于其对所有模型参数应用了统一的扰动半径。而本文强调特征频率分布的显著倾斜性以及这些频率与Hessian矩阵最大特征值之间存在的强相关性。当统一扰动半径相对较小时,对于高频特征的Hessian特征值的正则化不足,导致次优性能,这偏离了我们的目标。相反当使用较大的统一扰动半径时,更高频率的特征的Hessian矩阵的最大特征值减小,表明向更平坦的局部最小值收敛。然而,这一策略过度正则化了低频特征,以牺牲原始损失函数的优化为代价,将其优化引向平坦区域。这种高频和低频特征之间的权衡最终导致了一个次优的解决方案。
为避免上述问题,Helen根据特征频率采用了自适应的扰动半径
\rho_k^j=\rho \cdot \max \left\{\frac{N_k^j}{\max _k N_k^j}, \xi\right\}
对于锐度目标函数的一阶泰勒展开有
\hat{\epsilon}\left(e_k^j\right)=\arg \max _{\|\epsilon\|_p \leq \rho *_k} \mathcal{L}_S\left(e_k^j+\epsilon\right) \approx \rho_k^j \cdot \frac{\nabla_{\boldsymbol{e}_k^j} \mathcal{L}_S(\boldsymbol{w})}{\left\|\nabla_{\boldsymbol{e}_k^j} \mathcal{L}_S(\boldsymbol{w})\right\|}
当有了所有的扰动向量后,计算Helen梯度为
g^{\text {Helen }}=\left.\nabla_w \mathcal{L}_S(w)\right|_{w+\hat{\epsilon}(w)}
最终的Helen算法是通过传统的数值优化器实现,如随机梯度下降(SGD),并将传统梯度替换为Helen梯度来完成的。下图提供了完整的Helen算法的伪代码,其中SGD作为底层优化方法。
4 实验效果