1. 背景
搜索保量广告是电商广告中的一种常见形式,广告平台需要预测每个搜索词未来一段时间的流量,以此为依据收取费用。流量预估的准确率会同时影响平台收益和客户体验,流量预估偏低影响平台收益,流量预估偏高影响客户后续购买意愿。我们可以将流量预估任务看做一个典型的时间序列预测任务,以往的方法以提升每个query预估准确率为目标,忽略了query流量和品牌、类目、客户等不同粒度总流量的层次约束关系,以及不同query的语义信息所表达的用户搜索意图。为了充分挖掘这些信息及层次结构,我们提出了语义感知深度层次时序预估模型STARDOM,这是业内首次实现将序列之间的层次约束关系、序列蕴含的语义信息、时间序列预测三者进行端到端联合学习。广泛的实验验证了该方法可取得显著效果提升。基于该项工作整理的论文已发表在 CIKM 2022,欢迎阅读交流。
论 文:STARDOM:Semantic Aware Deep Hierarchical Forecasting Model for Search Traffic Prediction
下 载(点击↓阅读原文):https://dl.acm.org/doi/10.1145/3511808.3557102
2. 动机和问题定义
以往的流量预估方法利用RNN、Transformer等深度学习模型直接预估每个query的流量,每个query的预估是独立的,且主要的输入信息为query的历史流量序列。然而,query粒度细,噪声较大,直接将query的预估结果加和得到的聚合结果往往效果较差。而品牌、类目、客户等是由一组相关搜索意图query聚合得到的序列,其规律性更强、噪声更小,更容易预估,并且这些聚合粒度的流量和query流量存在层次上的和约束关系(如下图左)。同时,搜索意图相似的query往往具有相似的时间序列pattern,这些搜索意图包含在query的语义信息中(如下图右,不同query时间序列之间的相关系数)。基于以上思考,我们将多粒度数据之间的层次和约束关系、query的语义信息等引入模型中,通过校准矩阵学习模块学习层次内不同节点之间的校准关系,利用蒸馏校准损失函数引入层次和约束,使用语义信息提取模块向模型中加入query所代表的搜索意图,实现层次约束关系、语义信息、时间序列预测三者的端到端联合学习,并提出层次采样策略,实现了在百万级时间序列预测任务仍能高效运行的基于深度学习的层次预估方法。
![7f6a50a07d1615917d81c7b9907800d1.png](https://i-blog.csdnimg.cn/blog_migrate/871fe2f76ec5c6f0d4c652b2d81498be.png)
query流量预估的问题定义如下,我们定义搜索词 的时间序列 ,以及外部特征 ,时间序列预测的目标为给定历史长度为 的序列 ,预测未来长度为 的时间序列 。同时,搜索词 可以根据品牌、类目、词包等属性聚合,得到聚合节点的流量序列。在以往的模型优化中,我们的优化目标是每个搜索词每天预估结果最优,可以表示为:
其中, 代表预估总时间窗口, 代表query总数,、 分别表示第 个query在第 天的预估pv和真实pv。在实际业务应用中,我们不仅关注每个搜索词的预估效果,更关注客户购买词集合总pv的预估效果,可以表示为:
其中,表示某一个query集合,其所定义的query集合我们成为聚合粒度。例如根据阿迪达斯这个品牌下的所有query,或者阿迪达斯男鞋这个品牌类目下的所有query。
3. 时间序列层次预估原理
层次预估问题主要解决的是待预估节点存在层次关系,需要对每个节点进行预估,并且节点的预估结果需要满足和约束的场景。最简单的层次预估方法是bottom-up(只预估底层节点,其他节点用底层节点预估结果加和获得)和top-down(只预估顶层节点,其他节点由顶层节点根据一定比例进行分配)。这类方法往往只能考虑一层节点的信息,而忽略了其他层次节点的信息,导致预估效果较差。
基于校准的层次预估(Reconciliation based)方法是目前解决层次时序预估中state-of-the-art的方法。 假设存在 个底层节点(如query)和 个顶层节点(如品牌、类目等)。基于校准的层次预估方法首先使用任意方法分别预估整个层次中每个节点的基础预估值 ,然后通过如下公式得到校准后的预估结果 :
其中, 为层次关系矩阵(Hierarchical Structure Matrix),存在父子关系的节点对之间值为1,否则为0。 为校准矩阵(reconciliation matrix),表示底层节点和其他节点之间的流量分配校准关系,是需要求解的参数,不同的基于校准的层次预估方法的研究围绕如何求解校准矩阵 展开。整个过程可以看成是,首先分别预估每个节点的值,然后通过校准矩阵 进行各个节点预估结果的融合得到底层节点校准后的预估结果,再根据层次关系矩阵 聚合得到所有节点校准后的预估结果,如下图:
![bd60c26247259db91a4f754d51c6c218.png](https://i-blog.csdnimg.cn/blog_migrate/0d5db8642fddf87cfc6177fe2d483099.png)
Reconciliation based方法的好处是,可以同时综合考虑整个层次结构中每个节点的信息用于预估,并且预估结果满足层次和约束的关系。然而,该类方法存在以下问题。首先,该方法将预估分成两阶段而不是端到端的,在预估基础结果时仍然是每个序列单独预估,在校准阶段忽略了每个节点的历史序列只根据基础预估结果进行校准,在两个独立的优化过程中损失很多信息,不是最优解。其次,该方法无法应用到高维数据上,因为求解校准矩阵 需要估计的参数量随着节点数量增加指数上升。为此,我们提出了基于深度学习模型,通过经验最小化的方法求解校准矩阵,进而实现端到端的层次和约束+时间序列预测。
4. 基于经验风险最小化校准矩阵求解
我们提出在深度学习模型下通过经验风险最小化的方法求解校准矩阵的方法,这样可以实现时序预估、层次约束校准端到端的联合学习。经验风险最小化可以表示为:
在Encoder-Decoder的深度时序模型架构下,基础预估结果 是通过Encoder进行特征编码,再通过Decoder进行特征解码生成的,可以表示为:
其中,、 分别为Encoder、Decoder的模型参数。我们将校准矩阵 用一个函数进行拟合,拟合 的输入应该综合考虑层次内每个节点的历史特征、历史时间序列等因素,可以表示为:
考虑校准矩阵 后,我们可以得到Reconciliation based方法的整体经验风险最小化loss为:
通过对该loss的优化,即可实现层次约束和时序预估的联合优化。然而,这个loss无法直接优化,因为矩阵需要和Decoder产出的预估结果相乘,而预估结果的scale非常大,模型无法正常训练。如果对预估结果进行归一化,又无法满足和约束关系。为了解决这个问题,我们将 矩阵作用于Decoder预测结果修改为作用于Encoder生成的表示:
通过这种方法,我们解决了校准矩阵 无法端到端联合训练的问题。基于上述方法,我们设计了语义感知深度层次时序预估模型,实现了层次约束和预估端到端联合优化。
5. 语义感知深度层次时序预估模型(STARDOM)
![73e79255aa0797ee4dec9a2ce27d53e4.png](https://i-blog.csdnimg.cn/blog_migrate/21ff933d5ef33f3a30b9cf1a556e42b5.png)
语义感知深度层次时序预估的整体模型结构如图。模型整体为经典的Encoder-Decoder结构。在Encoder部分,引入了Reconciliation Matrix Learning模块,学习层次内不同节点之间的校准关系。在Decoder部分,引入了Distill Reconciliation Loss让模型学习层次约束,实现时序预估+层次约束的端到端学习。在数据上,引入了语义信息抽取模块辅助时序预估和校准矩阵学习,并提出了一种层次采样策略,实现在大规模时序预估任务中的高效训练和预测。
5.1 搜索词多粒度数据构建
我们基于query构建了一个多粒度数据集,包含8种类型的节点,节点之间存在层次关系。节点类型包括query、品牌、一级类目、叶子类目、品牌x一级类目、品牌x叶子类目、词包、客户等。将相关的query聚合形成的粗粒度节点,其时间序列描述了一类搜索意图的流量集合,相比query粒度的序列噪声更小、规律性更强。我们将不同类型的序列进行了特征对齐,使各个粒度的序列数据可以联合训练。
5.2 校准矩阵学习模块(Reconciliation Matrix Learning,RML)
Reconciliation Matrix Learning(RML)模块结构如下图,主要用于学习一个层次结构下各个节点之间的校准关系,即校准矩阵 ,其中元素 表示层次结构内第 个节点和第 个节点之间的校准关系。假设我们有一个两层的层次结构,包括1个父节点和 个子节点。首先通过dual encoder将每个节点的时间序列编码成两个独立的编码 和 ,分别为forecast embedding和context embedding。接下来利用每个节点的forecast embedding和context embedding计算每两个之间的校准系 数,计算方法如下:
其中,, 为模型参数。通过这种方式,我们学习到了一个层次结构内的校准矩阵。接下来,我们用校准矩阵对Encoder生成的每个序列的表示进行校准,得到每个序列校准后的表示:
其中, 为模型参数, 为当前层次结构的节点集合。由于父粒度节点相比子节点噪声小、规律性更强,我们通过mask的方式不对父节点进行表示校准,这也与reconciliation based中的校准过程相吻合。最后,为了增强模型的表达能力,我们通过multi-head的方式,对于每组序列学习多个校准矩阵,并综合多个校准矩阵的表示作为最终表示:
![b340fdf470f2fe2b59b5e99f3cd0d3ea.png](https://i-blog.csdnimg.cn/blog_migrate/f506c66cfdefc2724c3daf85bb735abe.png)
5.3 蒸馏校准损失函数(Distilled Reconciliation Loss)
我们设计了Distilled Reconciliation Loss,在模型训练过程中引入层次约束,实现了端到端的序列预估任务和层次约束的联合学习。我们在3.2节中介绍的经验风险最小化损失函数可以进一步修改为:
其中,和 分别表示底层节点和父节点的真实值, 表示通过对底层节点预估结果聚合的方式得到的父节点的预估结果。这里相当于将预估损失分解成了底层节点校准后的预估损失,加上通过聚合底层节点校准后的预估结果的方式预估父节点带来的损失。然而,父节点也存在一定噪声,导致底层节点预估结果求和与父节点真实label的拟合存在一定困难。借鉴了知识蒸馏和课程学习的思想,模型在训练开始阶段会倾向于先记住干净的数据然后再拟合噪声,并且按照从易到难的顺序引入训练样本能够提升模型效果。因此我们设计了一种distill reconciliation loss,将上述损失函数进一步转换为:
![5abe36d637dfb8e51d1b66ea8f3c8a90.png](https://i-blog.csdnimg.cn/blog_migrate/cb28b3f85c6f5519a3550d71ae4e89e7.png)
我们将第二项拆成两个部分:父节点模型预估结果与真实值的损失,以及父节点的模型预估结果与底层节点预估结果聚合得到的父节点预估结果之间的损失。进一步合并,得到了包含forecast loss和reconciliation loss两部分的损失函数。第一项forecast loss是层次结构中每个节点的模型预估损失,第二项reconciliation loss是两种父节点预估方法(直接预估 vs 底层预估结果聚合)的差异。其目标为让底层节点校准后的预估结果之和,等于父节点的预估结果。相比直接拟合父节点真实结果,该方法利用知识蒸馏过滤掉了一些父节点序列中可能存在的噪声,同时利用课程学习的思想从易到难的学习父节点序列的约束。
![1a87f13dd3771d9c7fc2a82363b5af36.png](https://i-blog.csdnimg.cn/blog_migrate/2aea7a95374124fe51c62c82c12417c4.png)
5.4 Encoder-Decoder模型结构
模型主体为Encoder-Decoder结构。在Encoder部分,每层由一个Dual Encoder和一个校准矩阵学习模块组成。每个Dual Encoder由两组参数不共享Eencoder组成。Encoder采用的是LSTM加多层multi-head self attention结构,同时在每层multi-head self attention之间加入了卷积蒸馏的操作逐渐缩小序列尺寸,提升运行效率的同时使学习到的注意力更集中。输入层的LSTM利用其强大的序列建模能力增强每个时间点的上下文信息刻画能力,弥补Transformer在时序建模上的短板。Dual Encoder对一个层次内每个节点的时间序列独自建模,其生成表示会经过RML模块实现表示校准。Decoder部分也是一个和Encoder类似的LSTM+multi-head attention结构,decoder和encoder之间通过multi-head attention进行信息交互,利用Encoder校准后的表示进行预测。
模型的损失函数包括3个,除了4.3中介绍的forecast loss和reconciliation loss,我们引入了针对校准矩阵的稳定正则化损失(stability regularization loss)。在Encoder过程中,每个时间步都会生成一个校准矩阵。我们引入了一个假设对校准矩阵学习进行约束:相邻时间步的校准矩阵应该是相似的。这个假设是比较合理的,因为时间序列的平滑性,相邻两个时间步不会发生比较大的校准系数关系转移。基于这个假设,我们定义stability regularization loss为相邻两个时间步校准矩阵的L2范数,公式为:
最终模型的训练loss由forecast loss、reconciliation loss、stability regularization loss三个部分组成:
其中,、 分别为reconciliation loss和stability regularization loss的权重。 越大,模型将更关注于层次和约束。
![5fbc56250e46d0390cd090cc55be30f9.png](https://i-blog.csdnimg.cn/blog_migrate/9559b20fd795a64d6eaad93b5f808cfa.png)
5.5 语义信息模块
搜索词代表了用户的搜索意图,因此搜索词语义相近的流量,其用户搜索意图也相似,对应的时间序列pattern往往也存在一定的相似性。因此,我们将语义信息引入时序预估任务中,通过品牌预测模型、类目预测模型对一个搜索词的信息进行语义扩展,然后利用预训练Bert得到每个搜索词的语义表示,整体流程如下图。
![7c5c7c8840f477cf9af5f2a4de5e6fd2.png](https://i-blog.csdnimg.cn/blog_migrate/22c789270345bb9fab07f6731fcd57c1.png)
每个搜索词的语义表示用于两个方面。首先会作为特征输入,增强模型表现能力。其次,语义特征会直接输入到校准矩阵学习模块,将语义相关性考虑到校准关系的学习过程中。引入语义信息后的校准系数生成可以表示为:
其中, 表示搜索词的语义信息。
5.6 层次采样
在工业界的层次时间序列预测任务中,时间序列的数量往往非常大,例如在阿里妈妈品牌搜索广告场景中,需要对百万量级的搜索词进行预估,通过这百万的搜索词聚合得到的各个聚合粒度的时间序列也有很多。直接用层次预估方法在如此庞大的数据上是无法训练的。我们提出一种层次采样策略,每次在一个采样的层次结构中学习一个局部的校准矩阵,而非直接学习全局的。我们假设全局是稀疏的,即只有同属于同一个父节点的子节点之间存在校准关系。这个假设是合理的,因为相同父节点的子节点之间的关系比其他节点之间的关系更加重要。在这种假设下,我们设计了如下图的层次采样方法。
![854a746fb92c88b0f28c661796425b15.png](https://i-blog.csdnimg.cn/blog_migrate/eaa7e4e2b4c1a2144644032856a3caee.png)
首先,随机选择一个聚合节点,以及该聚合节点下的所有子节点。然后根据历史PV的均值作为权重,采样 个节点,历史PV越大,节点被采样的概率越高。接下来,将这个节点的PV聚合,得到一个虚拟父节点。最终这 个节点组成了一个采样的层次结构,作为模型输入。这种采样方法,通过虚拟父节点维持了层次内的和约束关系,又因为根据PV加权采样使虚拟父节点的序列和原真实父节点序列比较相似。层次采样将需要估计的校准矩阵的参数量从 缩小为 ,极大减轻了模型负担。
6. 实验结果和分析
6.1 模型整体效果对比
我们将STARDOM模型和三种类型的业内state-of-the-art模型进行了对比。主要包括:深度时序模型(LSTM、Transformer);图时序预估模型(DCRNN、GMAN、STGCN);层次预估模型(MinT、HIRED)。对比的数据集使用开源数据FGSF,对比了底层节点效果(bottom)、聚合节点效果(agg)以及全部节点效果均值(avg),详细结果如下表,我们的模型在开源数据上相比其他对比模型效果提升显著:
![1606846df4194662337438cf1116fcc5.png](https://i-blog.csdnimg.cn/blog_migrate/412412a36486ac322531c5d3f572079d.png)
6.2 对比实验分析
我们主要进行了4个方面的对比实验:是否引入校准损失函数、是否引入校准矩阵学习模块、是否使用稳定正则化损失函数、是否使用语义信息,以此来分析STARDOM中各个模块的作用。下图展示了不使用前3个模块中的某一部分,对于效果带来的负向影响比例。
![fd74f8607d3f3487075e2a37f58371f7.png](https://i-blog.csdnimg.cn/blog_migrate/7f529e054e3b3a3166e712b3d2635a6d.png)
✅ 校准损失函数模块影响分析
如果去掉校准损失部分(No Recon. Loss),聚合节点的预估效果下降比底层节点预估效果下降更加明显,这表明校准损失函数对于聚合节点预估效果的重要性。当引入校准损失函数后,在模型学习过程中,会强制底层节点预估结果之和等于父节点预估/真实结果,进而提升聚合节点最终预估效果。为了分析校准损失函数的工作原理,我们定义了N-confidential total forecast bias (Tfb@N)指标用来衡量底层节点按照时间、属性聚合后的整体置信度偏差,这个指标由于将细粒度预估结果聚合评测,忽略了单点的预估结果好坏,更关注整体预估值的偏差,因此能更好反映系统性偏差。我们对比了基础模型(Base Model)、基础模型+校准矩阵学习的模型(+Recon Matrix)、基础模型+校准损失函数的模型(+Recon Loss),从下表可以看出,加入校准损失函数的 Tfb@N指标明显低于其他模型,表明校准损失函数有助于降低模型系统偏差。
![24779fbe8642e9a4de118ea7376e15fd.png](https://i-blog.csdnimg.cn/blog_migrate/e9b73448d4f15a6f7af982b94688cf57.png)
同时,我们对比将蒸馏校准损失替换为直接校准损失(子节点预估结果聚合和父节点真实值的差异),效果也有所下降,表明蒸馏校准损失相比直接校准损失更有助于模型学习。
✅ 校准矩阵学习模块影响分析
从柱状图中可以看出,去掉校准矩阵学习模块(No Recon. Matrix)对于模型预估效果带来很大的负面影响,尤其是底层节点的预估效果。去掉校准矩阵学习模块会阻隔掉不同节点之间的信息交互,这会带来两个问题。首先,某一个节点的学习过程中失去了其他相关节点序列的信息;其次,在有校准损失函数的情况下,模型很难学习如果在单节点预估准确率和层次和约束下进行trade-off,因为每个节点缺少其他相关节点如何进行预估校准的信息。这导致模型比较难找到一个同时提升预估准确率和层次和约束的最优解。下图左侧曲线表示了随着训练轮数增加,是否引入校准矩阵学习模块底层节点WAPE的下降情况,可以看到不加校准矩阵的情况下,底层节点的WAPE在训练一定轮数后开始出现震荡,而加入校准矩阵后,底层节点的WAPE能够持续下降。
![4626a5396c9e3556ffb000fba596a2f4.png](https://i-blog.csdnimg.cn/blog_migrate/643c778908b6b07b9f51ff00f66ae056.png)
✅ 稳定正则化损失函数影响分析
去掉稳定正则化损失函数(No Stability Loss)也会影响模型效果,表明稳定正则化函数对于模型训练有一定帮助。我们对比了相邻step的校准矩阵之间L2距离的均值,在是否加入稳定正则化损失函数下,随着训练步数增加的变化情况,如上图中右侧子图。可以看到,不论是否加入稳定正则化损失,相邻step的校准矩阵之间的L2距离均值都倾向于下降,表明我们引入的先验知识是比较合理的。加入正则化损失函数后,校准矩阵L2距离很快下降到稳定水平,帮助了模型更好的收敛。如果不加入改损失,模型会持续比较长的一段收敛过程。
✅ 语义信息引入影响分析
为了分析语义信息的引入对模型效果的影响,我们对比了基础模型(baseline)、基础模型+属性的id特征(+id 非atre)、基础模型+语义信息三种模型效果。可以看到,加入id特征,反而会使模型效果有微弱下降,这是由于id特征记忆性很强,而我们场景的时序预估问题中,时间序列波动性较大,这种id特征很容易带来过拟合问题。与此相比,当我们引入语义特征后,模型效果得到提升,表明用语义信息代替id特征更适合序列波动性大的时序预估任务。
![7ac9bea576997053bc060d4d8f6b9967.png](https://i-blog.csdnimg.cn/blog_migrate/45c95da6159cc91f9cbd65495b19b1aa.png)
7. 总结与展望
本文聚焦电商领域中搜索保量广告的流量预测问题。我们在时间序列预估问题中,引入了多粒度多层级数据,同时考虑层次结构和约束关系、每个节点的语义信息,并通过层次采样使模型可以在大规模时间序列预测数据上高效运行,形成了端到端的深度层次预估模型。后续我们将继续深入时序预估问题,从时序图、语义属性图相结合的角度进一步挖掘时间序列节点之间的时间和空间关系,以提升流量预估效果。
参考文献
[1] Chuanpan Zheng, Xiaoliang Fan, Cheng Wang, and Jianzhong Qi. 2020. Gman: A graph multi-attention network for traffic prediction. 34, 01 (2020), 1234–1241.
[2] Haoyi Zhou, Shanghang Zhang, Jieqi Peng, Shuai Zhang, Jianxin Li, Hui Xiong, and Wancai Zhang. 2021. Informer: Beyond efficient transformer for long sequence time-series forecasting. (2021).
[3] Bing Yu, Haoteng Yin, and Zhanxing Zhu. 2017. Spatio-temporal graph convolutional networks: A deep learning framework for traffic forecasting. arXiv preprint arXiv:1709.04875 (2017).
[4] Zonghan Wu, Shirui Pan, Guodong Long, Jing Jiang, Xiaojun Chang, and Chengqi Zhang. 2020. Connecting the dots: Multivariate time series forecasting with graph neural networks. (2020), 753–763.
[5] Shanika L Wickramasuriya, George Athanasopoulos, and Rob J Hyndman. 2019. Optimal forecast reconciliation for hierarchical and grouped time series through trace minimization. J. Amer. Statist. Assoc. 114, 526 (2019), 804–819.
[6] Davide Burba and Trista Chen. 2021. A Trainable Reconciliation Method for Hierarchical Time-Series. arXiv preprint arXiv:2101.01329 (2021).
[7] Yaguang Li, Rose Yu, Cyrus Shahabi, and Yan Liu. 2017. Diffusion convolutional recurrent neural network: Data-driven traffic forecasting. arXiv preprint arXiv:1707.01926 (2017).
[8] Bo Han, Quanming Yao, Xingrui Yu, Gang Niu, Miao Xu, Weihua Hu, Ivor Tsang, and Masashi Sugiyama. 2018. Co-teaching: Robust training of deep neural networks with extremely noisy labels. arXiv preprint arXiv:1804.06872 (2018).
[9] Chenyou Fan, Yuze Zhang, Yi Pan, Xiaoyue Li, Chi Zhang, Rong Yuan, Di Wu, Wensheng Wang, Jian Pei, and Heng Huang. 2019. Multi-horizon time series forecasting with temporal attention learning. (2019), 2527–2535.
[10] Souhaib Ben Taieb and Bonsoo Koo. 2019. Regularized regression for hierarchical forecasting without unbiasedness conditions. (2019), 1337–1347
END
也许你还想看
喜欢要“分享”,好看要“点赞”ღ~
↓欢迎留言参与讨论↓