终于结束了在百度的实习,想想真滴是累,天天11点才回到宿舍,出个问题整个周末就没了。唉,不过也总归是有些收获。
这个博客就稍微讲讲整个组推荐系统的框架吧(应该所有市面上的推荐系统都大致是这个样子,不过里面的具体策略就略过啦)
般推荐都分为召回侧和排序侧,召回侧通过各种策略对视频进行打分筛选,例如对于一个用户和多个视频而言,可以关注的点为:该用户对视频的兴趣;视频相似度、dnn计算得分、协同过滤、matchnet等等,这里的每一个策略都要求是简单并且时间复杂度低的,因为对于一个请求而言,在召回侧需要处理所有待分发的视频,故结构应该尽量简单。
接下来是排序侧,排序首先就需要经过粗排和精排两个部分,粗排的逻辑是将召回返回的视频打分,输出给精排几百条视频;精排的逻辑是将粗排返回的视频打分,返回10条视频,这里的10对应在app上每一刷出10个视频。当然过了精排还不够,例如虽然一个人非常喜欢美女,但不能刷一次推荐的10条视频全是美女,所以每一个推荐系统都会加入多样性的模块,保证每一刷推荐视频的丰富度以及类别散度。过了多样性后,最后一个模块是生态块,这一块主要是一些可持续发展的策略,比如要有新视频提权、优质作者提权的策略。在多样性和生态这两块主要做的就是一些视频的替换,至此,我们这一块要知道的推荐就完了,当然还有一些数据来源啊、日志落盘等等,都存在于上述模块的上下游,我也不是特别了解。
那具体还有一些问题,比如粗排和精排的具体模型结构是什么,为什么既有粗排也有精排等等,这些问题就留给大家自己去考虑啦