推荐系统中的隐式召回和机器学习(一)

2,858 阅读6分钟

首先我们谈这个话题的时候在谈什么?

关我啥事?

咳咳,兄弟既然你已经点进来了,说明你是一个骨骼惊奇,积极上进,年轻并且 naive ...啊不是,是关键词抓进来想学点东西的好少年or好少女呗,开聊~

随着网络、自动化的快速发展,这个时代充满了各种前所未有的大量数据集,如何从中提取有价值的信息,使用明确的指令很明显已经不再是一个最优的方法了。比如 google / bing / baidu 搜索信息排序、今日头条/抖音等推荐为核心的APP,垃圾邮件、恶意电话号码标记等等,假设以上所有针对个体用户“量身定做”的行为都需要依赖明确的程序,那背后代码量已经大到不可估算,那背后发生了啥,你就不好奇吗~~~来听我瞎掰扯掰扯。

啥是机器学习?

明人不说暗话,机器学习的定义:“一种不借助于明确的程序并使用电脑学习的科学”。不要被啥AI热吓退,那都是资本主义的噱头,浪潮来去,有没有高大上,有没有逼格那都不重要!解决问题才是王道!

简单分类:俩!监督学习 & 无监督学习

1、监督学习算法 Supervised learning 监督学习就是提供给算的训练数据集是m组“标准输入”和对应的“标准答案”,希望算法学习标准输入和标准答案直接的联系,这个训练结果可以用来对新的输入,给出预测的对应结果。

举个🌰,咱们的应试教育,这篇文章作者这句话想表达什么样的情感?嘿嘿这题你一定答过,你为啥那么答,是因为你知道这样答包括了几个得分点。你为啥知道,因为你已经找到问题和答案之间的套路,这个套路就是你的学习结果。咳咳,正经说,监督算法的目标是寻找规律,用于给新输入以正确结果

再细分一点,监督学习包括了回归问题or分类问题。 回归问题的“套路“是用来得出连续型结果的,比如训练结果可能是一个连续函数可以根据房子的面积估算价值。 分类问题的”套路“是用来得要一个离散型结果的,比如一个离散函数只有0或者1两种值,你将来的第一个孩子是男孩还是女孩。

2、无监督学习算法 Unsupervised learning 无监督学习对比上文,显著的区别就是不给算法标准答案。 让算法自己在数据集里找到某种数据结构,分成不同的聚类。聚类算法就是一种典型的无监督学习算法,用来寻找紧密相关的信息,常用在数据量非常大的场景中。例如:

  1. 大型数据中心,大型计算集群中趋向于协调工作的机器放在一起,以提高运行速度。
  2. 社交网络分析,识别好友分级的亲密度圈子。
  3. 市场用户数据,自动市场分割,将客户分割到不同的细分市场。
  4. 天文数据分析。
  5. 推荐系统中常用的最近邻搜索(NN, NearestNeighborSearch),无监督最近邻的任务就是从训练样本中找到与查询点在距离上最近的预定数量或范围的多个点。

啥是隐式召回?

推荐系统

首先简单介绍一下推荐系统推荐系统是一种信息过滤系统,用于预测用户对物品的评分或偏好,进而实现个性化推荐。今日头条、抖音、百度信息流、谷歌信息流等等,其核心都是背后这套推荐系统。

召回是指什么?

推荐系统本身也是一个非常大的话题体系,其中包括底层的召回、召回之上的粗排、和返回之前的精排,最终亿万信息中选十几条最终反馈给用户。所谓召回,在刚接触推荐系统的时候可能只看字面意思无法理解召回的意思,召回可以理解为向用户粗选一批待推荐的商品,相当于提供一批粗排候选集。

咱们说的隐式推荐就是属于推荐系统中召回模块的一部分

隐式召回的核心算法:隐式召回的核心就是前文说的无监督学习中的聚类算法。

隐式是指什么?

隐式是相对于显示来说的。

显示召回比较容易理解,可以理解为关键字召回,比如搜索"ANN"这个关键字,可能返回一些相关的相似最近邻算法论文(Approximate Nearest Neighbor,ANN),或者最新的神经网络相关的报道(Artificial Neural Network,简称ANN)。

那么隐式召回是什么呢?

提到隐式,首先要讲解一下向量支持机,学习算法要使用很多的属性/特征/线索来进行预测,这些巨大的信息可能会使内存溢出或者根本无法计算。我们希望通过将这些信息映射成一个多维的向量,这样单个信息就能被压缩表达。由于这种向量信息单个看起来是没有明确意义的,所以也被称为"隐式"召回。

单词向量:为聚类算法准备数据的常见做法是定义一组公共的数值型数据,可以利用这些属性对数据项进行比较。

One-hot Vector 独热编码 对应的词所在的位置置1,其他置0 例如: King, Queen, Man, Woman 中, Queen 对应的向量可以表示为 [0,1,0,0] 独热编码的缺点非常明显,由于它过于稀疏,单个向量维数非常高并且信息含量过低。

为了解决独热编码的问题,引入了词向量概念。

词向量:词向量可以解决前文提到的独热编码的问题,方法是通过训练将每个词都映射到一个较短的向量上

  1. 所有的词向量构成词汇表的每个词。
  2. 词向量可衡量相似性。(训练过程中引入了上下文) 以上这个过程被称为词嵌入(word embedding),即将高维词向量嵌入一个低维词向量

Word2Vec是一个工业界常用的用于产生词向量的模型(语义向量化),它是一个简单化的神经网络,将每个词表征为K维的实数向量,(每个实数都对应一个特征),将相似的单词分组映射到K维向量空间距离较近的地方。Word2Vec 有两个重要模型 CBOW 和 Skip-gram。其中 CBOW 的输入是某特征词的上下文相关词的词向量,适用于小型库;Skip-Gram 的输入是特定词的词向量,更适合大型库。


嘿嘿,总结一下~

隐式召回是推荐召回系统中的一部分,通过语义向量化来检索最相似的topk对象作为推荐的候选集

隐式召回的核心用到了聚类等机器学习相关的算法,实现了无监督学习的过程

今天就到这里啦,后续继续更新学习笔记~