HiNet: Novel Multi-Scenario & Multi-Task Learning with Hierarchical Information Extraction
论文总结
传统的推荐系统,模型服务通常需要为特定场景单独进行定制化的开发,以适配不同场景下数据分布和特征空间的差异。然而在美团等工业互联网平台中通常存在多种多样的推荐场景(例如首页信息流、垂类子频道等)作用于用户访问的决策链路,同时基于每个场景的个性化推荐模型再对展示项目进行排序最终呈现给用户。
简单来说,就是推荐系统多个场景间信息的互通和共享。
文章给了美团的例子:在美团到店餐饮中,现实中用户往往会在多个不同场景之间进行浏览、点击,并最终成交。
在我的理解里,主要是下面这几种情况需要用到跨领域推荐:
- 目标领域的数据太少,产生了系统的冷启动问题。比如有些冷门的应用或者一个应用刚建起来的情况。
- 目标领域下,特定某些用户、物品的交互记录数据太少,产生用户冷启动或者物品的冷启动问题。例如,有个用户喜欢看电影,但是很少看书籍,那在书籍推荐的领域,该用户就存在冷启动问题。
- 目标领域的推荐效果不好,需要借助相关场景的信息提升推荐效果
- 多个领域的交互行为存在先后关系,跨领域推荐可以提升推荐系统的实时性。例如:用户在美团里,先搜索附近有哪些店铺;然后再找一下某个店铺,有没有秒杀活动或者优惠套餐,最后再决定哪家店铺就餐。那前面的搜索行为场景,就可以供后面秒杀场景或优惠套餐场景提供信息,提升推荐的实时性。
这篇文章主要提出了多场景下信息共享的一个模型框架,框架保证了:
- 学习了当前领域的信息
- 有选择地从其他领域提取相关信息
- 多任务共享信息,提升模型效果。
论文贡献
整个论文的主要创新点如下:
- 提出了一种新颖的多场景多任务学习模型HiNet,用于优化多场景下的多种任务指标,其中创新性地应用了分层信息抽取架构。
- 在场景信息抽取层中,提出了场景感知注意力网络SAN模块,进一步增强了场景信息建模的能力。
- 离线评估和在线A/B测试的实验证明了HiNet优于当前主要方法。目前,HiNet已在美团到餐中的两个场景中进行了全面部署。
我感觉文章有几个不足(个人见解):
- 模型输入的预处理部分,介绍不够详细。个人感觉模型架构对于一个任务的成功或失败,只占一部分,数据的预处理也很重要。这篇文章没有详细介绍,如何进行数据预处理。比如多个场景下的用户行为数据如何处理;不同类型的用户行为如何处理;如何将这种多个场景交替出现的、变长度的用户行为处理成这篇文章模型架构要求的定长特征向量。
- 一个场景的特征表示Scenario Indicator,对于所有用户、所有时间段、所有上下文下,都是相同的,这种表示能力就稍微弱了些。
- 所有的专家子模型的输入,都是全部的信息,并没有对信息进行区分领域,可能导致的问题是输入特征维度特别宽,模型的参数更多,建模效率不高。
建模内容
1. 问题定义
文章主要关注的是多场景多任务推荐的优化问题。该问题定义为:,其中表示第i个场景指示,是第i个场景下任务j的预估值,x表示输入的稠密特征。
原始的特征输入中主要包括了用户画像特征、用户行为特征、当前场景特有特征和商品特征,其中的数值特征首先被转化为分类特征,然后将所有分类特征映射到低维向量空间来获得x。考虑到美团到餐平台中具体的优化目标,分别为每个场景设置了CTR和CTCVR两个任务。
2. 模型介绍
本小节将展开介绍层次化信息抽取网络模型HiNet。如下图所示,HiNet模型中主要包括场景抽取层和任务抽取层两个核心模块。其中在场景抽取层主要包括了场景共享专家(Scenario-shared expert)模块、当前场景特有专家(Scenario-specific expert)模块以及场景感知注意力网络,通过这三部分的信息抽取,最终形成了场景层次的信息表征;而在任务抽取层中,使用自定义门控网络模块CGC(Customized Gate Control)来对当前场景的多任务学习进行建模。
SEI是专家系统,大白话说,就是不同的模型或者建模方法,这里的思想应该是类似Ensemble的思路,集成几个子模型,使得大模型整体的效果要好于任意一个子模型。只不过这里是用门控注意力机制来进行模型集成。
G部分,输入是x,经过多个专家系统,然后对这些专家子系统的输出结果进行集成。
Si部署,输入是x,经过多个专家系统,然后对这些专家子系统的输出结果进行集成。
Ai部分,是使用场景Indicator获得的场景表示,对不同场景下的信息进行集成。
上层的任务信息提取层,包括任务特定的专家子模型和任务共享的专家子模型。
输出层完成两种任务。