当前位置:首页 > AI其它类

购物软件为什么能猜中你想买什么?从协同过滤到深度学习的推荐原理

1个月前 (09-10)AI其它类54

tuijian-suanfa-yuanli-cover.jpg

去年某咨询公司的数字消费报告里有个数据:国内头部电商平台的推荐流量占比已经超过六成。翻译成大白话——你在购物软件上看到的东西,一大半不是自己搜的,是算法递到你眼前的。这个比例三年前还不到四成。

我妈有一回就着这个事问我:"我就搜了一次按摩仪,怎么打开哪都是这东西?是不是手机在偷听我说话?"她指着屏幕上满屏的颈椎按摩仪、足浴盆、护腰带,语气带着烦躁。我没急着回答,因为这件事背后的逻辑,恰好是我这段时间在研究的方向。

推荐这件事听着简单——给你看你可能喜欢的东西。但"可能喜欢"四个字,背后的计算量远比想象中大。我花了几个月啃推荐系统的资料,越看越觉得这套东西值得拿出来聊聊。

协同过滤:推荐技术的老底子

推荐经历过几次大的技术迭代。早期能跑起来的方案叫"协同过滤"(Collaborative Filtering),大概在2000年前后大规模落地,亚马逊和早期的Netflix都在用。

思路朴素到让人意外——核心就一句话:跟你行为相似的人喜欢的东西,你大概率也喜欢。

具体怎么算?假设用户A买了手机壳、数据线、充电宝,用户B买了手机壳、数据线、耳机。系统发现A和B都买了手机壳和数据线,行为相似度很高。这时候A还没买耳机,但B买了——系统就把耳机推荐给A。

反过来也成立:两件商品经常被同一拨人同时购买,说明它们之间有某种关联。买了泡面的人经常同时买火腿肠,那买了泡面没买火腿肠的人,就给他推火腿肠。这叫"基于物品的协同过滤",前面那种叫"基于用户的"。

别小看这套逻辑。在数据稀疏度还不算太高的年代,它确实管用。Netflix在2006年办过一届推荐算法比赛,悬赏一百万美金,冠军团队用的核心方案就是协同过滤的改良版。

但毛病也明显。

冷启动是个绕不开的问题。一个新用户没有任何行为记录,系统拿什么去匹配?一个新商品没人买过,怎么知道该推给谁?这俩场景在实际业务里天天碰到。

数据稀疏也让人头疼。一个大电商平台,商品可能有几千万个,用户几亿个,但每个人实际买过的东西可能就几十件。放进一个几千万乘几亿的矩阵里,绝大部分格子是空的。在这么稀疏的数据上找"相似的人",准确性大打折扣。

推荐结果过于同质也是个硬伤。协同过滤只能推荐有行为数据的东西,意味着热门的东西越来越热,冷门的很难被推荐出去。

深度学习进场:让推荐有了"理解力"

大概2016年前后,深度学习在推荐领域开始大规模铺开。标志性事件是YouTube发的那篇论文——用深度神经网络做视频推荐,把召回率拉高了一个量级。

深度学习解决的核心问题是:把人和物都变成"向量"。

什么叫向量?你可以理解为一串数字,比如[0.7, 0.2, 0.9, ...],每个数字代表某个维度的特征。用户A的向量可能是[喜欢科技类0.8, 价格敏感0.3, 品牌偏好0.6, ...],商品X的向量可能是[科技属性0.9, 价格区间0.4, 品牌调性0.5, ...]。两个向量越接近,说明匹配度越高。

以前协同过滤也做类似的事,但它是直接从行为数据里算相似度,维度有限。深度学习不一样,它可以从海量数据里自动学习特征——用户点击了什么、停留了多久、搜索了什么词、什么时间段活跃,商品的价格、类目、描述文本、图片特征……大量信息被神经网络压缩进向量里。

这一步在行业里叫"embedding",中文翻译不统一,有人叫"向量化",有人叫"表征学习"。叫什么不重要,关键在于它让推荐系统从"数行为"变成了"懂特征"。

有个细节值得留意。YouTube那篇论文里,推荐分了两步走:先从一个巨大的候选池里粗筛出几百个视频,再从这几百个里精排。后来这套"召回-排序"的两段式架构成了行业标配,几乎所有大规模推荐系统都在用。

召回、排序、重排:一套完整的推荐流水线

现在主流推荐系统的架构,大致分三个环节。

召回环节。面对几千万商品,不可能一个个算匹配度,太慢了。召回的作用是从海量库存里快速捞出几百到几千个候选。这个环节追求的是"快"和"全"——宁可多捞一些不相关的,也不能漏掉该推的。

常用的召回方法有好几种:基于协同过滤的、基于向量的、基于图的、基于行为的,各捞一批,合并在一起。你在购物软件上看到"猜你喜欢"里那些五花八门的东西,很多就是不同召回策略的结果混在了一起。

排序环节。召回捞上来的几百到几千个候选,需要用更精细的模型来打分排序。这个环节追求的是"准"。模型会综合考虑几十甚至上百个特征——用户的长期偏好、短期兴趣、商品的点击率预估、转化率预估、价格竞争力——给出一个综合得分,按分数从高到低排列。

排序模型这些年也在迭代。从早期的逻辑回归,到因子分解机(FM),再到深度神经网络(DNN)、深度兴趣网络(DIN)、行为序列模型……名字越来越花哨,核心思路一脉相承:让模型学到更复杂的特征交互关系。

有个叫DIN的模型是阿里巴巴2018年提出的,专门解决一个问题:用户的兴趣是多变的。你上午在看手机,下午在看零食,晚上在看衣服,不能拿一个固定向量代表"你这个人"。DIN的做法是让模型根据当前候选商品,动态激活用户历史行为里相关的部分。推手机的时候多看你买过的电子产品行为,推零食的时候多看你买过食品的行为。

重排环节。排完序之后还不能直接上线。因为纯按得分排,可能出现一堆相似的东西挤在一起——比如前十条全是手机壳,虽然得分高,但用户体验很差。重排负责做多样性保证、打散相似内容、插入广告、做新品冷启动扶持。你刷信息流的时候感觉内容"不那么重复",就是这一步在起作用。

为什么会觉得"被监听"

回到开头我妈的疑问。她觉得手机在监听她,其实不是。推荐算法能"猜中"你,靠的不是偷听,是行为数据的关联推断。

你搜了一次按摩仪,系统记录了这个行为。然后它发现:买按摩仪的人很多也买颈椎枕,看颈椎相关内容的人也会被推养生类视频,而养生视频的观众里有一部分近期也在搜按摩仪。这中间的关联链条,比想象的要短得多。

有个概念叫"隐式反馈"——你没说过喜欢什么,但你的点击、停留、滑动、返回这些动作全被记录在案。你在一个商品页停留了8秒,另一个只停留了1秒,系统就知道你对前者的兴趣更高。这些信号单个看微不足道,叠在一起就构成了你的"兴趣画像"。

隐私争议这几年越来越热,也确实该热。推荐系统需要大量行为数据才能跑得准,这些数据包含的信息远比大多数人意识到的多。你在哪个时间段活跃、浏览了什么、停留了多久、买了什么、退了什么——把这些拼起来,几乎能还原出一个人的生活轨迹和消费能力。

几大平台这两年都上了"推荐解释"功能,点一下能看到"为什么给你推这个"。但解释的大多是表层原因——"因为你浏览过类似商品"——深层的数据关联和模型逻辑,并不会展示给你。

我后来跟我妈解释了半天,她听完说了句:"所以不是手机偷听我说话,是我搜了个东西被它记住了。"顿了顿又补了一句:"那我以后少搜点东西不就行了。"

我笑了一下没接话。少搜不管用,因为记录你行为的远不止搜索这一条路径。不过这件事倒也不必太焦虑——了解算法是怎么运作的,至少能让你在被推荐的时候,知道这些内容是怎么来的,而不是觉得背后有什么神秘力量在盯着你。

推荐算法本质上是一套概率游戏。它给你推的,不是你"一定会买"的东西,而是"你买的概率比别人高一点"的东西。概率高一点,转化就多一点,平台的收入就多一点。至于你到底买不买,它不关心,它只关心整体转化率这个数字。

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。