只要对机器学习稍有涉猎,就会发现如今机器学习,无论是推荐、图像、语言等领域,随处可见embedding,可以说,在深度学习主宰机器学习领域的今天,万物皆可embedding。那么,什么是embedding,怎么对实体进行embedding,推荐领域里,embedding会怎么应用呢?且待本文一一道来。

embedding简介

embedding是什么

在本文之前的几篇文章里,曾经提及对用户或物品的embedding,实际上,embedding就是将实体的自然表达变化成向量化表达的方法。

将实体(用户、物品、图像等)表示为向量有什么用处呢?因为基于文字或者图片表达的实体,并不能够被计算机理解,因此它们彼此之间无法进行相互比较,而一旦转换成计算机可理解的向量,则能够计算它们彼此的距离,从而可以对他们进行相似度的计算了。

其实,在embedding之前,也有各种讲实体进行数值化的方法,比如LDA,plsa,tfidf等, embedding可以看作是将实体在高维数值空间进行映射,只要向量维度足够高,且映射方式合理,就能够很好地表达复杂的实体,因此embedding甫一出世,便获得了热烈的追捧。

embedding的起源及发展

说起embedding,就不得不提word2vec。word2vec是embedding的开天辟地之作,奠定了embedding的根基。对word2vec的学术理解可以参考Mikolov等人的文献[1]和[2]和[3](文献[3]是doc2vec,使用向量来表达整个文档)。

这里用白话简单介绍下word2vec:
word2vec构建了一个通过上下文来预测单词概率的任务。它的思路是:设置一个滑动窗口(比如5),当滑动窗口滑过文章时,出现在滑动窗口中的几个单词,掩盖住其中一个,通过其他单词来预测被掩盖的那个单词。

上图展示了经典的word2vec模型,对于V个单词,通过滑动窗口选中若干连续单词,这几个单词经过Hidden layer(隐藏层)后,再次映射到V个单词上,预测每个单词的概率,如果目标单词的概率最高,则说明这个网络可以很好地对单词进行预测,也就是隐藏层很好地表达了目标单词。
上面这个模型是word2vec中的CBOW方法,Mikolov还提出了另一个对word做embedding的方法,即Skip-gram。与Skip-gram的结构与CBOW完全一致,仅仅是任务不同,它会在滑动窗口中掩盖大多数单词,仅保留一个单词,用这个单词去预测其他被掩盖的单词。下图展示了这两种方法的区别。

因为在全量单词空间预测概率是个非常耗时的事情,因此word2vec分别使用了Hierarchical Softmax(层次化Softmax)和Negative Sampling(负采样)对目标进行近似处理,减少目标预测的任务量。其中Hierarchical Softmax使用哈夫曼树对单词进行编码,使得高频词更容易被采样到,从而从整体上减少对目标单词的预测任务。而Negative Sampling则是通过采样一定的负例(非目标单词),减少对全量负例的训练。

由于Hierarchical Softmax方法并不能很好地进行并行化,因此,当今的embedding模型中,大部分优化方式都是Negative Sampling,Hierarchical Softmax在深度学习中并不常见。以上两种优化方法包含在常用的机器学习训练包里,直接使用即可。

from gensim.test.utils import common_texts
from gensim.models import Word2Vecmodel = Word2Vec(sentences=common_texts, vector_size=100, window=5, min_count=1, workers=4)
model.save("word2vec.model")

需要注意的是,虽然大量的深度学习会用到embedding的概念,但是作为embedding始祖的word2vec,本身却并不是深度学习模型,因为它的模型里仅包含一层隐层。

embedding的思路非常好地在物体的现实表达和数值化表达构建出一个桥梁。它的精髓在于构建一个合理的任务,在训练任务的过程中,得到向量化的副产品。作为范本,word2vec很好地展现了这一思路,那之后,embedding的应用便在机器学习领域如火如荼地兴起了。

推荐系统中的经典embedding模型

embedding的思路在推荐系统里非常有意义:若用户和物品能够在同一向量空间被训练出来,那么就可以计算用户和物品的相似性,从而为用户推荐了。

DSSM

DSSM全称为Deep Structured Semantic Model(深度结构化语义模型),是由微软研究院在2013年开发的,其出处见论文[3]。该模型原用于搜索引擎,用于对query(查询词)和文章的匹配。我们来回顾下整个DSSM算法:

DSSM网络如上图所示。它的原理比较简单,通过搜索引擎中的Query(Q)和Document(D)之间的曝光点击日志做样本,使用深度网络来训练模型,最终将Query和Embedding表达成128维的向量,并使用余弦距离来计算两者相似度,判断点击概率。该模型最终训练点击概率,同时也得到了副产物–128维向量,用于表达query和文档。

上图中,网络中几层向量含义如下:

  1. Term Vector:表示原始词向量,即500K的单词表。
  2. Word Hashing:该层是很独特的一层,论文中对原始词表进行了特殊处理,在英文语境下,采用letter-ngams来对单词进行切分,采用tri-gram(即三个字母一切分)的方式。比如#good#可以切分为(#go, goo, ood, od#)四个,由于英文只有26个字母,加上首尾标识#,其排列组合数目有限,可以对原始词表进行有效降维,因此本层维度被降至30k。需要注意的是,如果是中文语境,则使用单字即可(因为单字组成的词组数量反倒不可控)。
  3. 接下来的三层是特征提取层,是普通的DNN网络,每层公式如下:
    li=f(Wili−1+bi)y=f(WNlN−1+bN)l_i = f(W_il_{i-1}+b_i) \\ y = f(W_Nl_{N-1}+b_N) li=f(Wili1+bi)y=f(WNlN1+bN)
    每层使用tahn作为激活函数:
    f(x)=1−e−2x1+e−2xf(x) = \dfrac{1 - e^{-2x}}{1 + e^{-2x}} f(x)=1+e2x1e2x
    最终将原始的向量层转化为128维向量。注意此处WiW_iWi在Query和Doc处是完全共享的,这样保证了Query和Doc最后被映射到同一个空间中,相互计算相似度才有意义。
  4. 匹配层:现在query和doc都转化成128维向量,接下来通过用户点击行为做正负样本,来计算两者相似度:
    R(Q,D)=cosine(yQ,yD)=yQTyD∥yQ∥∥yD∥R(Q, D) = cosine(y_Q, y_D) = \frac{y_Q^Ty_D}{\Vert y_Q \Vert \Vert y_D \Vert} R(Q,D)=cosine(yQ,yD)=yQyDyQTyD
    再对负样本(浏览未点击样本)按照正负1:4比例进行采样,再对正样本的相似度结果进行softmax。
    P(D+∣Q)=exp(γR(Q,D+))∑D′∈Dexp(γR(Q,D))P(D^+|Q) = \frac{exp(\gamma R(Q, D^+))}{\sum_{D' \in D}{exp(\gamma R(Q, D))}} \\ P(D+Q)=DDexp(γR(Q,D))exp(γR(Q,D+))
    其中,γ\gammaγ为平滑因子,D为文档样本。
  5. 训练:训练过程中,通过极大似然估计对网络权重进行迭代调整,最小化损失函数为L(λ\lambdaλ) = -log∏Q,D+P(D+∣Q)\prod_{Q,D^+}{P(D^+|Q)}Q,D+P(D+Q)

DSSM已经属于深度学习的范畴,相对于word2vec,它是有监督的学习方式,更为准确;n-gram方式可以较好地处理新词问题;且由于计算出的query的embedding与Doc的embedding在同一个向量空间,因此能计算它们的相似度。这个特性在功能上有很多想象空间,在文档召回和粗排阶段都可以使用。但是DSSM也有它的缺点,首先,它采用词袋模型,没有考虑词的位置关系,这对语义理解是一个大的损失(所以后续又有了CNN-DSSM[5]^{[5]}[5]、LSTM-DSSM[6]^{[6]}[6],等变种模型,用于对原始词进行语义和语序映射);此外,采用端到端的模型,预测结果不可控。

由于DSSM本身涉及到文档相关性排序,与推荐场景不谋而合,因此在DSSM诞生之后不久就被引入到推荐领域中。推荐领域的DSSM是使用两个独立的复杂网络来分别构建用户和物品的特征,最后用用户embbedding和物品embedding进行相似性计算来构建目标。由于用户和物品分别使用一个网络,因此DSSM也称为双塔模型。

推荐系统的DSSM模型大致如下:

与最早的DSSM不同,推荐系统的DSSM对用户和物品分别构建深度网络,是两个独立的塔,两者在最后一层进行余弦距离计算,通过引入大量的用户和物品特征,完成复杂网络的训练。

在线上召回阶段,当线上来了用户请求之后,按理应该对当前用户和物品分别走一遍双塔模型,进行目标预估,再根据预估结果进行排序,并截取概率最高的几百物品。但线上物品的动辄千万,使得该方案在性能上无法得到保障,这也是许多深度学习模型线下表现很好,但无法在线上大规模应用的原因。
在实际应用中,DSSM的产出实际是用户embedding和物品embedding,它们被保存在内存数据库中,线上按照向量相似度进行检索(线上召回方案一般使用ANN做近似检索,详见下文),这一方法是对效果和性能进行了折中,考虑到用户和物品经过历史数据充分训练后,其在短时间内的变化不大,牺牲一些效果,却能换取性能上的巨大提升,这也是DSSM能够在工业界风靡一时的原因。

双塔模型的另一个好处在于用户和物品完全分离建塔,不涉及到交叉特征,从模型角度看,这种方式牺牲了组合特征带来的效果提升,但由于在线上服务时,每个塔可以单独服务,用户和物品都有各自的表达。以协同过滤的思想来看,它能提供的召回方式及其丰富,既可以做u2i(直接查找用户相似物品)的召回,也可以i2i的召回(查找用户感兴趣物品的相似物品),甚至可以做u2u2i的召回。工业界较为有名的是百度[7]^{[7]}[7]和谷歌[8]^{[8]}[8]的双塔模型,感兴趣的朋友可以进行扩展阅读。

YouTube的深度学习网络

YouTube的《Deep Neural Networks for YouTube Recommendations》[9]^{[9]}[9](2016)是使用Embedding进行推荐的开山之作,在当年还没有大量深度学习应用到推荐系统的背景下,YouTube的作品可谓十分惊艳。论文中对深度学习在召回和排序中的应用都进行了详尽阐述。本文简单介绍下召回中的使用方式。

下图是YouTube的DNN召回模型架构,它以对用户观看的下一个视频时长为目标进行训练。这是一个经典的多层DNN网络图。输入层对用户历史看过的视频和搜索过的词进行embedding,同时结合用户的人口统计学特征以及其他相关特征,如性别、年龄、地域、设备等信息,将这些统一组合成一条长龙向量。

该向量经过几层Relu之后,与全站视频相连接,预测用户会看哪一个,相当于一个多分类器。出于性能考虑,对负样本进行了采样处理。在模型最后得到user embedding和item embedding,用于线上预估。

Youtube的模型看起来并不复杂,其经典之处,在于它本身进行了大量细致化的处理,给后人很多启发,我们详细展开看看:

  1. user embedding和item embedding究竟是如何生成的?与DSSM不同,YouTube模型中user embedding和video embedding并非是同样维度的向量,其中user embedding是三层ReLU之后最后一层的结果,假设是长度为d的向量;而video embedding则是ReLU结果与全量video(假设有N个)连接的权重系数,可以看作是d * N维矩阵,user embedding与video embedding相乘后softmax的结果,就是N维向量,表达的是观看每个视频的概率,按照该概率排序即可。实际应用时,video embedding在离线训练后存入内存数据库,而user embedding则在线上请求时,走一遍模型,实时得到,线上依然使用ANN的方式快速召回。
  2. 特征的处理:模型输入都是用户特征,对用户历史观看视频和搜索词进行embedding,地域和设备类信息同样被embedding,而其他类特征如年龄、性别、登录状态等则归一化到[0,1],除了归一化值,还对值取平方或开根号,目地是想捕获特征的非线性,以取得更好的效果。此处需要注意人口统计学特征的重要性,对于新用户来说,可能仅仅具备该类特征,有了这类特征,才能够为新用户生成embedding。
  3. 在样本处理上,对每个用户提取了等量训练样本,这是为了防止极度活跃用户对模型loss产生过多影响。
  4. 特殊的特征:example age。表示视频从发布距用户观看的时间,这个特征的引入是考虑到:从业务角度看,用户更倾向于看新视频,但实际上老视频由于曝光时间充分,能够得到更多表现,因此更容易被推荐,为了消除业务和模型上的偏差,在模型中引入视频发布的时长,即example age。在线上模型预估时,则将example age置为0,对所有视频同等对待。对广告熟悉的朋友知道,在广告模型训练时,会引入广告曝光的位置,以消除越靠前广告点击率越高的偏差。这个思路与example age是殊途同归的。这个思路非常有价值,值得被其他推荐系统借鉴采用。

YouTube的召回模型尽管不如DSSM在当下那么盛行,但它在工程上做的许多细致处理在如今仍然值得吸收和借鉴。

Item Embedding

Item Embedding是将物品进行向量化,继而将物品向量用于推荐领域的方法。Item Embedding最早起源于微软2016年的作品[11]^{[11]}[11],它扩展了word2vec的应用范围,使得其从NLP领域拓展到推荐领域。

Item Embedding的思路很新奇,它的关键之处在于对问题的建模,认为:每个用户session内按时间顺序点击/下单的商品,具有一定关联,就像同一篇文章中的word一样。这样每个用户操作的物品集(Item Set)通过时间先后排序,就产生了句子,使用滑动窗口遍历句子,即可以使用word2vec一样的方法,对item进行向量化了。Item向量化之后,就可以用于基于Item的协同过滤中,进而进行推荐了。

微软的工作非常有工程借鉴意义,在我们日常推荐系统中,可以采用类似的将会话域中的若干实体(物品,发布者,搜索词,类目等)进行组合,再施以word2vec的方法,就可以对实体进行embedding了。

微软之后,房源租赁平台Airbnb在2018年也发表了对listing(Airbnb的物品是它们的在线房源)进行Embedding的方法[12]^{[12]}[12]。其思路仍然是对用户session内的房源listing进行滑动窗口遍历,再构建word2vec模型,但Airbnb结合其自身的业务场景,增加了许多策略处理,如对下单的房源进行额外的预测,负采样时按地理位置进行局部负采样,等。这篇论文在工程和业务上有许多有趣的思考,感兴趣的朋友可以仔细读读。

图Embedding

图Embedding是embedding近年来较为流行的研究领域,通过对大规模图的节点或子图进行embedding,从而能够使用向量对图进行表达和关系计算,在推荐和风控领域都有实用价值。

图embedding的思路基本来自word2vec或doc2vec[10]^{[10]}[10](doc2vec是在word2vec基础上加入文档id,从而在训练过程中对文档整体进行了embedding化,详见本系列前文介绍过的doc2vec,关键在于如何能将图结构变化成文档中word词的形式。

DeepWalk

DeepWalk[12]^{[12]}[12]是2014年被提出的模型,是Graph Embedding中的经典模型。它为图结构转化成word2vec输入结构打开了思路。DeepWalk的建模思路如下:同一个图中,相近的节点可以认为是相似的。对每个节点,采取截断式随机游走的方式,把节点的局部拓扑信息转换为序列信息,如下图所示:

假设原始图中有A到H共8个节点,结构如上面左图所示,设置截断距离,从某节点出发,随机游走,就可以得到节点序列。注意:图为无向图,每个节点到其他节点的概率与该节点的连通节点个数相关。假设从A点出发,以1/2概率游走到C点,C以1/3概率游走到E点…,这样就构建出一个长度为5的序列,通过大量的随机游走,就得到了足够的输入样本序列,接着把word2vec模型应用到样本序列上,就可以学习的到每个节点的embedding表示。

从推荐系统应用角度看,DeepWalk算法和微软的Item Embedding大同小异。不同之处在于微软的Item Embedding将每一条序列限定在同一个用户的物品操作集合里。而图的构建则可以跨越这个限制,通过对不同用户访问物品间构建关联,则可以构建出一个足够大的图,继而使用DeepWalk算法来对物品进行embedding了。

EGES

EGES(Enhanced Graph Embedding with Side information)是淘宝提出的一套游走算法,它在DeepWalk基础上引入Side Information,如品牌、类目、价格等信息,其目标在于能够对冷启动的物品进行更好的embedding表示。EGES的图构建部分与DeepWalk相似,其新增的关键部分如下图:

其中SI 0表示item自身,SI 1到SI n表示item不同的描述性信息,如品牌、类目、价格等,即所谓的Side Information。因为每类物品附加信息重要度不同(如苹果手机用户更看重品牌,而衣物类商品用户可能更看重价格),因此对每个SI都进行加权平均,再聚合在一起,形成初始化的embedding H。输出层则直接对所有item进行softmax概率预测,对负样本进行降采样即可。

除了上述算法,图Embedding还有Node2Vec算法,根据参数调节,来捕获同质子网络或是结构相似子网络,但一般应用于风控场景;还有LINE算法,它对节点的一阶亲密度和二阶亲密度进行建模,再进行拼接而构成最终embedding,同样用于风控场景。

线上召回机制

当实体embedding之后,如何在海量向量中高效查找近邻实体,是非常关键的问题,可以说,正是由于该问题得到妥善解决,才使得embedding技术能在推荐系统中得到迅猛发展。向量召回从实践上来说属于工程范畴,但由于其中涉及到巧妙的算法设计,这里做一个简要介绍。

高维向量检索技术使用的是ANN,即Approximate Nearest Neighbor搜索,它并不是某个算法,而是指一系列用于解决近邻查找问题的算法。ANN包括基于暴力的方法,基于树的方法,哈希方法和基于图的方法,以及向量量化的方法[14]^{[14]}[14]。工程实践中常用的成熟第三方库包括Facebook开源的Faiss和Zilliz开源的Milvus。其中Milvus提供了各类向量检索方案,且能满足高性能,强实时性要求。Faiss作为开源多年的常用库,能满足大部分的研究和实时性要求不是特别高的场景。Faiss使用的是向量量化方法中的PQ(Product Quantization,乘积量化)来对存储进行压缩,并使用IVFPQ来实现高效检索。

PQ是将对高维向量进行压缩的一种算法。如下图所示,N个D维向量,每个向量都划分为M(通常取8)段,每一段使用K-means算法进行聚类,聚成K个中心点,每一段的向量都使用其聚类中心表示,这样就压缩了向量的表达空间。K通常取256,使用8bits可以表达,这样每一段就变为8位向量空间,最终向量从N * D * 32bit的空间,压缩成了N * M * 8bit的空间。

当计算query与空间中某个向量x的距离时,可以计算该query所在聚类中心与x所在聚类中心的距离,该距离可线下计算好,因此在线查询的效率很高;另外,也可以计算query本身与x所在聚类中心的距离,需要线上计算,查询效率相对低,但更准确。
从性能啥上看,若要查找最相近的k个邻居,PQ仍然是不够的,因为仍需要遍历M*K次。IVFPQ在PQ基础上对这个问题进行了很好的解决。它的思路是,先对N个向量进行K个聚类,每个聚类中心索引其类内向量。查找时,先对聚类中心进行遍历,找到最近的聚类中心,再进行类内PQ查询。IVFPQ在每个聚类内部进行向量压缩构建时,做了一些细致化处理,如下图所示:聚类之后,在每个类内,先将向量进行处理,不保存原始向量,而保存原始向量与所在聚类中心的差值,PQ则针对差值向量进行。这一做法的背后思想是:差值之间的方差相较原始向量之间的方差更小,因此在差值向量上进行聚类和近似表达,所带来的误差会更小。

使用faiss进行向量构建和查找的代码如下:

import faiss
index = faiss.IndexIVFPQ(quantizer, d, nlist=100, m=4, 8) #构建索引,每个向量都被编码为8个字节大小
index.train(xb)
index.add(xb) #添加向量
D, I = index.search(xq, k) #搜索top k个向量

faiss作为成熟的工业界开源应用,把PQ推向了前台。但PQ本身存在着较大的精度损失。向量检索目前趋势是向图索引发展,比较有代表性的是hnsw算法,它将基于“邻居的邻居也是邻居”的思想,由疏到密构建了多层图,从而提升查询的效率。Milvus即有基于hnsw的实现。感兴趣的朋友可以进行深入阅读。

总结

embedding由于能够广泛融合各类特征,更好地学习到用户和物品的抽象化表达,同时能够通过深度学习网络抓住用户和物品的交互特征,所以在推荐系统上具有非常好的性能。

作为深度学习在推荐领域落地的一个代表性应用,embedding尽管兴起时间不长,但从工业界视角看,已经成为推荐系统在召回领域的基础构件之一。同时,学术界与工业界对embedding的研究一直如火如荼地进行,使得当今时代的推荐系统,几乎言必称embedding。

今天介绍的DSSM和YouTube,以及微软的item embedding都是embedding的杰出代表,尤其是DSSM,由于其思路简单,效果显著,在很多公司都得到了落地应用。而图计算的发展则将推荐系统的embedding带入了一个新天地。当然,复杂模型所带来的工程挑战同样不可忽略。以Faiss和Milvus为代表的ANN召回算法,为这些模型的线上部署提供了极大的便利。

需要注意的是,推荐系统没有万灵丹,embedding也有其自身的局限性。它存在着新用户和新物品冷启动的问题,以及深度学习一向存在的可解释性问题。同时,由于embedding过分关注用户与物品的交互,则在一定程度上损失了对用户和物品的内容结构上的捕获与表达。
因此,在推荐系统的召回应用时,仍然需要考虑业务场景来选择合适的方法与特征。

参考文献
[1] Efficient Estimation of Word Representations in Vector Space, Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean, https://arxiv.org/abs/1301.3781v3
[2] Distributed Representations of Words and Phrases and their Compositionality. T. Mikolov, I. Sutskever, K. Chen, G. Corrado, and J. Dean. https://dl.acm.org/doi/10.5555/2999792.2999959
[3] Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]// ACM International Conference on Conference on Information & Knowledge Management. ACM, 2013:2333-2338.
[4] 词袋模型-维基百科. https://zh.wikipedia.org/wiki/%E8%AF%8D%E8%A2%8B%E6%A8%A1%E5%9E%8B
[5] Yelong Shen, Xiaodong He, Jianfeng Gao, Li Deng, Grégoire Mesnil. A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval.https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf
[6] H. Palangi, L. Deng, Y. Shen, J. Gao, X. He, J. Chen, X. Song, R. Ward. Semantic Modelling with Long-Short-Term Memory for Information Retrieval. https://arxiv.org/pdf/1412.6629.pdf
[7]《Al筑巢;机器学习在凤巢的深度应用》, 百度 刘斌新, https://www.docin.com/p-2472025656.html.
[8]Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations. Xinyang Yi, Ji Yang, Lichan Hong, Derek Zhiyuan Cheng, Lukasz Heldt, Aditee Kumthekar, Zhe Zhao, Li Wei, Ed Chi. https://dl.acm.org/doi/10.1145/3298689.3346996
[9] Deep Neural Networks for YouTube Recommendations. Paul Covington, Jay Adams, Emre Sargin. https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf
[10] Distributed Representations of Sentences and Documents. Quoc Le, Tomas Mikolov. 2014.
[11] Item2vec: Neural Item Embedding for Collaborative Filtering. Oren Barkan, Noam Koenigstein. http://ceur-ws.org/Vol-1688/paper-13.pdf
[12] DeepWalk: Online Learning of Social Representations. Bryan Perozzi, Rami Al-Rfou, Steven Skiena. https://arxiv.org/abs/1403.6652.
[13] Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba. KDD 2018. https://arxiv.org/abs/1803.02349
[14]一文纵览KNN(ANN)向量检索。https://zhuanlan.zhihu.com/p/264367144

深入浅出推荐系统(四):召回:向量化的潮流相关推荐

  1. 推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!

    推荐系统中的核心是从海量的商品库挑选合适商品最终展示给用户.由于商品库数量巨大,因此常见的推荐系统一般分为两个阶段,即召回阶段和排序阶段.召回阶段主要是从全量的商品库中得到用户可能感兴趣的一小部分候选 ...

  2. 【推荐系统】召回模型线下评价指标

    目录 Hit Rate(HR) Precision Recall NDCG 常用的评价标准: 第一类是线上评测,比如通过点击率.网站流量.A/B test等判断.这类评价标准在这里就不细说了,因为它们 ...

  3. 一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度

    一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际有用的技术. ...

  4. 最全推荐系统Embedding召回算法总结

    最近特别忙,工作日几乎没什么时间学习.平时攒了一堆推荐相关的文章,趁周末整体学习了一下.主要是参考了网上的一篇技术文章(迄今为止我看到的比较好的推荐Embedding总结)以及我自己的一些理解. ​E ...

  5. 一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样

    一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际 ...

  6. 对比学习视角:重新审视推荐系统的召回粗排模型

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 对比学习在快手推荐系统中的应用实践 机器学习在B站推荐系统中的应用实践 小红书推荐系统中台应用实践 微信视频号实 ...

  7. 一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的

    一文看懂推荐系统:召回07:双塔模型--正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐 ...

  8. 电商推荐系统四: 基于隐语义模型的协同过滤推荐

    四.离线推荐服务建设(基于隐语义模型的协同过滤推荐) 目录 四.离线推荐服务建设(基于隐语义模型的协同过滤推荐) 4.1 离线推荐服务 4.2 离线统计服务 4.3 基于隐语义模型的协同过滤推荐 4. ...

  9. 深入浅出推荐系统(二):召回:内容为王

    大家在访问京东或者淘宝等电商系统时,会发现当看了某件商品或者买了某件商品时,电商系统会马上推荐很多相似的商品:当在百度上搜索某个新闻时,信息流马上推荐类似的新闻,这些是怎么做到的呢?这就涉及到我们今天 ...

  10. 深入浅出推荐系统(六):召回:一切为了业务

    在前面几篇文章里,我们介绍了主流的召回模型和算法.但算法更多地是从个性化推荐的角度来解决问题.许多业务上的问题,如安全问题.商业价值.用户体验.流量扶持等种种业务需求,仅仅基于模型,是无法得到完美解决 ...

最新文章

  1. 使用Azure应用服务本地验证安卓脸书
  2. ionic4 手机启动页进入首页慢问题修改
  3. Deep Learning---caffe模型参数量(weights)计算
  4. gpu编程如何一步步学习_如何学习贴片机编程
  5. 大学计算机——所有大学生都应学习的一门计算思维基础教育课程,_大学计算机_所有大学生都应学习的一门计算思维基础教育课程...
  6. 关于数据库名、实例名
  7. 计算机用户名登陆管理员权限,关于win10勿删用户账号下管理员身份导致无法登录系统的问题...
  8. devexpress gridcontrol 内置导航栏,双击后才修改数据
  9. 锐龙r54600虚拟linux,锐龙r5 4600u相当于i几 游戏设备问题解决分享!
  10. Centos 6.5下NIS服务安装配置
  11. C#中lock关键字的用法
  12. 2008流媒体服务器点播搭建详解
  13. windows本地script脚本恶意代码分析(带注释)
  14. Pro InfoPath 2007
  15. java题库难_为什么平常写项目感觉java也不是那么难,一到面试刷题得时候感觉那么吃力呢。你们呢?...
  16. 疫情数据分析平台工作报告【2】接口API
  17. 实时爬取斗鱼直播时的弹幕消息
  18. python3的所有标准库
  19. [Unity基础]Shuriken粒子系统的碰撞
  20. 记一次处理短信盗刷问题的解决方案

热门文章

  1. goahead(嵌入式Web服务器)之cgi篇
  2. 共享服务器切换账号,win7切换用户访问共享、共享文件夹切换方法
  3. 驱动精灵修复服务器,驱动精灵系统漏洞需要修复吗
  4. word:清除格式(设置快捷键)
  5. JAVA - Quartz 定时任务_启动原理
  6. 人脸检测实战终极:使用 OpenCV 和 Python 进行人脸对齐
  7. matplotlib-19 堆积图
  8. markdown 数学公式符号大全
  9. php字符串函数(2)替换、分割、填充、去除
  10. python用openpyxl模块操作Excel学习笔记