第一篇: 词向量之Word2vector原理浅析

144

作者 Aroundtheworld
2016.11.05 18:50 字数 1353 阅读 5361评论 1

一、概述

本文主要是从deep learning for nlp课程的讲义中学习、总结google word2vector的原理和词向量的训练方法。文中提到的模型结构和word2vector的代码实现并不一致,但是可以非常直观的理解其原理,对于新手学习有一定的帮助。(首次在简书写技术博客,理解错误之处,欢迎指正)


二、词向量及其历史

1. 词向量定义

  词向量顾名思义,就是用一个向量的形式表示一个词。为什么这么做?机器学习任务需要把任何输入量化成数值表示,然后通过充分利用计算机的计算能力,计算得出最终想要的结果。词向量的一种表示方式是one-hot的表示形式:

  首先,统计出语料中的所有词汇,然后对每个词汇编号,针对每个词建立V维的向量,向量的每个维度表示一个词,所以,对应编号位置上的维度数值为1,其他维度全为0。这种方式存在问题并且引发新的质疑:

1)无法衡量相关词之间的距离

  从语义上讲,hotel 和motel 更相关,和cat更不相关,但是无法表示这种差异。

2)V维表示语义空间是否有必要

one-hot的每一维度表示具体的词,我们假设存在更加抽象的维度能够表示词和词之间的相似性和差异性,并且词向量的维度远远小于V。例如,这些维度可以是时态,单复数等

2.词向量获取方法

1)基于奇异值分解的方法(奇异值分解)

a、单词-文档矩阵

基于的假设:相关词往往出现在同一文档中,例如,banks 和 bonds, stocks,money 更相关且常出现在一篇文档中,而 banks 和 octous, banana, hockey 不太可能同时出现在一起。因此,可以建立词和文档的矩阵,通过对此矩阵做奇异值分解,可以获取词的向量表示。

b、单词-单词矩阵

基于的假设:一个词的含义由上下文信息决定,那么两个词之间的上下文相似,是否可推测二者非常相似。设定上下文窗口,统计建立词和词之间的共现矩阵,通过对矩阵做奇异值分解获得词向量。

2)基于迭代的方法

目前基于迭代的方法获取词向量大多是基于语言模型的训练得到的,对于一个合理的句子,希望语言模型能够给予一个较大的概率,同理,对于一个不合理的句子,给予较小的概率评估。具体的形式化表示如下:

第一个公式:一元语言模型,假设当前词的概率只和自己有关;第二个公式:二元语言模型,假设当前词的概率和前一个词有关。那么问题来了,如何从语料库中学习给定上下文预测当前词的概率值呢?

a、Continuous Bag of Words Model(CBOW)

给定上下文预测目标词的概率分布,例如,给定{The,cat,(),over,the,puddle}预测中心词是jumped的概率,模型的结构如下:

如何训练该模型呢?首先定义目标函数,随后通过梯度下降法,优化此神经网络。目标函数可以采用交叉熵函数:

由于yj是one-hot的表示方式,只有当yj=i 时,目标函数才不为0,因此,目标函数变为:

代入预测值的计算公式,目标函数可转化为:

b、Skip-Gram Model

skip-gram模型是给定目标词预测上下文的概率值,模型的结构如下:

同理,对于skip-ngram模型也需要设定一个目标函数,随后采用优化方法找到该model的最佳参数解,目标函数如下:

分析上述model发现,预概率时的softmax操作,需要计算隐藏层和输出层所有V中单词之间的概率,这是一个非常耗时的操作,因此,为了优化模型的训练,minkov文中提到Hierarchical softmax 和 Negative sampling 两种方法对上述模型进行训练,具体详细的推导可以参考文献1和文献2。

三、参考文献

1.word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method

2.word2vec Parameter Learning Explained

3.Deep learning for nlp Lecture Notes 1

4.Neural Word Embedding as Implicit Matrix Factorization(证明上述model本质是矩阵分解)

5.Improving Distributional Similarity with Lessons Learned from Word Embeddings(实际应用中如何获得更好的词向量)

6.Hierarchical Softmax in neural network language model

7.word2vec 中的数学原理详解(四)基于 Hierarchical Softmax 的模型

8.Softmax回归

9.霍夫曼编码

第一篇: 词向量之Word2vector原理浅析相关推荐

  1. 词向量之Word2vector原理浅析

    原文地址:https://www.jianshu.com/p/b2da4d94a122 一.概述 本文主要是从deep learning for nlp课程的讲义中学习.总结google word2v ...

  2. 词向量Word Embedding原理及生成方法

    前言 Word Embedding是整个自然语言处理(NLP)中最常用的技术点之一,广泛应用于企业的建模实践中.我们使用Word Embedding能够将自然文本语言映射为计算机语言,然后输入到神经网 ...

  3. One_hot和Word2Vec两种词向量方法的原理及比较

    对于文本处理,首要的任务是要对非结构化数据进行结构化处理,由此诞生了词向量表示的方法,再众多词向量表示方法中,尤其以One_hot和word2vec两种方法最常用,下面也针对这俩方法进行阐述 One_ ...

  4. 系统学习NLP(十三)--词向量(word2vec原理)

    词向量简介 自然语言是一套用来表达含义的复杂系统.在这套系统中,词是表义的基本单元.在机器学习中,如何使用向量表示词? 顾名思义,词向量是用来表示词的向量,通常也被认为是词的特征向量.近年来,词向量已 ...

  5. 词向量与词向量拼接_第一节——词向量与ELmo(转)

    最近在家听贪心学院的NLP直播课.都是比较基础的内容.放到博客上作为NLP 课程的简单的梳理. 本节课程主要讲解的是词向量和Elmo.核心是Elmo,词向量是基础知识点. Elmo 是2018年提出的 ...

  6. 机器翻译第一步--词向量的生成与保存

    最近在看斯坦福大学机器翻译的开源代码,琢磨着把代码稍微改动一下,做成中文到英文的翻译.机器翻译的第一步是将词转化成词向量.斯坦福大学没有做中文的转化,我只好自己想办法. 我用的是斯坦福大学的nmt-m ...

  7. 词向量模型Word2vec原理

    目录 1.词向量简介 2.Word2vec简介 3.Word2vec详细实现 4.CBOW模型 5.Skip-gram模型 6. CBOW与skip-gram对比 7.参考 1.词向量简介 用词向量来 ...

  8. 深度学习-数学-第一篇-标量,向量,矩阵,张量

    这记录一些我刚开始学习所用到的数学 基础从最基础的开始 小知识: 0 ∈ {0 1 {0 1}表示一个集合,里面有0,1两个元素.所以0属于这个集合,就用0 ∈ {0 1}表示了.∈代表属于. {0 ...

  9. 浅谈文本词向量转换的机制embedding

    首先感谢大家对上一篇文章的关注吧,建议看这篇文章前先看下上一篇我推送的<20行代码实现电影评论情感分析>,上篇文章其实留了个坑,不过不一定坑到大家,因为可能90%的同学可能不会去认真读一遍 ...

最新文章

  1. java.util.concurrent包API学习笔记
  2. Java面向对象:覆写与重载
  3. 阻止JavaScript事件冒泡到父元素
  4. python 字符ab+字符c 2_python入门 之 字符串(二)
  5. 前端学习(982):jquery概述
  6. 板邓:wordpress中add_action()和do_action()关系
  7. Redmi K30S更多细节曝光:骁龙865加持 提供多款配色
  8. basename 从绝对路径中取得文件名
  9. EA enterprise architect 画用例图
  10. 【java毕业设计】基于javaEE+Mybatis的WEB仓库管理系统设计与实现(毕业论文+程序源码)——仓库管理系统
  11. AdventureWorks 安装和配置[转自 微软msdn]
  12. EXCEL【数据处理之数据抽取——字段拆分】
  13. SD卡windows无法格式化
  14. 编译liteos(ubuntu)
  15. iReport使用入门
  16. filco的pin码_filco蓝牙键盘配对流程,filco 忍者二代 蓝牙怎么
  17. 【优化求解】基于头脑风暴优化算法BSO求解最优目标matlab源码
  18. 图论——最短路径之渡河问题
  19. ant design 监听Table 组件 滚动到底部
  20. 大数据技术学习,深度挖掘大数据的现状分析

热门文章

  1. How to go between HK and Shenzhen (Futian)?
  2. python基本语法积累~
  3. 用扫描的方式实现Rosenfeld and Pfaltz提出的距离变换!
  4. 对语句 cv::Point2f srcPoint[3];的理解~
  5. c/c++中typedef详解(此文对typedef用于结构体的定义说明得很清楚到位)
  6. 一级计算机基础第四套,《计算机应用基础》第四套考试与答案.doc
  7. ubuntu声卡相关
  8. leetcode算法题--相交链表
  9. php 获取鼠标的坐标,如何实时获取鼠标的当前坐标-
  10. C#:委托和自定义事件