多路召回:基于item的协同过滤,YouTubeDNN,牛顿冷却定律。
排序:GBDT+LR。
注意力 + 神经协同过滤、离散协同过滤
更高阶的特征级注意力机制
考虑时间序列
去除隐形反馈噪声
负反馈
推荐系统实时性
差分隐私用于深度推荐系统??
深度推荐算法几个当前的研究热点包括:
(1)效率与可拓展性:神经网络的计算量十分庞大,而推荐系统因实时性的要求需要在短时间内完成对大量数据的处理,因此如何将它们更高效地应用在超大规模的推荐平台上,是亟需解决的技术难点。
(3)捕捉用户长短期偏好:深度学习中的RNN、LSTM等模型可以捕捉时序信息,将它们应用到推荐中可以用来捕捉用户的长短期偏好,进而结合用户长短期偏好产生推荐。
推荐结果的多样性和公平性:
如果我们在推荐中,只考虑推荐的准确性,那么方法很容易就陷入“信息茧房”。例如某个用户在Netflix上观看了一部喜剧片,如果推荐系统缺乏推荐的多样性,那么接下来向这位用户推荐的内容将会全部都是喜剧片,但很有可能这个用户不仅喜欢喜剧还会喜欢悬疑片,如果只推荐喜剧无疑会带来不好的用户体验与较低的推荐转化率。
至于推荐的公平性,是一个暂时没有具体的衡量标准问题。一个比较典型的例子是前段时间网上的一则新闻,大概内容是某求职网站给企业雇主推荐应聘者时,推荐的结果中全是男性的应聘者,而没有女性的应聘者,这便是推荐不公平的一种体现。我个人理解在某种程度上,推荐的多样性和推荐的公平性追求的结果是一致的, 推荐的结果多样到一定程度,自然也就公平了。
不同的用户对于不同种类的个人信息会持不同的态度,那么如何
实现针对不同用户,定制化地进行隐私保护策略的制定,使得系
统能够快速地适应各类用户,从而实现真正的个性化服务
工业化的推荐系统经过最近几年的发展,目前已经进化到了深度学习时代,代表性的模型有很多,比如Wide& Deep或者DeepFM模型。但是跟NLP或者图像领域相比,很明显深度学习在实用化的推荐系统应用场景还未能发挥符合人们期待的效果。并没有哪个深度学习推荐模型能够相对传统模型有非常大的性能提升,这里面原因可能比较复杂。从模型角度看,我比较看好将Transformer模型应用在推荐领域,大家知道,Transformer在NLP里面已经大放异彩,而且从机制上,它是比较适合用来做推荐或者CTR模型的。但是可能仍然需要针对推荐领域的特点做些改造,直接应用效果也没有太体现出来,但是总体而言,我个人比较看好这个模型。当然,从实用化的推荐引擎角度,还有很多值得关注的点,比如多模态融合/多目标、多任务与Transfer Learning以及AutoML的应用等,都是很有前景和值得探索的方向。刚才讲的是排序模型和推荐机制,至于推荐领域的另外一个重要环节:召回阶段,我觉得采用模型统一召回代替传统的多路召回是个比较明显的趋势。
GAN应用到推荐领域
loss函数增加公式。
点子:
参考.
在推荐系统领域,特别是YouTube的所在视频推荐领域,主要面临三个挑战:
规模大:用户和视频的数量都很大,只能适应小规模数据集的算法就不考虑了。
更新快:youtube视频更新频率很高,每秒有小时级别的视频上传,需要在新发布视频和已有存量视频间进行balance。更新快(实时性)的另一方面的体现是用户实时行为切换很快,模型需要很好的追踪用户的实时行为。
噪音:(手抖、标题党) 噪音主要体现在用户的历史行为往往是稀疏的并且是不完整的,并且没有一个明确的ground truth的满意度signal,我们面对的都是noisy implicit feedback signals。噪音另一个方面就是视频本身很多数据都是非结构化的。这两点对算法的鲁棒性提出了很高的挑战。隐性反馈的行为是有许多噪声的。
之所以要在推荐系统中应用DNN解决问题,一个重要原因是google内部在机器学习问题上的通用solution的趋势正转移到Deep learning,系统实际部署在基于tensorflow的Google Brain上。
整个推荐系统分为candidate generation(召回)和Ranking(排序)两个阶段。召回阶段通过i2i/u2i/u2u/user profile等方式“粗糙”的召回候选商品,召回阶段视频的数量是百级别了;排序阶段对Matching后的视频采用更精细的特征计算user-item之间的排序分,作为最终输出推荐结果的依据。
之所以把推荐系统划分成 召回 和 排序 两个阶段,主要是从性能方面考虑的。召回阶段面临的是百万级视频,单个视频的性能开销必须很小;而排序阶段的算法则非常消耗资源,不可能对所有视频都算一遍,实际上即便资源充足也完全没有必要,因为往往来说通不过召回粗选的视频,大部分在排序阶段排名也很低。接下来分别从召回和排序阶段展开介绍。
把推荐问题建模成一个“超大规模多分类”问题。即在时刻t,为用户U(上下文信息C)在视频库V中精准的预测出视频i的类别(每个具体的视频视为一个类别,i即为一个类别),用数学公式表达如下:
整个模型架构是包含三个隐层的DNN结构。输入是用户浏览历史、搜索历史、人口统计学信息和其余上下文信息concat成的输入向量;输出分线上和离线训练两个部分。 离线训练阶段输出层为softmax层,输出上面公式表达的概率。而线上则直接利用user向量查询相关商品,最重要问题是在性能。我们利用ANN/近似最近邻算法(比如类似局部敏感哈希/Locality Sensitive Hashing、KD-Tree、K-means Tree)为用户提供最相关的N个视频。
类似于word2vec的做法,每个视频都会被embedding到固定维度的向量中。用户的观看视频历史则是通过变长的视频序列表达,最终通过加权平均(可根据重要性和时间进行加权)得到固定维度的watch vector作为DNN的输入。
在有监督学习问题中,最重要的选择是label了,因为label决定了你做什么,决定了你的上限,而feature和model都是在逼近label。我们的几个设计如下:
Ranking阶段的最重要任务就是精准的预估用户对视频的喜好程度。不同于Matching阶段面临的是百万级的候选视频集,Ranking阶段面对的只是百级别的商品集,因此我们可以使用更多更精细的feature来刻画视频(item)以及用户与视频(user-item)的关系。比如用户可能很喜欢某个视频,但如果list页的用的“缩略图”选择不当,用户也许不会点击,等等。
此外,Matching阶段的来源往往很多,没法直接比较。Ranking阶段另一个关键的作用是能够把不同来源的数据进行有效的ensemble。
我们发现最重要的Signal是描述用户与商品本身或相似商品之间交互的Signal,这与Facebook在14年提出==LR+GBDT模型的paper(Practical Lessons from Predicting Clicks on Ads at Facebook)==中得到的结论是一致的。比如我们要度量用户对视频的喜欢,可以考虑用户与视频所在频道间的关系:
数量特征:浏览该频道的次数?
时间特征:比如最近一次浏览该频道距离现在的时间?
这两个连续特征的最大好处是具备非常强的泛化能力。另外除了这两个偏正向的特征,用户对于视频所在频道的一些PV但不点击的行为,即负反馈Signal同样非常重要。
参考:https://zhuanlan.zhihu.com/p/52169807 #概述
https://zhuanlan.zhihu.com/p/52504407 问题解答
可以后续继续读的文章:https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46488.pdf #YouTube使用RNN建模
Covington P, Adams J, Sargin E. Deep neural networks for youtube recommendations[C]//Proceedings of the 10th ACM conference on recommender systems. 2016: 191-198.
2016年的论文,如今看来在算法架构上已无惊奇之处。在百万量级的视频规模下进行个性化推荐。由于候选视频集合过大,考虑online系统延迟问题,不宜用复杂网络直接进行推荐,所以Youtube采取了两层深度网络完成整个推荐过程。
Candidate Generation Model:其实就是召回层,完成候选视频的快速筛选,这一步候选视频集合由百万降低到了百的量级。
Ranking Model:几百个候选视频的精排。
召回阶段具体模型结构:将所有embedding之后的特征向量拼接起来,喂给上层的ReLU神经网络。这里Youtube在建模时把这个问题看作为用户推荐next watch的问题,所以输出是一个在所有候选视频集上的概率分布,自然是一个多分类问题。
问题:
架构图的左上角,为什么在online serving的时候不直接用这套网络进行预测而要使用nearest neighbor search 的方法?
多分类问题中,Youtube的candidate video有百万之巨,意味着有几百万个分类,这必然会影响训练效果和速度,如何改进?
排序阶段具体模型结构:引入另一套DNN作为ranking model的目的就是引入更多描述视频、用户以及二者之间关系的特征,达到对候选视频集合准确排序的目的。
具体特征:
十个文中解决的非常有价值的问题:
Youtube的用户对新视频有偏好,那么在模型构建的过程中如何引入这个feature?