谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性
创始人
2025-06-28 05:10:38
0

谷歌在KDD 2023发表了一篇工作,探索了推荐系统ranking模型的训练稳定性问题,分析了造成训练稳定性存在问题的潜在原因,以及现有的一些提升模型稳定性方法的不足,并提出了一种新的梯度裁剪方式,提升了ranking模型的训练稳定性。下面给大家详细介绍一下这篇文章。

1、模型背景

本文以Youtube中的ranking模型为例,进行推荐系统ranking模型训练稳定性的分析。整体模型如下图所示,包括特征输入层、多任务共享层、每个任务私有参数层,整体包括CTR预估、CVR预估等多个任务联合训练。

图片图片

什么样的训练过程是稳定性比较差的呢?如下图所示,model-a的loss和auc曲线被文中称为micro-diverged,即训练过程中出现loss的突增,伴随着auc下降,但是继续训练模型会恢复回来,最终不会影响模型效果。model-b的loss和auc曲线被文中称为fully-diverged,即模型训练过程中出现大幅度的loss增加和auc下降,并且后面也不会再恢复了,对模型的性能影响很大。本文更关注的是后面fully-diverged这种情况。

图片图片

2、影响稳定性的因素

为什么推荐系统中的模型,存在这样的训练稳定性问题呢?训练过程不稳定,本质原因在于模型在优化到一个比较陡峭的超平面时使用了一个较大的学习率,导致模型参数的更新出现严重问题,文中原话是“step size being too large when loss curvature is steep”。在推荐系统的ranking模型中,这种现象更为常见,主要由于以下几个原因:

多任务学习:推荐系统中的ranking模型经常采用多任务学习的方式,这导致当一个任务的梯度出现问题时,对共享参数层也会造成很大影响,增加了模型训练不稳定的可能性;

Sequential training:ranking模型经常需要进行ODL或者增量更新,以适应线上数据分布的实时变化。这就导致模型的训练数据一直是动态变化的,模型需要不断拟合变化的数据分布,给模型的收敛带来更大的不确定因素;

模型尺寸和输入特征:相比其他领域的模型,ranking模型需要更多类型的输入特征,并且目前的趋势是不断增大模型尺寸,这些都可能导致模型的优化超平面变得更加陡峭导致难以收敛。

下图展示了在相同的学习率下,loss平面的陡峭程度对于梯度更新的影响,越陡峭的超平面,以一个不适配(较大)的学习率更新会导致loss震荡难以收敛。

图片图片

3、现有方法

为了解决这类训练不稳定问题,业内已经有一些相应的解决方案。例如,针对上述Sequential training需要适配数据分布而带来的不收敛问题,可以采用滑动时间窗口的方式生成训练样本。每次让模型使用滑动窗口内的数据进行训练,通过增大滑动窗口的尺寸,可以让每轮训练的模型见到的数据分布差异没那么大,平滑的更新数据分布,缓解模型需要适配数据分布剧烈变化的问题。

不过,从本质原因“step size being too large when loss curvature is steep”来讲,一个治标治本的方法是直接优化梯度更新的过程,对于陡峭的loss超平面使用更小的学习率,使用Hessian矩阵最大特征值计算,也可以近似利用梯度代替。Adagrad和梯度裁剪就是这类方法中的经典工作。Adagrad通过每个参数历史的梯度更新情况进行累计,来调整每个参数的学习率,历史更新较多的参数,学习率设置的更小一些,梯度更新公式如下所示:

图片图片

而梯度裁剪更加直接,如果计算的梯度大于一定的阈值,就将梯度缩小(如下面公式,核心是缩放系数sigmoid的计算,根据阈值和梯度的L2范数比值而来,梯度的L2范数太大就缩小梯度)。

图片图片

如何设计梯度裁剪中的阈值呢?后续的工作Adaptive Gradient Clipping提出了一种自动设计阈值的方式,核心思路是梯度的范数与模型参数范数比值不能太大,因此引入这一项帮助个性化调节不同参数的梯度:

图片图片

4、本文方法

虽然上述梯度裁剪方法有助于提升ranking模型训练稳定性,但是文中发现这类方法对于推荐系统中的ranking模型并不能起到有效作用。经过分析,文中发现,之前的梯度裁剪方法在梯度突然暴增的时候控制力不够。文中提出了Clippy,主要修改的是梯度裁剪中的缩放系数,相比原来的梯度裁剪主要有2个改进点,一方面将L2 norm改成了无穷范数(取各个维度L1最大值),同时对于分子改成了上文adagrad中的r,即历史梯度的累积。

图片图片

这样修改的原因为,如下图所示,在step-b到step-c损失函数突增,梯度对应变大,但是之前的梯度裁剪方法得到的缩放系数并不足以控制梯度。将L2范数改成无穷范数,可以方便捕捉某一个维度上的突变,对某一维度的梯度突增有更强的敏感性。另外,将分子变为累计梯度,让模型根据累计梯度而不是当前梯度调整阈值,更适配Adagrad对模型参数的更新过程。通过这种方式,如下图第二列所示,对梯度的约束更加强烈,可以有效限制梯度过大导致的训练不稳定问题。

图片图片

最后,文中给出了Clippy加入到Adagrad更新的整体算法流程,如下表:

图片图片

通过下面的实验对比可以发现,使用了Adagrad+Cliipy后,模型的训练过程更加稳定:

图片 图片

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...