Word2Vec学习笔记(三)

三、Hierarchical Softmax模型

3.1 词向量

    词向量目前常用的有2种表示方法,One-hot representation 和 distributed representation. 词向量,顾名思义就是将一个词表示为向量的形式,一个词,怎么可以将其表现为向量呢?最简单的就是One-hot representation,它是以词典V中的词的个数作为向量的维度,按照字典序或某种特定的顺序将V排序后,词w的向量可以表示为: [0,0,1,0,0,,0],即词w出现的位置为1,其余均为0. 可以看到,这种方法表示的词向量太过于稀疏,维度太高,会引起维度灾难,而且非常不利于计算词之间的相似度。另一种distributed representation可以解决上述问题,它通过训练将一个词映射为相对于One-hot representation来说一个比较短的向量,它的表示形式类似于:[0.1,0.34,0.673,0.983]。词向量就是将词映射到词典空间中,如下图所示的词向量是两种不同的语言映射。

词向量在空间中的映射

3.2 CBOW模型和Skip-Gram模型

    CBOW模型很像 feedforward NNLM(A Neural Probabilistic Language Model),feedforward NNLM模型如下所示:
这里写图片描述
其中C是一个词向量矩阵,首先,将词wi的词向量从C中取出,并且首尾相接组成x作为神经网络的第一层输入层,第二层为隐藏层,通过 d+Hx 计算得到。d 是一个偏置项。在此之后,使用 tanh 作为激活函。第三层输出层,一共有 |V| 个节点,每个节点 yi 表示下一个词为i的未归一化 log 概率。最后使用 softmax 激活函数将输出值 y 归一化成概率。最终,y 的计算公式为:y=b+Wx+Utanh(d+Hx)
    CBOW将隐藏层移除,投影层不再是词向量的拼接,而是各个词向量相加后取平均作为输入,由上图可以看到,NNLM模型大部分的计算量在输出层上的softmax归一化运算,因此,CBOW为了简化模型,在输出层输出huffman树。CBOW模型根据上下文预测当前词。Skip-gram模型是用每个当前词去预测一定范围内除当前词之外前后的词。并不是有些人说的CBOW的相反版本。论文关于这一点的原文是:we use each current word as an input to a log-linear classifier with continuous projection layer, and predict words within a certain range before and after the current word. 参考 http://arxiv.org/pdf/1301.3781v3.pdf
CBOW模型和Skip-gram模型

3.3 CBOW模型的推导

    由于模型的输出是一颗huffman树,其中树的叶子节点表示词,根节点表示权值。CBOW的核心内容是推导出p(w|context(w)),其中,context(w)由w前后各c个词组成。如下图所示:下图借用
http://blog.csdn.net/itplus/article/details/37969979
CBOW模型示意图

  1. 由输入层context(w)得到投影层向量Xw:
    Xw=i=12cV(context(w)i)

    以上V(context(w)i)初始化为[0.5M,0.5M],M为向量的维数。
  2. 由huffman树的根节点到叶节点,是多个二分类问题。二分类问题一般用logistic回归解决,给出回归函数:
    σ(zi)=11+ezi,z=XTwθ,p(dwi|XTw;θi1)=1σ(z),d=1p(dwi|XTw;θi1)=σ(z),d=0
  3. 由以上huffman树的图可知:
    p(w|context(w))=i=2lwp(dwi|Xw;θi1)=i=2lw[σ(zi1)1dwi(1σ(zi1))dwi]
  4. 语言模型的目标函数是取如下最大似然函数
    L=wClogp(w|context(w))=wClogi=2lw[σ(zi1)1dwi(1σ(zi1))di]=wCi=2lw[(1dwi)logσ(zi1)+dwilog(1σ(zi1))]

    记以下函数为:
    L(w,i)=(1dwi)logσ(zi1)+dwilog(1σ(zi1))

    将z_i代入得:
    L(w,i)=(1dwi)logσ(XTwθi1)+dwilog(1σ(XTwθi1)
  5. 求函数L(w,i)wθi1求偏导数:
    L(w,i)Xw=(1dwi11+eXTwθi1)θi1L(w,i)θi1=(1dwi11+eXTwθi1)XTw
  6. 那么,参数θi1的更新公式如下所示:
    θi1:=θi1+η(1dwi11+eXTwθi1)XTw

    我们的目的是求每个词的词向量,那么,给出词向量的更新公式:对于每个wcontext(w),都有:
    v(w):=v(w)+ηi=2lw(1dwi11+eXTwθi1)θi1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Thrift 教程 开发 笔记 原理 资料 使用 范例 示例 应用

在这里汇总一下:thrift版本差异和源码及jar包下载。文档,示例(脚本、代码、),白皮书,常见问题。 有很内容是重复的,给位看官自行过滤。 英文资料 API 使用介绍 原理简介(推荐阅读) 和 简单范例 IBM developerWorks 详细…

Bulk API实现批量操作

Bulk 批量操作 (1) 比如,我这里,在$ES_HOME里,新建一文件,命名为requests。(这里为什么命名为request,去看官网就是)在Linux里,有无后缀没区别。 1 2 3 4 5…

Word2Vec学习笔记(三)续

三、(续)Skip-gram模型介绍 Skip-gram模型并不是和CBOW模型相反的,它们的目的都是计算出词的向量,只不过在作者的论文中给出的图看样子是反的而已。Skip-gram模型是用每个当前词去预测一定范围内除当前词之外前后的词。同样的&…

三省吾身

自尊心极强,极其自信又极其自卑极其理性又极其感性,平时把自卑隐藏在自信中,因为自卑和感性易冲动发火脾气暴躁,性格非常矛盾。知己知彼。 成熟包容宽恕平和气定神闲。 每日看此,三省吾身。 一定要宽容,如果…

我的博客开通了

一直都比较关注博客园,也一直很想写博客,最近几年发现自己做了很多项目,但好多东西没有很多的积累下来,每次都要从网上搜索别人的东西,感觉太失败! 从今天开始,我也要做一个有故事的程序员&…

ElasticSearch关于映射mapping介绍

#首先我们还是先增加几个文档 PUT /myindex/article/1 {"post_date": "2020-03-14","title": "Java","content": "java is the best language","author_id": 119 }PUT /myindex/article/2 {"post…

最优化学习笔记(五)——牛顿法(多维数据)

在最优化学习系列中,第一次就说的是牛顿法,但是那是在一维搜索上的,它其实就是将函数f在x处利用泰勒公式展开,得到它的近似函数,进而求解最小值。本节内容主要说明牛顿法在多维数据上的迭代公式。最优化学习笔记中讲到…

ElasticSearch的Object数据类型

上一篇mapping文章我们知道数字类型和日期类型要精确查找,以及mapping的两个重要的作用。 所以创建索引的时候,是不是可以预先定义字段的类型以及相关属性,这样就能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理…

Word2Vec学习笔记(四)——Negative Sampling 模型

前面讲了Hierarchical softmax 模型,现在来说说Negative Sampling 模型的CBOW和Skip-gram的原理。它相对于Hierarchical softmax 模型来说,不再采用huffman树,这样可以大幅提高性能。 一、Negative Sampling 在负采样中,对于给定…

ElasticSearch手动创建mapping

前面也提到过关于手动创建mapping,接着上一篇关于object类型存储以及mapping的介绍,我们接下来就介绍下如何手动创建mapping #手动创建mapping PUT /lib6 {"settings":{"number_of_shards" : 3,"number_of_replicas" : 0…

Array.prototype.slice.call

Array.prototype.slice.call(arguments,0)就类似于arguments.slice(0),但因为arguments不是真正的Array,所以它没有slice这个方法.能用slice方法的,只要有length属性就行。虽然arguments有length属性,但是没有slice方法&#xff0…

Word2Vec学习笔记(五)——Negative Sampling 模型(续)

本来这部分内容不多,是想写在negative sampling 中和cbow一起的,但是写了后不小心按了删除键,浏览器直接回退,找不到了,所以重新写新的,以免出现上述情况 (接上) 三、Negative Sampling 模型——Skip-gra…

ElasticSearch基本查询一(英文分词)

废话不多说首先准备数据,我们先添加几个文档 PUT /lib3/user/1 { "name" : "zhaoliu","address" :"hei long jiang sheng tie ling shi","age" : 50,"birthday" : "1970-12-12","inte…

HDU1071_数学几何

题目大意: 给你三个点p1,p2,p3,p1是最高点,然后算出面积。 解题思路: 我的解题思路有点水,就是直接求抛物线系数,直线系数,最后求积分搞定e.尽量少用中间变量吧。代码有点丑。虽然这道题目是1a,…

机器学习笔记(十一)——逻辑回归

一、引言 虽然说是逻辑回归,其实既可以用它做回归,也可以用它做分类。一般我们从最简单的二分类问题开始了解他,当然也可以做多分类。 二、Logistic Regression 的一般步骤 找一个合适的假设构造损失函数让损失函数最小,求出对应…

ElasticSearch vs. Solr

为何日志服务商Loggly选择ElasticSearch而非Solr. 原文链接: http://loggly.wpengine.com/bl... 在Gen2产品的早期阶段, 我们事实上是失败的, 这促使我们重新审视我们现有的技术栈. 我们仔细分析系统中的每个独立的组件,并记录下来, 当然其中也包括构成我们核心功能的搜索引擎技…

android 工程结构,它到底是怎么运行的。

为了帮助理解,我决定先上传一个工程截图,这个是我做的一个小作业,3、4个小时完成,没什么含金量,就是交差用的,这里给大家做个模板吧。 我把一个工程分6个部分,如左面的图所示,然后…

为什么ElasticSearch应用开发者需要了解cluster state

原文链接: https://www.loggly.com/blog/p... 在前面的文章(ES vs Solr)中我们提到, ES构建了Loggly的很多核心功能. 在把这项通用搜索技术用于我们的日志管理系统, 并为超过5000多客户提供准实时服务的过程中, 我们在技术上成长颇多. 按照我们对开源社区的尊重, 在此希望能把我…

给 MySQL 增加 Sequence 管理功能

-- Sequence 管理表 DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( name VARCHAR(50) NOT NULL, current_value INT NOT NULL, increment INT NOT NULL DEFAULT 1, PRIMARY KEY (name) ) ENGINEInnoDB; -- 取当前值的函数 DROP FUNCTION IF EXISTS currval; DE…

最优化学习笔记(六)——牛顿法性质分析

一、牛顿法存在的问题 在单变量的情况下&#xff0c;如果函数的二阶导数f′′<0&#xff0c;牛顿法就无法收敛到极小点。类似的&#xff0c;在多变量的情况下&#xff0c;目标函数的hessian矩阵F(x(k))非正定&#xff0c;牛顿法的搜索方向并不一定是目标函数值的下降方向。甚…