RecommendSystem-CheatSheet
Recommend System CheatSheet | 推荐系统术语、算法与实践
推荐系统在社交媒体、资讯阅读、电子商务等各类互联网产品中起到了越来越重要的作用。本质上,推荐系统是一种新的组织信息、传递信息的方式。这种方式火热的根本原因是网络信息指数级增长和信息多媒体化。
信息组织和传递方式大概分为下面
-
1.0 版本:导航页面。在互联网发展初期,网络上的信息很少,所以简单的导航页面就可以满足用户对网络信息获取的需要。 -
2.0 版本:门户网站。随着网民的增加、原来越多的专业作者和编辑在网络上生产内容,这些内容包罗万象,有关于汽车的、有关于体育的。体育里面还有分关于篮球的、关于田径的等等。因此,门户网站这种以树形结构组织网页、传递信息的方式开始爆发,得到用户的青睐。 -
3.0 版本:检索系统。随着博客、论坛、垂直网站这些UGC (用户产生内容)平台模式的崛起,大量的信息被非专业人士产生。这些信息大多用来表达自我,具有语言口语化、内容不确定等特点,很难被清晰地分门别类。这时,检索系统闪亮登场。用户无需知道自己想要的信息属于什么类目,只需要把自己的需要输入在一个简单的搜索框里,就可以得到想要的信息。 -
4.0 版本,全面进入移动互联网时代,每一个拥有智能手机的人都可以轻松产生互联网信息,而且包含更多的图片、声音、视频等更多模态类型的信息。在这个大数据时代,用户甚至很难用语言表达自己想看什么样的信息,于是,推荐系统迎来了其前所未有的机遇。
计算与系统架构
从系统架构来看,现如今推荐系统面临着三大挑战:超大规模数据、用户实时化反馈、多模态信息。
大规模的数据来源于三个方面:网络信息数量、用户数量和用户交互。前文已经提到,网络信息数量是指数级增长的。用户数量虽然有人口上限,但是由于互联网产品的垂直化,动辄过亿用户量的产品已不再是少数。另外,随着前端人机交互技术的发展,用户在产品交互次数已经明显增加。大规模的数据对推荐系统的挑战主要体现在大数据的存储、处理与分析,大规模机器学习系统两个部分。大数据存储、处理与分析已经有主流的开源分布式工具,比如
为了提供更好的用户体验,推荐系统需要实时获取到用户的行为,快速处理数据、进行在线机器学习,最终近乎实时地反馈到下次的推荐服务中。要完成这样的任务,需要从前端到后端整个链路的架构支持。在客户端,需要实时获取用户的操作并实时传回,这需要消息队列(例如,Kafka、ZeroMQ、
多模态是一个比较新兴的名词,其大致的意思是文字、语言、图像、视频这些不同的内容形式共同表达语义。显而易见,互联网上的内容已经从文本占主体演进到了多媒体混合形态占主体,比如近两年,随着手机摄像的快速发展以及网络成本逐渐降低,涌现出一批短视频产品。在目前的大多数推荐系统中,文本、图片、视频通常被分别处理后送入机器学习系统,分别训练出模型。最后,推荐系统会综合应用这些子模型。而多模态数据要求机器学习推荐系统可以同时处理包含多种模态形式的内容,通过联合学习来提升算法效果。但由于图像等多媒体特征抽取速度比较慢,很容易成为瓶颈,所以架构会面临巨大的挑战。比如,传统参数服务器会将数据随机分配到各个