作者:周 杰
本周要跟大家分享一篇来自TechBeat社区的优质好文。
召回是推荐系统的一部分 , 服务于个性化业务 在海量数据中的粗选 。 但是传统的召回无法实现个性化召回的多样性 , 不利于平台内容的分发 。 本文介绍了小米收音机业务如何 使用 DSSM召回模型来提高内容分发效率及以及满足用户个性化需求。
前言
召回作为推荐系统的一部分 , 为个性化业务在海量数据中的粗选提供了很好的支持 。 传统的召回大多是基于策略计算的召回结果 , 例如 , 根据用户的分类偏好去召回相应分类下的优质结果 。 然而 , 这种召回方式从某种角度上讲 , 对于用户来说具有一定的趋同性 , 即我们可能更容易把热门的内容召回给用户 , 这可能会破坏个性化召回的多样性 , 也使得我们的业务越推荐范围越窄 , 不利于平台内容的分发 。 为提高内容的分发效率以及满足用户个性化需求 , 小米收音机业务尝试使用召回模型为业务的召回阶段保驾护航!
本期我们首先介绍一种双塔模型——Deep Structured Semantic Models(DSSM)[1] , 深度结构语义模型 。
原理
文章图片
DSSM模型最初来源于微软(Microsoft) 在搜索业务的应用 , 其实际的原理很简单 , 即将用户搜索词 (query) 与文档(document) 先进行多层全连接(MLP) , 然后将他们转化为同一尺度的embedding , 从而映射到同一语义空间 , 然后再根据距离公式 (这里使用的是余弦相似度) 计算搜索词与文档的相关性 , 从而得出用户搜索的展示结果 。 那么为什么DSSM模型能很好地在搜索业务应用呢 , 这是因为 , 大量用户在使用搜索引擎时 , 其输入关键字以及结果页点击行为 , 会自动地为我们的模型训练导出一份优秀的样本数据 , 即搜索词与结果的匹配以便模型的训练 。
而在原文中训练集的构建也十分简单 , 例如一个搜索词下对应15个关联文档 , 那么可以根据用户日志 , 聚合这15个文档的点击统计 , 然后使用softmax , 去计算后验概率:
DSSM模型在小米收音机业务的应用为什么DSSM在个性化业务有效?
前面先简单叙述了DSSM模型的原理 , 我相信算法相关岗位的同学对于原理是很好理解的 , 但是之前的应用只在搜索业务上 , 而我们本期讲到的是在个性化推荐业务的应用 , 那为什么DSSM模型能在个性化召回中有效呢?
这个问题 , 我们分以下几个方面解释:
1、本质上都是匹配问题
a)搜索业务的本质就是根据用户的搜索词去匹配跟搜索词(或搜索意图)最为匹配的文档;
b)个性化召回就是在海量数据中为用户圈定大概会感兴趣的内容 , 而这种问题可以转化为与用户最匹配的内容的search 。
2、DSSM中不存在query与doc的“feature interaction” , 便于模型拆解
综上所述 , DSSM可以在个性化业务中充当召回角色 。
DSSM在小米收音机个性化业务中的改造
经过上一小节的介绍 , 虽然DSSM模型可以应用到召回中 , 但是相比于搜索业务还有需要需要改造的地方 , 本小节我们通过对DSSM的改造 , 使其符合召回模型的要求 。
模型架构改造
在搜索中 , DSSM主要是为了搜索词与文档的匹配 , 所以模型构造成一个softmax的概率分布 , 来确定最终文档的排序 。 而在个性化业务 , 我们实际上是为了扩大用户点击内容的概率 , 因此我们需要以CTR模型的思维去对原生DSSM模型进行改造:
1、多文档匹配改为单item , 变成CTR模型架构;
2、Softmax的后验概率改为余弦相似度计算 , 与CTR问题做对应 。
文章图片
样本构造策略修改召回模型≠CTR模型
在样本构造中 , 初始时 , 由于我很少做召回的模型 。 因此 , 对于DSSM模型 , 我按照排序的思路去求解这个问题 , 因此对于样本构造 , 等同于CTR模型的样本 , 然后进行了一版模型的迭代 , 结果发现 , 为我召回出来的数据完全不是我喜欢的内容 , 甚至有一些召回内容是风马牛不相及的 , 简直差到了极点 。 后来我查找了很多双塔模型关于召回的样本构造策略 , 发现大多都是基于随机采样做的负样本构造 , 于是我们重新对样本数据进行构造 , 发现效果好了很多 , 那么产生这种结果是为什么呢?这其实涉及到两个误区[2]:
1、错误认定负样本:我们一开始使用CTR思维构造样本时 , 模型其实是将曝光未点击的内容作为负样本给出 , 然后这部分样本其实是经过之前的排序模型给出的 , 也即他们只是用户相对于点击的内容不太喜欢的 , 而相对于未曝光的内容其实是更容易被用户点击的 , 因此 , 这部分内容我们不能将其视为负样本给出数据 。
2、冰山理论:由于我们给出的负样本是曝光未点击 , 可以认为就像冰山理论一样 , 我们只是给模型看到了冰山的一角 , 但是想让模型画出整个冰山 , 这其实是不现实的 , 因此我们需要让模型看到冰山海面下的部分 , 这就是我们需要以随机采样作为负样本采集的策略的原因 。
文章图片
后期优化改造
对于召回模型来说 , 随机采样具有一定的概率可能使用户喜欢的内容被划入到负样本中 , 这其实是业务无法容忍的 , 为了减轻这种情况的影响 , 再加之我们上文中对曝光未点击内容的描述 , 我们将DSSM的二分类问题做成一个回归问题 , 即我们认为曝光未点击内容作为CTR模型筛选的结果 , 可以认定为用户潜在喜欢的内容 , 因此 , 我们对把样本的标签设置为:点击-1、曝光-0.5( 更可以根据用户点击内容的相对位置 , 动态设置曝光内容的分值)、随机采样-0 。
在经过这一步优化后 , DSSM模型的召回结果会有一个更好的提升 。
DSSM召回的线上部署(DSSM on Word2Vec)
根据了解 , 业界在模型召回的问题上几乎都采用了Facebook提出的向量索引框架——Faiss , 但这对于业务的召回部署带来一定的挑战 , 需要增加一些服务计算成本 。 在小米收音机业务中 , 我们采用了另外一种更为容易轻量的部署方式 。
DSSM召回中 , 我们是根据用户转换后的embedding向量去匹配计算最相近的内容的距离 , 这与word2vec模型计算最相似word的初衷是一致的 。 因此我们借助了word2vec模型的哈夫曼搜索树的方式计算用户的召回内容 , 我们使用word2vec on spark的API做了上述处理:
以下是具体的DSSM on word2vec召回流程图:
文章图片
总结
召回模型在模型复杂度部分是比较简单的 , 但是想要做好却是比较困难的 , 很容易陷入致命问题 。 本文简单介绍了DSSM模型在小米收音机业务的召回使用经验 , 期待我们的经验能抛砖引入 , 为你的业务带来提升 。 如果你有更好的想法 , 可以在留言区交流~
参考文献:
[2]“负样本为王:评Facebook的向量化召回算法,” pp. 1–9, 2020.
【文档|小米收音机如何提高内容分发效率?DSSM召回模型做到了!】-The End-
推荐阅读
- 功能|小米 Watch S1图赏:商务气质新系列,稳步入场不急切
- 截图|靠抄袭对标苹果?心动黄一孟指责小米新版游戏中心抄袭TapTap
- 实力比|小米12对标苹果遭嘲讽?雷军:国产手机的实力比想象中强,有和苹果比较的勇气
- 真皮|小米 Watch S1 商务智能手表今日开售
- 尺寸|3199元起,小米12/12 Pro/12X手机今天晚上20点正式开售
- 大容量|首发价 2999 元,小米平板 5 Pro 8GB+256GB 大容量版今日开售
- HiFi|首销价 449 元,小米真无线降噪耳机 3 今日开售
- 雷军|和雷军一起开箱,领取小米12「专属指南」
- Pro|价格相差1000块钱 买小米12还是小米12 Pro?很多人选错了
- 设备|雷军亲自演示 MIUI 13“小米妙享中心”:一拖流转媒体内容