你可以积累越来越多的用户,用户的历史行为会有助于你对长尾内容的理解。
作者 | 极客公园
这是极客公园「极客公开课 · Live」2017 年第一期的活动,来自 Hulu 北京研发中心的研发总监周涵宁 Eric,和我们分享了在视频产品中的推荐系统模型,以及他在 Hulu 的相关技术产品经验。
1 位技术产品大牛和 10 位优秀技术产品人围绕技术产品相关话题,面对面深度分享和讨论,共同创造更优的知识与更高的学习效率。
而现在,这种深度的交流方式属于每一个人,知乎 Live 同步线上实时问答,随时随地参与提问互动,与数百人共创一本知乎 live 版的「课堂笔记」
每周 1 次,全年 50 场,极客公开课,推动产品人的自我迭代
以下为本期课堂笔记精华摘要:
什么是推荐系统?
最早的视频推荐系统,我们可以追溯到街角的「录像店」——在那里你可以租赁到自己喜欢看的碟。但是有了视频网站后,用户便可以在家通过 APP 打开智能电视,或者直接上网,找到他要看的视频、电影。所以推荐系统首先要让用户「能够」找到他想看的内容,其次,在找的过程中,还要让用户找的更爽。比如有个用户进来看了一堆内容,那么我们把他看的所有的历史行为,嵌入到推荐引擎当中去。这个推荐引擎就会生成个性化的频道,下次这个用户再登录,或者都不用下一次,过 5 分钟之后,他看到的内容就会根据他最近发生的历史行为发生变化,这就是推荐系统的基本逻辑。
刚刚说的这种方法叫基于用户行为的推荐,当然是有一定局限性的。比如你只有一个用户行为的时候,你就不知道他会不会看一个从来没人看过的内容,这其实就是长尾问题。当你可以积累越来越多的用户,用户的历史行为会有助于你对长尾内容的理解。
推荐系统最终可以抽象成一个优化目标的问题。
我们要想一想,这个推荐系统到底在为谁服务?实际上它在为三类不同的利益相关方在服务:
第一个:用户。用户是为了能够更方便找到他想看的东西。
第二个:平台本身。平台希望连接服务提供商、内容提供商和用户,他希望赚钱。
第三个:内容提供商,因为内容提供商如果能有更多露出,他在这个渠道上,就会获得点击量或者/和品牌效应,那么他就可以通过一些方法变现,无论是广告的方法还是在一些离线渠道收买的方法。
所以一个推荐算法要同时服务三个利益各不相同的相关方,这本身导致了一个矛盾性。
协同滤波
最早的算法其实比较简单,叫协同滤波。就是相似的人,我会给他相似的内容,那么怎么定义相似的人呢?那就是他们之前具有相同的行为,但这个地方就变成了一个死循环。
后来有人想到一个方法,就叫协同滤波,就是用一个 interactive 的方法去 train,两边互相学,然后收链,这是一个比较标准的方法。那么在我们的系统里面用了大概接近 7、8 年吧,也比较成功。
我们每一个展示叫一个 train,比如 Top picks for you 这是一个最标准的 record train,就是推荐 train.
第二个是 you may also like,你可能也会喜欢,这也是一个推荐的 train。
第三个就是一个子类别。一般大的类别就是言情、动作片,其实这个类别我们还分了一些小类别,比如说这个叫做法庭判案,实际上是动作片下面的一个主类别,这个也可以用推荐算法来产生。
这个叫 auto play,现在国内大多数网站都会有的功能,你看完了一个就自动播下一个,这个也是根据推荐算法来产生的。
矩阵分解
现在的产品中我们使用的是矩阵分解的方法。
其实从 Netflix 以后大家就已经意识到矩阵分解是一种很有效的建模方式,它的基本原理就是把用户作为一个维度,内容作为一个维度,然后建一个二维的矩阵,把这个二维的矩阵找到一个低维的表示,这可能只有 50 或者 100 维,这个个数还是跟内容一样,所以每个内容有一个 100 维的小的表示,每个用户也有一个 100 维的小的表示。这两个作为一个点击,可以恢复出原来的东西。
为什么这样就能工作呢?详细讲解请见知乎 Live
Nade - 深度学习推荐引擎
我们下一代的推荐引擎是用深度学习的方法,具体的方法叫做 Nade,它其实原来是在文本的 top model 里面的一种方法。我们有一个专家是跟着 Nade 的发明人做博士毕业的,所以他对 Nade 特了解,他来到我们公司之后,就发明了 CF-NADE。这是我们 Hulu 自己发明的一种方法。
其实这个原理也不是很难,就是我们把这个 Nade 看成一个黑箱,基本的想法就是用 Nade 来训练一个用户的表示和一个内容的表示,但是这个表示可以不像矩阵分解那么死,因为它结合的时候不再是一个代数的点程,而是基于一个神经网络的,实际上带来了更多的自由度。
基于内容的推荐
我们现在在做的一个事,是去了解一个视频里每一帧他大概的情感是什么?你要说很复杂的情感现在也很难准确辨别,所以我们做的方法是先做一个 Face Detector,然后再把脸上的表情识别出来,现在也有一些很多现成做表情识别的东西。我们认为表情代表的场景的情感,大家可以看到下面有一些结果。