乐趣区

关于人工智能:BIGO-Likee深度推荐模型的特征工程优化

01 Likee 短视频举荐模型和特色工程简介

Likee 短视频是寰球视频社交平台 BIGO 旗下的短视频产品,2017 年 7 月正式上线,在三年的工夫内曾经交出了寰球 MAU 过亿的成绩单。首页广场瀑布流是 Likee 短视频最次要的视频生产场景。三年来,Likee 举荐模型在一直优化网络结构的同时,在特色工程方向也倒退出一套特有的技术解决方案。

特色工程,顾名思义,是对原始数据进行一系列解决,将其提炼为模型可了解的输出数据格式,为模型提供信息增益以晋升模型精度,特色工程是一个示意和展示信息的过程。在理论工作中,特色工程旨在去除原始数据中的杂质和冗余,设计更高效的特色以刻画求解的问题与模型预测指标之间的关系。

特色是模型训练和预估的根底,决定了模型精度的下限。对于在线举荐服务而言,特色数据流对于策略迭代的效率起着至关重要的作用。通过多年实际中的积攒和提炼,咱们演化出一套针对大规模实时深度模型的特色数据框架,在进步策略迭代效率和模型成果的同时,也极大简化了工程复杂性和业务老本开销。这套特色数据流框架在 Likee 短视频首页举荐场景的精排和粗排模块实现多个 AB 试验和全流量上线,模型 AUC 和业务指标均获得显著晋升。

如图一所示,排序模型流程包含日志收集、训练数据生成、模型训练和线上打分等阶段。当举荐系统对用户进行举荐时,会记录过后的物料特色、用户状态与上下文信息,并收集本次举荐的用户行为反馈。在通过样本标签匹配和特色抽取后生成最终的训练数据。离线应用 PS-WORKERS 分布式训练框架对 DNN 模型进行分布式实时训练,定期 dump 最新模型并加载到线上,用于线上排序服务。

Likee 首页举荐初始阶段为了满足疾速上线的需要,线上应用的模型是基于间断统计特色的 XGB 模型,然而树模型在多指标建模和增量学习不便严重不足。近年来,深度学习模型凭借其弱小的表达能力和灵便的网络结构在工业届举荐和广告畛域获得重大进展,Likee 首页举荐场景中,用户与视频交互产生了海量的实在行为数据,为深度学习模型利用提供了必要的条件。为解决大规模的训练样本和进步训练效率,咱们应用分布式训练框架训练 DNN 模型,并基于该框架进行了屡次优化尝试,在 Likee 首页举荐场景下获得了显著的成果晋升。

特色数据作为模型的输出与模型构造严密相连,特色体系随着模型选型一直降级,上面将别离从统计特色、session 特色、多模态特色和 cache tensor 介绍咱们在特色工程方面所做的优化与尝试。

02 Flink 统计特色和 session 特色

2.1 基于滑动变长窗口聚合的 Flink 统计特色

相比于基于间断值统计特色的树模型,增量 fine-train 的 DNN 模型十分依赖于稠密特色 hashkey 的复现,因而模型和特色时效性至关重要,因而咱们引入业界支流的分布式流数据计算引擎 Flink 实现分钟级提早的统计特色和秒级提早的 session 特色。

如图二所示,咱们采纳变长 bucket 窗口聚合的形式对每一个统计实体进行 counting,记录其在时间轴上不同 bucket 的 counting 累加值,对于越长远的行为咱们采纳更大的 bucket 工夫间距进行聚合,在模型应用时,咱们再依据特色具体的工夫范畴从聚合桶队列累加出任意时间段内的统计值。通过这样的形式,在保障 counting 统计值精度的同时,可能大幅升高 redis 和 Flink 工作的内存存储和读写压力。

2.3 Flink 秒级提早 session 特色

如图三所示,应用 Flink 工作记录用户历史行为队列,当 Flink 工作收到用户行为打点日志时,从 redis 读取用户行为队列进行更新而后写回到 redis。其中,咱们做了如下工程实际优化:

● 分用户行为队列存储。在短视频举荐场景用户行为丰盛,用户的高阶行为(点赞,关注,分享)稠密且更可能反馈用户趣味,因而依据用户不同行为划分成多个种子视频队列,保障用户趣味度更高的高阶行为种子可能被更短暂存储和充分利用;

● 冷热数据拆散。为了优化 redis 的读写和存储压力,将用户一天以前的长周期行为队列冷备到 pika,在线上模型应用时再将 redis 短期行为队列和 pika 长期行为队列合并成残缺的用户行为队列,通过这样的形式,咱们存储的用户历史行为队列长度能够达到千量级;

● 用户行为反馈编码。为了进一步建模用户对种子视频的偏好度,Flink 工作会记录用户对每个种子视频的所有交互数据(是否播完,播放时长,播放次数,是否点赞 | 关注 | 分享 | 评论等),在模型网络里将用户反馈行为编码后 embbeding 作为用户对历史种子趣味度的补充信息,在用户趣味网络里该特色效果显著;

● 种子视频属性特色线上实时获取。Flink 工作只记录种子视频 id,种子视频属性特色是在线上模型应用时依据种子视频 id 从画像特色服务获取。

基于以上秒级提早的用户 session 队列特色,Likee 短视频首页举荐粗精排均全量了用户趣味网络模型。

03 主动统计特色

3.1 Flink 统计特色数据流的问题

随着 Likee 短视频日活和视频生产量高速增长,原有 Flink 统计工作很快遇到瓶颈,其面临以下几点问题:

● 机器资源耗费高,稳定性差。Flink 统计工作波及到打点日志解析、历史特色读取、特色计算 & 新特色回写,大量的计算和 IO 开销导致流式零碎稳定性堪忧,并且机器耗费资源微小;散失统计工作的不稳固导致统计特色散布激烈变动,线上效果显著降落,同时会影响离线训练数据导致线上模型很难迅速复原;

● 用户 & 物料交互统计信息缺失。举荐零碎基于用户历史行为进行举荐,千人千面的个性化举荐零碎强依赖于用户属性(用户 id,性别,年龄,城市,趣味标签,手机机型等)与物料属性(视频 id,拍客 id,标签,城市,国家等)之间的穿插特色。用户属性和视频属性间的穿插特色高度稠密且数据量微小,Flink 统计的数据必须短暂存储于内存或者分布式内存存储系统(如 redis),受限于存储系统容量,无奈统计这部分穿插特色的统计值。

3.2 主动统计特色的实现

主动统计特色就是把特色做到模型里,在模型训练时借助于分布式训练平台弱小的 I / O 和存储能力,在训练引擎内进行特色级别的 counting 统计,从而简化离线特色计算流程的复杂度。

在模型训练时,以样本里呈现的每个 hashkey 为统计对象实体,首先从参数服务器 pull 该 hashkey 历史累计的行为统计量(stats feature),如果该 hashkey 第一次呈现,则将 stats feature 用 0 向量初始化,而后用以后样本的用户行为反馈 action_tpl(示意样本是否曝光,是否点击,是否播完,播放时长等行为)对其进行更新:

Stats_feature <- stats_feature * decay_rate + actiontpl

其中 decay_rate 示意工夫衰减因子,而后将更新后的 stats_feature push 回参数服务器。

3.3 主动统计特色在 DNN 模型里的应用和优化

如上图所示,对每个特色域而言,依据其 hashkey 从参数服务器 pull 其对应的 counting 统计值,而后多个特色域统计向量 concat 在一起形成统计特色域(stats feature)。对模型而言,原始的 counting 统计值与模型的预估指标并不完全一致,须要将原始 counting 统计值转换为与模型指标更相干的率值特色(列表点击率,播完率,点赞率等)。

图五为专门设计的 counting 统计特色预处理模块,首先将原值进行对数操作,将求比率的除法运算转换成等价的求差运算,而后引入差值矩阵实现批量求差操作,失去的后果即为咱们须要的比率特色。

3.4 主动统计特色和 embedding 特色的比拟

stats 特色和 embedding 特色从特色实质上而言其实是相通的,都是作为该特色 filed 特定的 hashkey 的信息输出,并且他们的原始信息都起源样本里的用户行为反馈,只不过二者更新形式(即获取特色信息的形式)不同。embedding 特色的更新是通过梯度回传进行软更新(回传的梯度依赖于样本里的用户行为结构的 label),stats 特色则是间接依据样本里用户行为进行硬更新。软更新的 embedding 特色是基于整个模型参数每次进行小幅度更新,对于复现次数足够多的 hashkey 可能学习到更高的精度和更全面的信息,硬更新的 stats 特色对于复现次数少的 hashkey 可能做到更疾速收敛。

stat 特色和 emb 特色各有优劣互为补足,上图示意只用 stat 特色和只用 emb 特色以及二者都用的三个模型 auc 比照。

对于高度稠密复现次数少的穿插特色,embbeding 特色因为 hashkey 呈现次数少导致训练不充沛,而穿插统计特色则可能更疾速精确地捕捉到用户的个性化趣味。

04 多模态特色

4.1 为什么引入多模态特色

在 DNN 模型降级和网络结构优化拿到微小收益后,Likee 模型组致力于将视频 raw feature 作为特色减少到模型中去。视频 raw feature 是用户间接接管的信号,并且 raw feature 和 ID 类特色不同,ID 类特色的所有信息都源于样本里和 label 共现信息的用户反馈,而 raw feature 自身具备物理含意,所以其具备更好的泛化性。另一方面,Likee 短视频作为寰球当先的短视频社区,新视频冷启和优质视频开掘对于资源生态扮演着重要的角色,对于不足用户行为反馈的新视频,raw feature 是视频内容了解和品质评估最重要的信息起源。

4.2 多模态特色抽取

视频 raw feature 过大,每天产生近百亿样本,波及数据会达到上百 T,对于存储和 I/O 都会造成很大的压力,因而须要对视频 raw feature 进行特征提取和压缩。同时,如果间接引入视频 raw feature 作为排序模型的原始输出特色,将多模态模型和排序模型联结训练,会导致模型训练收敛慢且成果不稳固的问题。

最终多模态特色抽取设计如下:在视频上传入库时,应用预训练好的视频模型(I3D)和语音模型对原始视频进行特征提取,将多模态模型的最初一层全连贯输出作为原始视频 raw feature 的低维向量表白,而后将他们存入到视频固有属性特色,在排序模型中将视觉和语音向量和视频 ID emb 向量以及其余 side info 作为视频表征的原始输出。

4.3 多模态向量聚类后 embedding

因为预训练的多模态模型和排序模型指标齐全不统一,为了让生成的多模态向量可能更好地拟合排序指标,除了将上述视觉和语音向量间接作为模型输出,咱们还采纳 K -MEANS 别离对视觉和语音向量进行聚类失去视觉聚类 id 和语音聚类 id,而后将这两个聚类 id 再通过 DNN 模型 embbeding 层失去新的向量,通过排序模型指标的梯度回传来进一步学习多模态特色的向量表白,作为多模态特色输出的补充信息。

05 cache tensor
5.1 特色数据流的进一步变革

在主动统计特色中,咱们突破了特色体系和模型零碎明确的分界线,将统计特色做到模型里,极大简化了在线和离线模型对外界特色数据流的依赖。随着举荐模型的迅猛发展,越来越丰盛的模型特色导致线上原始特色和 emb|stat 特征参数的存储以及读取 I / O 压力骤增,越来越简单的模型网络带来微小的模型预估计算量。因而咱们从新梳理了在线离线数据流和模型训练流程,通过 cache tensor 的形式极大缓解了以上所述的存储,I/ O 和计算压力。

5.2 cache tensor 的工程实现

如图七所示,右边是咱们过来的特色数据流程,线上特色服务依据用户 id 和候选视频 id 列表从在线存储系统获取特色片段并拼接成残缺的原始特色数据,将其输出给线上排序服务的同时还将原始特色数据 dump 到日志零碎供离线生成训练数据。在主动统计特色全量当前,咱们的特色能够分为以下几类:用户画像特色,视频画像特色,拍客画像特色以及用户 session 特色,其中三个画像特色更新频次低且占据原始特色的大部分存储空间。

咱们采纳 cache tensor 技术对特色数据流进行简化,线上特色服务只读取变动快的 user_session 特色,不再读取时序上根本固定不变的画像特色,排序服务获取的(也就是日志零碎 dump 的)原始特色只蕴含 session 特色以及用户 uid 还有候选视频 item id。

在模型离线训练时,依据样本里的用户 id 和视频 itemid 从存储系统读取相应的画像特色对样本进行特色补全,而后应用 batch 训练的形式对模型进行更新。在模型训练的同时,须要记录样本里呈现过的用户 id 和物料 id 列表供后续流程应用。

在模型训练完结后加载训练失去的模型,别离输出样本里呈现过的用户 id 和 itemid 列表,再次从存储系统读取相应的属性特色对样本进行特色补全,而后应用模型对样本进行预测。在预估过程中,将模型网络中的局部两头 tensor cache 到模型,和模型原本的 emb 参数一起存储。如上图所示,将模型网络分成两个局部,offline predict network 和 online predict network,其中 offline predictnet work 中的虚线方框 tensor (user emb 和 item emb)即为须要 cache 的 tensor。

在线服务模型对候选视频进行打分时,无需再读取和预处理画像特色,只须要将线上特色服务返回的用户 id 和候选视频 itemid 以及 session 特色输出给模型,模型依据用户 id 以及候选 itemid 在模型参数里查找相应 cached tensor 提供给裁剪后的模型网络进行预测,上图中 online predict network 是依据 cached tensor 通过裁剪的线上预估网络,其输出为离线建库 cache tensor 后的模型参数。

采纳 cache tensor 的形式优化离在线数据流后,线上预估服务吞吐量减少 6 倍的状况下预估耗时升高 40%。同时基于 cache tensor 优化粗排模型构造,粗排模型 auc 晋升 2%,线上 ab 试验也获得显著效果收益。

06 总结

在 Likee 短视频举荐模型中,为了晋升离在线特色数据流零碎的稳定性和工程性能,同时优化排序模型成果,咱们尝试了如下改良:
(1)引入 Flink 实现秒级提早的 session 特色服务,通过分队列和冷热数据拆散实现千量级用户行为序列特色,用于建模用户长短期趣味;
(2)通过主动统计特色工程,在模型训练时同时进行特色更新,将统计特色做到模型参数里,极大简化特色数据流程,在晋升工程架构性能的同时取得了业务指标的显著晋升;
(3)采纳 cache tensor 的形式将画像特色做到模型参数里,进一步升高线上模型对于外围特色存储系统的数据依赖,同时通过预估网络的裁剪升高线上模型预估计算量,解决简单模型网络的在线预估耗时瓶颈,为更简单精准的排序模型打好根底。

退出移动版