spark推荐系列之word2vec算法介绍实现和应用说明

搜索与推荐Wiki 搜索与推荐Wiki     2023-04-03     525

关键词:

Spark推荐实战系列目前已经更新:

更多精彩内容,请持续关注「搜索与推荐Wiki」!

1. 背景

word2vec 是Google 2013年提出的用于计算词向量的工具,在论文Efficient Estimation of Word Representations in Vector Space中,作者提出了Word2vec计算工具,并通过对比NNLM、RNNLM语言模型验证了word2vec的有效性。

word2vec工具中包含两种模型:CBOW和skip-gram。论文中介绍的比较简单,如下图所示,CBOW是通过上下文的词预测中心词,Skip-gram则是通过输入词预测上下文的词。

Word2vec 开启了Embedding的相关工作,自从embedding开始大规模走进推荐系统中,下面我们就来看一下Word2vec算法的原理、Spark实现和应用说明。

2. 算法原理

Word2vec包含了两种模型,分别是CBOW和Skip-gram,CBOW又分为:

  • One-word context
  • multi-word context

其中单词的总个数为 V V V,隐藏层的神经元个数为 N N N,输入层到隐藏层的权重矩阵为 W V ∗ N W_V*N WVN,隐藏层到输出层的权重矩阵为 W N ∗ V ′ W'_N*V WNV

此时的 h h h 表达式为:
h = 1 C W T ( x 1 + x 2 + . . . . + x C ) = 1 C ( v w 1 + v w 2 + . . . + v w C ) T h = \\frac1C W^T (x_1 + x_2 + .... + x_C) \\\\ = \\frac1C (v_w_1 + v_w_2+ ... + v_w_C)^T h=C1WT(x1+x2+....+xC)=C1(vw1+vw2+...+vwC)T
其中 C C C 表示上下文单词的个数, w 1 , w 2 , . . . , w C w_1, w_2, ..., w_C w1,w2,...,wC 表示上下文单词, v w v_w vw 表示单词的输入向量(注意和输入层 x x x区别)。

目标函数为:
E = − l o g   p ( w O ∣ w I 1 , w I 2 , . . . , w I C ) = − u j ∗ l o g ∑ j ′ = 1 V e x p ( u j ′ ) = − ( v w O ′ ) T ∗ h + l o g ∑ j ′ = 1 V e x p ( ( v w j ′ ) T ∗ h ) E = -log \\, p(w_O | w_I_1, w_I_2, ..., w_I_C) \\\\ = - u_j * log \\sum_j'=1^V exp(u_j') \\\\ = -(v'_w_O)^T * h + log \\sum_j'=1^V exp((v'_w_j)^T * h) E=logp(wOwI1,wI2,...,wIC)=ujlogj=1Vexp(uj)=(vwO)Th+logj=1Vexp((vwj)Th)

Skip-gram 对应的图如下:

从输入层到隐藏层:
h = W k , . T : = v w I T h =W^T_k,. := v^T_w_I h=Wk,.T:=vwIT
从隐藏层到输出层:
p ( w c , j = w O , c ∣ w I ) = y c , j = e x p ( u c , j ) ∑ j ′ = 1 V e x p ( u j ′ ) p(w_c,j= w_O,c | w_I) = y_c, j = \\fracexp(u_c,j) \\sum_j'=1^Vexp(u_j') p(wc,j=wO,cwI)=yc,j=j=1Vexp(uj)exp(uc,j)
其中:

  • w I w_I wI 表示的是输入词
  • w c , j w_c,j wc,j 表示输出层第 c c c个词实际落在了第 j j j个神经元
  • w O , c w_O,c wO,c 表示输出层第 c c c个词应该落在第 O O O<

    spark推荐系列之word2vec算法介绍实现和应用说明

    ...i2iFP-Growth算法原理、Spark实现和应用介绍Spark推荐系列之Word2vec算法介绍、实验和应用说明更多精彩内容,请持续关注「搜索与推荐Wiki」!1.背景word2vec是Google2013年提出的用于计算词向量的工具,在论文EfficientEstimationof... 查看详情

    利用tensorflow进行自然语言处理(nlp)系列之二高级word2vec(代码片段)

    一、概述在上一篇中,我们介绍了Word2Vec即词向量,对于WordEmbeddings即词嵌入有了些基础,同时也阐述了Word2Vec算法的两个常见模型:Skip-Gram模型和CBOW模型,本篇会对两种算法做出比较分析并给出其扩展模型-GloVe模型。 首先... 查看详情

    数平精准推荐|ocr技术之系统篇

    导语:如果说算法和数据是跑车的发动机和汽油,那么系统则是变速箱,稳定而灵活的变速箱,是图像识别服务向前推进的基础。算法、数据、系统三位一体,随着算法的快速发展和数据的日益积累,系统也在高效而稳定地升级... 查看详情

    推荐系统基础之介绍入门篇(代码片段)

    大家好,我是辣条。今天给大家带来推荐系统介绍入门。目录一、推荐系统简介二、推荐系统设计2.1推荐系统要素2.2推荐系统架构三、推荐算法一推荐模型构建流程二最经典的推荐算法:协同过滤推荐算法(Collaborativ... 查看详情

    论文|deepwalk的算法原理代码实现和应用说明(代码片段)

    ...Vector之语言模型:从N-Gram到NNLM、RNNLM万物皆可Vector之Word2vec:2个模型、2个优化及实战使用Item2vec中值得细细品味的8个经典tricks和thi 查看详情

    swing算法介绍实现与在阿里飞猪的实战应用(代码片段)

    本系列主要是基于Spark的推荐算法实战系列,本文为首篇,欢迎关注!1.Swing算法介绍Swing算法原理比较简单,是阿里早期使用到的一种召回算法,在阿里多个业务被验证过非常有效的一种召回方式,它认为u... 查看详情

    推荐系统-协同过滤在spark中的实现

    作者:vivo互联网服务器团队-TangShutao现如今推荐无处不在,例如抖音、淘宝、京东App均能见到推荐系统的身影,其背后涉及许多的技术。本文以经典的协同过滤为切入点,重点介绍了被工业界广泛使用的矩阵分解算法,从理论与... 查看详情

    大数据推荐系统算法代码全接触(企业内训,现场实录,机器学习算法+spark实现)

    【学途无忧网】大数据推荐系统算法代码全接触(企业内训,现场实录,机器学习算法+Spark实现)课程下载:https://pan.baidu.com/s/1piCNIxC2Sv0zMY0yWxY9Ug提取码:b10v一、课程简介:推荐系统是利用电子商务网站向客户提供商品信息和建... 查看详情

    大数据推荐系统算法代码全接触(企业内训,现场实录,机器学习算法+spark实现)

    【学途无忧网】大数据推荐系统算法代码全接触(企业内训,现场实录,机器学习算法+Spark实现)课程下载:https://pan.baidu.com/s/1piCNIxC2Sv0zMY0yWxY9Ug提取码:b10v一、课程简介:推荐系统是利用电子商务网站向客户提供商品信息和建... 查看详情

    有啥关于spark的书推荐?

    《大数据Spark企业级实战》本书共包括14章,每章的主要内容如下。第一章回答了为什么大型数据处理平台都要选择SPARK。为什么spark如此之快?星火的理论基础是什么?spark如何使用专门的技术堆栈来解决大规模数据处理的需要?第... 查看详情

    论文|deepwalk的算法原理代码实现和应用说明(代码片段)

    ...Vector之语言模型:从N-Gram到NNLM、RNNLM万物皆可Vector之Word2vec:2个模型、2个优化及实战使用Item2vec中值得细细品味的8个经典tricks和thinksSentence2Vec&GloVe算法原理、推导与实现Doc2vec的算法原理、代码实现及应用启发DeepWalk的... 查看详情

    基于spark和sparkstreaming的word2vec

    概述Word2vec是一款由谷歌发布开源的自然语言处理算法,其目的是把words转换成vectors,从而可以用数学的方法来分析words之间的关系。Spark其该算法进行了封装,并在mllib中实现。整体流程是spark离线训练模型,可以是1小时1训练也... 查看详情

    spark2.x机器学习视频教程

    ...从各种公开渠道获取用于机器学习系统的数据。内容涵盖推荐系统、回归、聚类、分类等经典机器学习算法及其实际应用,涵盖使用SparkMLPipelineAPI创建和调试机器学习流程,内容更加系统、全面、与时俱进,适合所有欲借助Spark... 查看详情

    用spark学习矩阵分解推荐算法

        在矩阵分解在协同过滤推荐算法中的应用中,我们对矩阵分解在推荐算法中的应用原理做了总结,这里我们就从实践的角度来用Spark学习矩阵分解推荐算法。1.Spark推荐算法概述    在SparkMLlib中,推荐算法这块只实... 查看详情

    红黑树之原理和算法详细介绍

    ...cnblogs.com/skywang12345/p/3245399.html更多内容: 数据结构与算法系列目录 (01) 红黑树(一)之原理和算法详细介绍(02) 红黑树(二)之C语言的实现(03) 红黑树(三)之Linux内核中红黑树的经典实现(04) 红黑树(四)之C++的实现 (05) 红黑树(... 查看详情

    推荐算法协同过滤算法代码(pyspark|als)(代码片段)

    【推荐算法】协同过滤算法介绍_MachineCYL的博客-CSDN博客上文介绍了协同过滤算法的原理,接下来我介绍一下协同过滤算法的代码实现。下面我就开始介绍用pyspark中的ALS(交替最小二乘矩阵分解)来实现协同过滤代码... 查看详情

    深入浅出springcloud原理及实战「netflix系列之hystrix」针对于限流熔断组件hystrix的基本参数和实现原理介绍分析(代码片段)

    ...流熔断组件Hystrix的基本参数和实现原理介绍分析在这里推荐给大家martinfowler的熔断器介绍和权威指南,有兴趣的小伙伴们可以研究一下哈。主要介绍相关:官 查看详情

    word2vec进阶之skim-gram和cbow模型(hierarchicalsoftmaxnegativesampling)

    文章目录系列目录(系列更新中)语言模型word2vec综述HierarchicalSoftmax基于HierarchicalSoftmax的CBOW模型基于HierarchicalSoftmax的skip-gram模型基于HierarchicalSoftmax的CBOW与skip-gram的异同NegativeSampling系列目录(系列更新中ÿ 查看详情