内容简介:本文将从最简单的概念开始,逐步讲解推荐系统的发展历程和最新实践。以产品经理的视角,阐述推荐系统涉及的算法,技术和架构。本章是第一章,将先概括性介绍推荐系统。推荐系统是迄今为止,人工智能,大数据和云计算等前沿技术应用得最全面的产品场景之一。它是众多前沿技术的结晶,集百家之大成,复杂而微妙。但抽茧剥丝后,它又跟众多的科学那样,简洁而优美。像“猜你喜欢“这样的功能,已经数见不鲜,陪伴我们多年了。但这个功能具体是怎么实现的呢?我想通过这篇文章跟大家聊一聊。
本文将从最简单的概念开始,逐步讲解推荐系统的发展历程和最新实践。以产品经理的视角,阐述推荐系统涉及的算法,技术和架构。本章是第一章,将先概括性介绍推荐系统。
推荐系统是迄今为止,人工智能,大数据和云计算等前沿技术应用得最全面的产品场景之一。它是众多前沿技术的结晶,集百家之大成,复杂而微妙。但抽茧剥丝后,它又跟众多的科学那样,简洁而优美。像“猜你喜欢“这样的功能,已经数见不鲜,陪伴我们多年了。但这个功能具体是怎么实现的呢?我想通过这篇文章跟大家聊一聊。
在介绍推荐系统之前,先简单介绍下人工智能技术。
01 解决人工智能问题的两种思路
人工智能的算法,涵盖了概率,统计,高等数学,计算机,大数据等多个学科的知识,抽象且复杂。这里不打算给人工智能做内涵和外延的定义性解释,而是从更具象的角度来阐述这个问题。
机器智能和飞上蓝天,都是人类千百年来的梦想,而且这个两个尖端科学都经历了直接仿生的思路失败后,改变思路获得了突破。
因为看见鸟能飞,最早制造飞行器的思路,都是模仿鸟的结构。达芬奇是个伟大的艺术家,同时也是个能工巧匠,他设计了一个非常巧妙且像鸟的飞行器,但似乎并没有什么用。历史上第一个真正驾驶飞行器飞上蓝天的人,是把飞行器做的最不像鸟的莱特兄弟。飞机的诞生,建立在流体力学的基础上。
类似地,历史上,人工智能有两种主要的思路:
一种是早期的主流思路:模仿人类学习的过程,将事物的特性描述给机器,从而让机器获得跟人类等同的认知。
按照这种思路,要让机器识别出猫来,就类似于要告诉机器:猫有四条腿,两只眼睛,身上有柔软的毛等等特征。因为人就是这样认识猫的。但是这种思路从1956年开始,被研究了十年之后依然毫无进展而被搁置。
另一种是现在的思路:让机器自己从数据中学习,从而获得类似人类的认知。
所以,我们现在看到的人工智能术语名称,主要都是机器学习(Machine Learning),深度学习(Deep Learning),强化学习(Reinforcement Learning)等。
按照这个思路,我们要识别出猫,只要给机器一系列图片,并标记好哪些是猫,哪些不是猫。机器通过图像数据训练模型,然后再用训练好的模型把猫识别出来。
推荐系统的思路也是这样,通过让机器学习每个用户的点击,购买,分享,收藏和负反馈等代表用户喜好和厌恶的数据,以让机器知道用户的偏好,从而实现对用户可能喜欢的物品进行推荐。
02 人工智能的三个过程
按机器学习的思路,人工智能的实践都可以简单地分为三个过程:数据,学习和决策。
1. 数据
首先,机器需要感知的事物对象,就要通过数据。这个数据有可能是现实世界中的实际数值,如温度,湿度,股票价格等等。也有些是数字化的文件,如图像,语音等。
对于大多数的数据,机器并不能直接就“读懂”他们,而需要我们用算法来从这些数据中提取特征。
比如 在深度学习图片识别领域,需要用多层神经网络抽取出图像的基础特征。 实践表明,高阶特征可由低阶特征组合而成。下图中,最底层的正交边经过组合后,就可以得到脸,车,大象和椅子。反过来讲,任意图片,经过多层神经网络特征抽取之后,都可以得到相似的基础特征。所以可以简单地认为,基础特征的不同组合形成了不同的的图像,提取出图像的基础特征和组合参数就能识别图像。
由于数据形式不同,推荐系统算法并不能像图像识别算法那样直接通过堆叠神经元层级来抽取特征。推荐系统抽取特征的过程需要不同类别算法的辅助。如 推荐系统需要构建用户画像和物品画像,要用算法或规则先把用户的偏好标签和物品的特征标签都打好,计算好权重,然后再输入模型进行学习。
2. 学习
再者,学习则是机器通过算法,通过大量的数据不断迭代调优,训练模型的过程。
3. 决策
最后,决策就是通过训练好的模型进行预测或分类等。这些都比较好理解。
4. 小结
一个推荐系统,会由很多个模型构成。小到一个用户画像标签的预测模型,大到推荐的 排序 模型都可以拆解成数据→学习→决策的过程。这便是解决问题的思路。
因为不同性别的用户在物品偏好上有较大的不同。对于很多平台,预测性别是个必选的工作。这是个有监督学习问题,我们可以这样解决:
- 数据。首先挑选跟用户的性别有关数据。假设挑选了头像,昵称,手机型号,用户APP安装列表和点击记录等数据。然后将用户数据中这些字段和已知性别的数据挑选出来。
- 学习。挑选一个模型进行学习拟合。一般地可以选择逻辑回归模型,或者决策树类的模型进行拟合。
- 预测。用已学好的模型对未知性别的用户进行预测。
03 推荐系统的作用
介绍完人工智能的感知,学习和决策三个过程,下面开始介绍推荐系统。
在互联网商业平台上,如今日头条,快手,淘宝等,存在供给和需求双方,双方的代表是用户(User)和物品(Item)。没有推荐系统的时候,用户和物品的连接方式一般有三种主要方式:
- 物品经小编推荐给了用户
- 用户自己搜索了需要的物品
- 物品被用户A推荐给了用户B
这三种连接方式满足了大多数的需求,也一直运行良好。不过移动互联网时代,手机屏幕小,单屏可曝光内容也少了很多。特别是在流量越来越难获取的当下,平台的主动推荐单纯靠运营人员编辑,局限性就比较明显:
- 运营大多推荐大众喜欢的物品,长尾物品得不到足够曝光。
- 大众商品不等于人人喜欢,存在推荐不精准而导致的流量浪费。
- 推荐数目有限,内容不能无限下拉,用户看完即走。
为了解决以上这些问题,我们引进了推荐系统。
04 推荐系统的工作流程
从本质上讲,推荐的过程,就是根据不同的用户偏好,对物品进行排序,然后择优推荐。
极端情况下,如果只有10个物品需要推荐,我们为每个用户都针对这10个物品进行全排序就可以了,这不需要很大的计算资源。
但是,当被推荐物品达到上百万个的时候,我们就不可能给每个用户都进行全排序了。一般来说,推荐结果要在收到用户请求后,10毫秒左右的时间就给出,做物品全排序这么短时间是不可能达成的。所以推荐的时候,只能对部分物品进行排序。
推荐系统一般做点击预估较多,我们这里以点击预估为例。系统给用户做推荐,一般按照以下流程进行:
如上图所示,给用户做出推荐响应的过程分为三个:
- 召回:从百万以上内容池中快速初筛出候选集。
- 初排:根据点击率预估给候选集初步排序。
- 精排:根据需要调整排序。
1. 召回
收到用户请求后,我们需要一些快速的算法或者规则,从上百万甚至上亿的物品库中将最有可能的物品初步筛选出来。这个筛选的过程就叫做召回(Recall),也有些互联网公司将这个过程叫做匹配(Matching)。召回完成后,就可以得到几百个推荐候选集。一个推荐系统一般有多个召回算法或者召回规则,这叫做多路召回。如:
- 基于用户画像标签召回。
- 基于地理位置信息召回。
- 基于物品协同过滤召回。
- 基于热门商品召回。
2. 初排
召回过程完成后,得到的候选集就被输入排序模型进行排序。模型将预测每个物品被用户点击的概率,且按照点击概率高到低进行排序。
但是这个排序结果一般不是最终推荐给用户的结果,所以这个过程叫初排。初排后,一般会产生几十个推荐结果给下一步。
3. 精排
前面提到人工智能的两种思路。但是,在第二种思路大行其道的今天,并不是第一种思路就消失殆尽了。
在推荐系统中,还需要策略产品经理设定一些专家规则。在算法还没有学习到某方面知识的时候,用这些规则告诉机器如何处理一些问题。精排就是需要使用规则的场景之一。
精排一般是对排序的结果进行额外的筛查,降权或升权处理的过程。下面是一些常见的精排时处理:
- 对推荐结果的进行调整,保持每次推荐的多样性。如一口气推荐了10款华为手机,而且都靠的很近,这个时候就需要将结果减少,如只要前两个,而且打散。
- 出于商业目的,对一些物品进行流量扶持,将推荐结果中该类物品排到前面。甚至某些物品不管有没有被推荐,都直接插入并置顶。
- 对有违规风险,或者已经下架,或者该用户不喜欢的物品进行过滤
精排结束后,一般会产生8-10个结果直接推荐给用户。这就是整个推荐的过程。
05 结语
最后,总结一下,本章有两个重要点:
- 人工智能问题实践中,一般有三个步骤:数据,学习和决策。面对我们需要让机器学习的问题,首先我们要找到机器需要的数据,并做好特征提取。数据准备好后,再通过选择或构建模型让机器学习。
- 推荐系统给用户做推荐时,会经过三个步骤:召回,初排和精排。
本文由 @菠萝的海王子 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 人是会变的,今天她喜欢听后朋,明天可能喜欢别的
- 用Flutter实现一个仿“探探”的左右滑动选择喜欢/不喜欢的效果
- 自产生程序
- JavaScript万物产生顺序
- 快速产生一个随机字符串
- osquery的table产生原理分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
我的第一本编程书
[日]平山尚 / 张沈宇 / 人民邮电出版社 / 2016-7 / 79.00元
写这本书之前,作者一直在摸索一种最有利于入门者学编程的方法,并应用到教学当中。经过两年的教学实践,他确信他的方法是有效的,于是便有了这本书。这本书面向的是完全没有接触过编程的读者。作者将门槛设置得非常低,读者不需要懂得变量、函数这些名词(这些名词在书中也不会出现),不需要会英语,完全不需要查阅其他书籍,只需要小学算术水平即可。这本书给初学者非常平缓的学习曲线,有利于为之后的进阶学习打下坚实的基础。一起来看看 《我的第一本编程书》 这本书的介绍吧!