Word2Vec是谷歌团队提出的,让词向量在自然语言处理当中再度流行,并且推广到了广告、搜索、推荐等各个领域当中。Word2Vec顾名思义,就是一个生成对词的向量表达的模型。假设我们使用一组句子组成的语料库作为训练数据,其中一句长度为\(T\)的句子为\(w_1,w_2,...,w_T\),假设每个词都与最相邻的词关系最为密切。那么这种密切的关系可以分为两种:

  1. CBOW。 每个词都是由相邻的词决定的。cbow输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量,即先验概率。
  2. Skip-gram。每个词都都决定了相邻的词。Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量,即后验概率。

这里借用一下参考图示:

不过从经验上来讲,Skip-gram效果要好一些。

训练过程

假如我们选取了\(2c+1\)长度的滑动窗口,从语料库中抽取一个句子然后从左到右不断滑动窗口。每移动一次,窗口中的词就形成了一个训练样本。有了训练样本,我们就可以定义优化目标。以Skip-gram为例,每个词\(w_t\)都决定了相邻词\(w_{t+j}\),基于极大似然估计的方法,我们希望所有样本的条件概率\(p(w_{t+j}|w_t)\)之积最大,我们使用对数概率来表示目标函数为

\[\frac{1}{T}\sum_{t=1}^{T}\sum_{-c\le j \le c,j\ne 0}\log p(w_{t+j}|w_t)
\]

那么我们如何定义条件概率\(p(w_{t+j}|w_t)\)呢?在多分类问题当中,通常使用softmax函数。我们希望,通过词向量的向量表示,可以用内积直观的表示出语义的接近程度。那么我们可以用\(w_o\)代表\(w_{t+j}\),也就是输出词;用\(w_i\)表示\(w_t\),也就是输入词。

\[p(w_o|w_i)=\frac{exp(V_{w_o}'^T V_{w_1})}{\sum_{w_1}^{W}exp(V_{w_o}'^T V_{w_1})}
\]

我们容易忽略一个事实,那就是输入词和输出词的向量表达并不在一个向量空间当中,输入向量表达和输出向量表达可以用如下图来表示:

在这里,输入向量表达就是输入层到隐层的权重矩阵\(W_{v\times N}\),而输出向量表达就是隐层到输出层的权重矩阵\(W'_{Nt\times V}\)。由于输入向量一般是one-hot形式的向量,那么输入向量矩阵\(W_{v\times N}\)的每一行对应的权重向量就是同样意义上的“词向量”,它也可以被看做是一个查找表,如如数向量是10000词的one-hot向量,隐层维度为300,那么输入层到隐层的权重向量为\(10000\times 300\)。在转化为词向量的查找表之后,每行的权重变成了对应词的Embedding向量。

负采样

由于语料库中的词数量巨大,对每个词都要预测误差是巨大的计算量,因此,为了减轻训练复旦,往往采用负样本的方法进行训练,也就是需要对采样出的几个负样本进行计算预测误差。从多分类问题退化成了一个近似二分类问题。如下所示:

\[E=-\log\sigma({v'_{w_o}}^T h)-\sum_{w_j \in W'_{neg}}\log \sigma({v'_{w_j}}^T h)
\]

\(v'_{w_o}\)是输出词向量(正样本),而\(W_{neg}\)是负样本集合,\(v'_{w_j}\)是负样本词向量,由于负样本集合的大小非常有限,通常来说小于10,在每次梯度下降爹地啊过程中,计算复杂度可以缩小为原来的1/1000(假设词表为10000)。

参考

cbow与skip-gram

(二)通俗易懂理解——Skip-gram和CBOW算法原理

推荐系统实践 0x13 Word2Vec的更多相关文章

  1. 协同滤波 Collaborative filtering 《推荐系统实践》 第二章

    利用用户行为数据 简介: 用户在网站上最简单存在形式就是日志. 原始日志(raw log)------>会话日志(session log)-->展示日志或点击日志 用户行一般分为两种: 1 ...

  2. zz京东电商推荐系统实践

    挺实在 今天为大家分享下京东电商推荐系统实践方面的经验,主要包括: 简介 排序模块 实时更新 召回和首轮排序 实验平台 简介 说到推荐系统,最经典的就是协同过滤,上图是一个协同过滤的例子.协同过滤主要 ...

  3. 推荐系统实践 0x07 基于邻域的算法(2)

    基于邻域的算法(2) 上一篇我们讲了基于用户的协同过滤算法,基本流程就是寻找与目标用户兴趣相似的用户,按照他们对物品喜好的对目标用户进行推荐,其中哪些相似用户的评分要带上目标用户与相似用户的相似度作为 ...

  4. 推荐系统实践 0x0b 矩阵分解

    前言 推荐系统实践那本书基本上就更新到上一篇了,之后的内容会把各个算法拿来当专题进行讲解.在这一篇,我们将会介绍矩阵分解这一方法.一般来说,协同过滤算法(基于用户.基于物品)会有一个比较严重的问题,那 ...

  5. 推荐系统实践 0x09 基于图的模型

    用户行为数据的二分图表示 用户的购买行为很容易可以用二分图(二部图)来表示.并且利用图的算法进行推荐.基于邻域的模型也可以成为基于图的模型,因为基于邻域的模型都是基于图的模型的简单情况.我们可以用二元 ...

  6. 推荐系统实践 0x12 什么是Embedding

    做过深度学习的小伙伴,大家应该多多少少都听说过Embedding,这么火的Embedding到底是什么呢?这篇文章就用来介绍Embedding.另外,基于深度学习的推荐系统方法或者论文还没有结束,我打 ...

  7. Spark推荐系统实践

    推荐系统是根据用户的行为.兴趣等特征,将用户感兴趣的信息.产品等推荐给用户的系统,它的出现主要是为了解决信息过载和用户无明确需求的问题,根据划分标准的不同,又分很多种类别: 根据目标用户的不同,可划分 ...

  8. 基于Neo4j的个性化Pagerank算法文章推荐系统实践

    新版的Neo4j图形算法库(algo)中增加了个性化Pagerank的支持,我一直想找个有意思的应用来验证一下此算法效果.最近我看Peter Lofgren的一篇论文<高效个性化Pagerank ...

  9. 推荐系统实践 0x05 推荐数据集MovieLens及评测

    推荐数据集MovieLens及评测 数据集简介 MoiveLens是GroupLens Research收集并发布的关于电影评分的数据集,规模也比较大,为了让我们的实验快速有效的进行,我们选取了发布于 ...

随机推荐

  1. 网鼎杯2020 AreUSerialz

    0x00 前言 ...有一说一,赵总的BUUCTF上的这道题目并没有复现到精髓.其实感觉出题人的题目本身没有那么简单的,只不过非预期实在是太简单惹. 涉及知识点: 1.php中protected变量反 ...

  2. metasploit魔鬼训练营靶机环境搭建(第二章)

    环境搭建,书上已经很详细了,路由转发的那个鼓捣了好久都没弄好,菜的啊 所以先往书后面继续学习,不停留在配置环境上了. backtrack没有下载,使用的kali linux 其他的都是一样的 百度网盘 ...

  3. centos 7系统,解决python3.x 安装后使用yum不能安装的问题(错误:urlgrabber-ext-down | KeyboardInterrupt)

    1.在安装python3.xx版本后,通过yum去安装软件会出现问题,目前我遇到的有2种问题 比如显示:urlgrabber-ext-down Downloading packages: File & ...

  4. .NET 开源导入导出库 Magicodes.IE 2.5发布

    今天我们发布了2.5版本,这当然也离不开大家对Magicodes.IE的支持,今天我也是跟往常一样列举了该版本一些重要的更新内容. 当然也要说一下,在这个版本中我们设计了全新的LOGO Excel导出 ...

  5. Java对象操作工具

    对象复制(反射法) public static void copyProp(Object from, Object to, String... filterProp) { HashSet<Str ...

  6. idea2020.2.x/2020.3.x最新破解版方法教程无限永久重置插件激活码

    idea是一个java开发工件,相信我所有的朋友都用过.本教程教你做到完美,安全,永久.破解 idea2020.2.x和idea2020.3.x的所有版本绝对是100% 激活,支持Windows Ma ...

  7. ARC109D - L

    平面上一开始有三个点\((0,0),(0,1),(1,0)\)形成成L形(点连续),每次操作可以将一个点改变位置,使得得到的仍然是L形.给出终止L形的位置,问移动的最小步数. \(|x|,|y|\le ...

  8. HuangB2ydjm

    Hi! 我现在呢还是学生,想想初中的同学都结婚生子了,自己,嗯.(啊!!!) 本科以及硕士读的都是应用统计 在这里请广大网友多多指教了! 如果有机会的话,大家可以一起造轮子 you can catch ...

  9. 华为云亮相QCon2020深圳站,带你体会大厂的云原生玩法与秘诀

    摘要:在QCon全球软件开发大会上,华为云开发者生态总监张全文作为"云原生应用开发实践"专题出品人,携手华为云四位资深技术专家带来精彩分享. 作为当下技术领域最火热的技术趋势之一, ...

  10. ubuntu18.04 登录界面循环,已解决

    按照百度的方法,要卸载重装nvidia,遇到如下问题 1.进入Ubuntu字符界面,出现乱码,猜测是sudo命令出现问题,果然 解决方案:$ PATH=/usr/kerberos/sbin:/usr/ ...