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


文章插图
模型结构图如上,网络图很好理解 。特色操作就是特征工程和优化目标了,具体看特色操作 。
3.2 特征工程
排序模型用的特征主要分为两大类,一类是展示()相关特征,如视频属性等,另一类是query相关属性,如user/属性 。
这三个,就是上面两大类的代表,当然,还可以加入更多刻画视频和用户特点的特征,用户的年龄,性别,职业,位置等,视频的类别,上传时间,关键词等 。
这种特征的处理方式很常规理论,类别特征需要,连续特征需要归一化 。但这里面提到的两个新的很有意思:
1.类别特征的维度选择:建议选择与item物料库大小的对数比例,即embed dim正比于log(vocab size).如果某个类别的取值特别多,可以限定一个值,长尾的值对应的表示为全0的向量(这个也是一个工程和学术的trade-off,低频item的学不好,干脆截断它)
2.作者发现对连续特征的归一化处理方式很影响训练的收敛性,但是作者在这里采用了一种累积分布归一化的方式,对于连续变量x,假设它的取值分布为f,通过以下公式把x归一化为?~∈[0,1):?~=∫?∞???,就是?~在x整体取值中的百分比排序位置 。
但如果仅仅这种特征的话,那就没必要说了,后面这两个特征才是作者花大功夫做的 。
这是作者提到的重要的特征,即能描述用户历史上与待评分视频,或类似视频已有的交互行为信息的特征,例如用户与待评分视频所在频道的交互历史:用户观看了次频道多少视频?用户最后一次观看同主题视频时什么时候?这些特征的泛化性很好,对待评分视频的预测很有帮助 。
time since last watch这个特征来反映用户看同类视频的间隔时间 。从用户的角度想一想,假如我们刚看过"DOTA 经典回顾"这个的视频,我们很大概率是会继续看这个的视频的,那么该特征就很好的捕捉到了这一用户行为 。
另外一点经验,把召回模型的信息以特征形式传入排序模型也很有帮助 。例如,哪些召回模型召回了这个候选视频?它们都给出了什么分数?
描述视频历史展示频率的特征对于在推荐中引入“流失”也很关键(连续的请求不会返回相同的列表) 。如果最近给用户推荐了一个视频但用户没看,那么模型会在下一次页面加载时自动降低这个视频的展示可能 。这个其实就是# .# 一定程度上引入的思想,避免同一个视频持续对同一用户进行无效曝光 。尽量增加用户没看过的新视频的曝光可能性 。
3.3 建模目标-用户观看时长
这里精排模型训练的目标函数和我们之前看到的不太一样 。模型优化的目标时每次展示的平均观看时间 。作者认为按点击率排序会倾向于诱惑用户点击(用户未必真感兴趣)的视频排前面,而观看时间能更好的反映出用户对视频的兴趣 。并增加用户的watch time也更符合一个视频网站的长期利益和用户粘性 。
王喆老师:这个问题看似很小,实则非常重要,objective的设定应该时一个算法模型的根本性问题,而且是算法模型部分跟其他部门接口性的工作,从这个角度说,youtube的推荐模型符合其根本的商业模型,非常好的经验
把训练看成一个二分类问题,其中训练数中的正样本是曝光点击的视频数据,负样本是曝光未点击的数据,优化目标是点击率,这是我们之前排序模型常用的目标 。而这里想把目标变成优化平均观看时长,那么如何变化呢?
这里采用了加权的逻辑回归,将用户的watch time作为正样本的权重,线上的时候e^(wx+b)做预测,就能直接得到 watch time 的近似 。
那这究竟是怎么做的,为啥这么做可行,背后的原因是啥 。