3. YouTubeDNN排序模型细节剖析( 二 )


精排侧,这一块的大致发展趋势,从ctr预估到多目标,而模型演化上,从人工特征工程到特征工程自动化 。主要有三大块,CTR预估主要分为了传统的LR,FM大家族,以及后面自动特征交叉的DNN家族,而多目标优化,目前是很多大公司的研究现状,更是未来的一大发展趋势,如何能让模型在各个目标上面的学习都能“游刃有余”是一件非常有挑战的事情,毕竟不同的目标可能会互相冲突,互相影响 。
这两阶段的方法,就能保证我们从大规模视频库中实时推荐,又能保证个性化,吸引用户 。当然,随着时间的发展,可能数据量非常非常大了,此时召回结果规模精排依然无法处理,所以现在一般还会再召回和精排之间,加一个粗排进一步筛选作为过渡,而随着场景越来越复杂,精排产生的结果也不能直接给到用户,而是会再后面家伙是那个一个重排后处理下 。所以如今的漏斗,如下所示 。
论文里面还提到了对模型的评估方面,线下评估的时候,主要是采用一些常用的评估指标(精确率,召回率,排序损失或者auc这种),但是最终看算法和模型的有效性,是通过A/B实验,再A/B实验中会观察用户真实行为,比如点击率,观看时长,留存率等,这些才是我们终极目标,而有时候,A/B实验的结果和线下我们用户的这些指标并不总是相关,这也是推荐系统这个场景的复杂性 。我们往往也会用一些策略,比如修改模型的优化目标,损失函数这种,让线下的目标尽量和A/B衡量的这种指标相关性大一些 。这篇文章也有提及,真的,想了解工业上的推荐系统,这篇paper必须读 。
2. 的召回模型细节剖析
召回模型的目的是在大量视频中检索处数百个和用户相关的视频来 。这个问题,我们可以看成一个多分类问题,即用户在某一个时刻点击了某个视频,可以建模成输入一个用户向量,从海量视频中预测出被点击的那个视频的概率 。
换成比较准确的数学语言描述,在时刻t下,用户U在背景C下对每个视频i的观看行为建模成下面的公式:
2.1 召回模型结构
召回模型的网络结构图如下所示
它的输入主要是用户侧的特征,包括用户观看的历史video序列,用户搜索的历史,然后就是用户的人文特征,比如地理位置,性别,年龄这些 。这些特征处理上,和之前那些模型的也比较类似:
这里的embedding向量得到的方式,论文中通过word2vec得到的,也就是每个item事先通过w2v方式算好了的embedding,直接作为了输入,然后进行pooling融合 。除了这种算好embedding方式之外,还可以过embedding层,跟上面的DNN一起训练 。
这些特征处理好了之后,拼接起来,就成了一个非常长的向量,然后就是过DNN,这里用了一个三层的DNN,得到了输出,这个输出也是向量 。
到这里,前向传播大致就说完了 。最后这一步,就是多分类问题,然后求损失,这就是做的事情 。
再详细说之前,我们放上里面的skip-gram model(中心词预测上下文词)的理解图
的核心思想是共现频率高的词相关性越大,所以skip-gram采用中心词预测上下文词的方式去训练词向量,用操作将中心词与上下文词的相似程度转成概率 。训练完成之后就可以得到中心词和上下文词的词向量 。
有了的理解,再看顶部就非常容易了 。

3. YouTubeDNN排序模型细节剖析

文章插图
只看这里的过程,其实就是上面skip-gram过程,不一样的是右边这个中心词向量v_c是直接过了一个层得到的,而左边这个用户向量u是用户的各个特征先拼接成一个大的向量,然后过一个DNN降维 。训练方式上,这两个也是一样的,无非是左边的召回模型,多了几层全连接而已 。