很荣幸有机会和论文作者Emre Sargin关于之前发的Deep Neural Networks for YouTube Recommendations进行交流,梳理如下:
提问对话汇总:
- 如何进行负采样的?
构造了千万量级热门视频集合,每个用户的负采样结果来源于这个集合,会有一些筛选的tricks,比如剔除浏览过的商品,负采样的数量Google在200万条。(也就是说,在计算loss的时候,google的label是一个200万长度的向量,瑟瑟发抖.jpg。)
- 推荐算法应用上,有什么评估方式和评估指标?
主要基于线上进行小批量的abtest进行对比,在考虑ctr指标的同时也会综合全站的信息加以分析,同时对新颖程度和用户兴趣变换也是我们考察的对象。
- 冷启动的解决方式?从来没有被点击过的video如何处理?新上的video如何处理?
google的推荐基于多种推荐算法的组合,YouTubeNet主要解决的是热门商品的一个推荐问题,冷启动或者没有被点击的video会有其他算法进行计算。换句话说,解决不了。
- example age如何定义?
user+vedio的组合形式,train过程中,是用户点击该vedio的时间距离当前时间的间隔;predict过程中,为0。该部分对模型的鲁棒性非常重要。
- 是否遇到神经元死亡的问题?
有,解决方案很常规,都是大家了解的,降低learning_rate,使用batchnormalization。
- 是否预到过拟合?
没,youtube的用户上亿,可以构造出上千亿的数据,过拟合的情况不明显。但是会存在未登录用户,我们会通过一些其他CRM类的算法补充构造出他们的基本信息,比如gender、age…
- vedio vector在哪边进行构造和修正?
history click部分进行vedio embedding,并进行修正。另外,50是我们尝试的历史点击长度,20-30也有不错的效果。
- 会有工程计算压力么?
不存在,建议在GPU上计算,后面由于VPN网络信号抖动没听清,大概就说Google在训练模型的时候会有大量GPU支持,每天大概更新2-3模型,没有遇到什么计算瓶颈。
(以上为我个人针对提问结果的理解及总结)
个人感想如下:有钱任性
最后,我觉得算法还是要适应实际情况,大公司的方法可以借鉴但是可能很多时候抄不来,也没条件抄。
原问题如下(实际有删改):
How to do video embedding?
Is there any pre-training?
How to use example age in the model?
How to deal dead ReLU neurons?
How to sample negative classes?
How does the video embedding generated?
How to recommend the video never been clicked and new uploaded videos?
How to do ab testing? What’s the metrics?
Have you facing overfitting?How to solve it?
There is any difficulty in calculating the embedding for millions of videos and users.
During input embedding generation, are they simply averaged?
欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码、转行疑问都欢迎通过公众号发消息给我。