word2vec研究如何将词用向量表示,使用的两个重要模型——CBOW模型(Continuous Bag-of-Words Model)和Skip-gram模型(Continuous Skip-gram Model),CBOW通过上下文预测中间词,Skip-gram对中间词预测它的上下文,本文只对CBOW进行介绍

词的向量表示

  • one-hot:语料库的词项个数为m,则one-hot表示的长度为m,只有一个位置是1,其余都是0
  • distributed representation:假设每个词项有d个特征,d远小于m,用d维向量表示每个词项

CBOW

CBOW 是 word2vec 中使用的浅层神经网络模型,语料库中词项和词项的上下文做为样本,Sample(Context(x), x),对模型的参数进行训练,得到每个词项的向量表示

词的上下文 Context(x)

一个词出现的概率只与它前后固定数目(n)的词相关,n的取值与模型参数有关,可以参考:

n 模型参数数量
1
2
3
4

例子:我很爱学信息检索

如果n=2,则的上下文Context(学)={ 很,爱,信息,检索 } 4 个词组成

模型结构

输入层

上下文词项的one-hot

隐藏层

对于一个样本Sample(Context(x), x),将的one-hot向量与表示矩阵相乘,得到的当前表示向量,,将做为隐藏层的输出,是一个1*d的向量。

输出层

隐藏层得到的1d向量与权重矩阵相乘,得到1m的向量,通过softmax处理后得到一个1*m的向量,为中间词出现的概率,概率最大的index指向的词项即为预测出的中间词,与真实值的one-hot向量 做比较,根据误差更新权重矩阵。

损失函数

梯度下降更新W和,训练完毕后,W矩阵即为词向量矩阵,用一个词项的one-hot去乘W矩阵即得到这个词项的词向量

结构分析

参数数量:2*d*m个,d为词向量长度,m为词项个数,在语料库中m的值是很大的,对于一个样本(Context(x), x),只有一个是正确的结果,其余的m-1个全是错误的结果,每次都对大量的错误结果进行权重更新是很耗时的

改进

思路:减少网络的参数个数和每次要更新的参数个数

负采样策略

对于词 w 的上下文Context(w)来预测w,Context(x)与x构成了一个正样本,Context(x)与别的词项就构成负样本,每次训练仅选择一小部分的负样本,对他们连接的权重进行更新,减少了每次训练需要更新的权重数量,应该选择多少,如何进行选择呢?大体思路是让出现频率高的词项更大概率被选做负样本。

采样率公式:

len(w)表示w应该被保留作为负样本的概率,counter(w)代表w在语料库中出现的次数,指数3/4是经验值

Hierarchical softmax的CBOW

分层softmax的CBOW将输出层改为树形结构

建立哈夫曼树,使高频词项更靠近根节点,规定左孩子为负类,右孩子为正类,经过一个非叶子结点做了一次二分类,设隐藏层的输出为,经过每个非叶子结点被分到正类的概率为:

分到负类概率为:,每个非叶子结点上都有一个待定参数向量:,可以计算出到达值为1的结点x的概率:

目标函数: 最大化,通过梯度上升(或者求 的最小值,用梯度下降)更新 的值,表示矩阵是最终得到的词向量矩阵。

参考文献

Efficient Estimation of Word Representations in Vector Space

word2vec的数学原理

word2vec的负采样

word2vec的简单理解的更多相关文章

  1. git的简单理解及基础操作命令

    前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制管理>这本书(偏理论,内容完善,很不错),针对所学 ...

  2. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  3. [转]简单理解Socket

    简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html  题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...

  4. Js 职责链模式 简单理解

    js 职责链模式 的简单理解.大叔的代码太高深了,不好理解. function Handler(s) { this.successor = s || null; this.handle = funct ...

  5. Deep learning:四十六(DropConnect简单理解)

    和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...

  6. Deep learning:四十二(Denoise Autoencoder简单理解)

    前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Be ...

  7. 简单理解dropout

    dropout是CNN(卷积神经网络)中的一个trick,能防止过拟合. 关于dropout的详细内容,还是看论文原文好了: Hinton, G. E., et al. (2012). "I ...

  8. 我们为之奋斗过的C#-----C#的一个简单理解

    我们首先来简单叙述一下什么是.NET,以及C#的一个简单理解和他们俩的一个区别. 1 .NET概述 .NET是Microsoft.NET的简称,是基于Windows平台的一种技术.它包含了能在.NET ...

  9. 简单理解ECMAScript2015中的箭头函数新特性

    箭头函数(Arrow functions),是ECMAScript2015中新加的特性,它的产生,主要有以下两个原因:一是使得函数表达式(匿名函数)有更简洁的语法,二是它拥有词法作用域的this值,也 ...

随机推荐

  1. Django框架(六):模型(二) 字段查询、查询集

    1. 字段查询 通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询. 函数名 功能 返回值 说明 get 返回表中满足条件的一条且只能有一条数据. 返回值是一个模型类对象. ...

  2. iOS开发-消息初认识

    一.消息循环(runLoop)的作用 1,防止程序退出, 2,接受事件 3,如果没有事件,让程序自动休眠   二.消息源    1, 输入源:键盘.鼠标.NSBoard.NSPort    2,定时源 ...

  3. StartDT AI Lab | 需求预测引擎如何助力线下零售业降本增效?

    在当下经济明显进入存量博弈的阶段,大到各经济体,小到企业,粗放的增长模式已不适宜持续,以往高增长的时代已经成为过去,亟需通过变革发掘新的增长点.对于竞争激烈的线下零售行业而言,则更需如此. 零售行业一 ...

  4. 吴裕雄--天生自然 pythonTensorFlow自然语言处理:Seq2Seq模型--训练

    import tensorflow as tf # 1.参数设置. # 假设输入数据已经用9.2.1小节中的方法转换成了单词编号的格式. SRC_TRAIN_DATA = "F:\\Tens ...

  5. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:循环神经网络预测正弦函数

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 定义RNN的参数. HIDDEN_SIZE = ...

  6. 发布订阅--SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名

    最近在学习SQL SERVER的高级复制技术的时候,遇到一个小问题,就是用本地SQL SERVER连接服务器的数据库时,在查看复制功能的发布服务器时,连接不上,弹出一个错误提示框架,如下: 原来在自己 ...

  7. Java依据集合元素的属性,集合相减

    两种方法:1.集合相减可以使用阿帕奇的一个ListUtils.subtract(list1,list2)方法,这种方法实现必须重写集合中对象的属性的hashCode和equals方法,集合相减判断的会 ...

  8. python XML ElementTree的增删改查

    import xml.etree.ElementTree as ET """ ElementTree.write() 将构建的XML文档写入(更新)文件. Element ...

  9. Gene family|

    6.1引言 随着测序技术的提高,能被测序的物种趋近于复杂(因为越高等的生物基因组大且复杂(1.本身基因结构复杂2.复杂程度与种属关系并不相关)),所以基因家族(Gene family)的数目可能能够更 ...

  10. [LC] 348. Design Tic-Tac-Toe

    Design a Tic-tac-toe game that is played between two players on a nx n grid. You may assume the foll ...