word2vec模型
(一) 简介
1、传统的词向量一般用one-hot表示,通常面临两个问题:(1)高维稀疏的向量带来计算成本;(2)不同的词向量彼此正交,无法衡量词之间的相似度。而distributed representation通过训练,可以得到每个词的低维稠密向量,不仅计算成本低,而且可以通过向量的距离计算来表示词与词之间的相似度。word2vector就是一个将词进行低维稠密向量化的工具。
2、word2vector的训练过程可以看成是单隐层的网络结构,如下所示:
其中输入层是一个one-hot向量,隐层是一个N维稠密向量,输出层是一个V维稠密向量,W表示词典的向量化矩阵,也是输入到隐层以及隐层到输出的权重参数;因此输入层到隐层表示对上下文词进行向量化,而隐层到输出层,表示计算上下文词与词典的每个目标词进行点积计算(softmax过程)。word2vec中常见的模型有:CBOW(Continuous Bag Of Words Model),Skip-gram(Continuous Skip-gram Model),两者的模型图如下所示:
由此可见,前者是由上下文推当前词,后者是由当前词推上下文;
3、 根据训练的优化方法,word2vec的设计框架有两种,分别为:hierarchical softmax以及negative sampling;
(二) 基于hierarchical softmax框架的CBOW模型
1、模型图如下:
(1) 这里的context(w)表示上下各c个词,总共2c个词,每个词假设为m维向量;
(2) Project Layer对2c个词向量进行累加:
(3) 输出层是一棵哈夫曼树,叶子节点表示语料中的词,每个词的出现频次作为权重进行编码;
(4) 哈夫曼树的设计是为了优化传统神经网络算法的计算效率问题;
2、参数定义
3、哈夫曼树的运算
(1) 每次节点分裂都是一次二分类过程,其中哈夫曼编码为1则为负类,哈夫曼编码为0则为正类:
(2) 二分类的决策函数如下:
(3) 整棵哈夫曼树的分类函数为:
其中:
PS:有了哈夫曼树的分类函数,就可以得到模型的目标函数,梯度下降法可求得参数;
(三) 基于hierarchical softmax框架的skip-gram模型
1、模型图如下:
(1) Input layer以及projectionlayer都是当前词的词向量,m维;
(2) Output Layer跟CBOW一样,都是哈夫曼树;
2、哈夫曼树的运算
其中:
(四) 基于negative sampling框架的CBOW模型与skip-gram模型
1、CBOW模型思想:在CBOW模型中,已知词w的上下文context(w),需要预测w,因此,对于给定的context(w),词w就是一个正样本,其他词就是负样本,可以通过采样负样本得到一个关于w的负样本子集NEG(w),因此词的标签可以表示如下:
2、CBOW模型目标函数表示如下:
其中:
3、通过梯度下降法优化目标函数,可以得到CBOW模型参数;
PS:skip-gram思想类似;
4、负采样算法
(1) 词典中的词在语料中出现的次数有高有低,对于那些高频词,被选为负样本的概率就应该比较大,反之,对于那些低频词,其被选中的概率就应该比较小,本质上这是一个带权采样的问题;
(2) 图示如下:
其中:
(3) 采样规则:每次生成[1,M-1]的一个随机整数r,Table(r)就是一个样本;
(五) 总结
1、在w2v中,由隐层到输出层是一个全连接的softmax结构(超大规模分类问题),每次前向都需要做归一化操作,每次后向都需要更新所有的参数,因此计算耗时。
2、对于层级softmax,每个类别都是一个叶子节点,所有叶子节点的概率输出和为1,这是基于哈夫曼的特性,每次前向不需要做归一化,每次后向也只更新根节点到叶子节点路径上的参数(平均logN),因此计算效率高。
3、对于负采样算法,主要两个改进点:(1)将softmax函数改为sigmoid函数,因此前向不需要做归一化;(2)通过负采样构造正负样本集,因此每次后向只更新部分对应的参数。
4、层级softmax跟负采样都是对原始softmax算法的改进,前者是将n分类问题拆解成logn个层级二分类问题,后者是将n分类问题拆解成n个二分类问题。
参考:word2vec中的数学原理详解
word2vec模型相关推荐
- 情感分析的描述、基于词袋模型和word2vec模型的情感分析实现
情感分析的描述.基于词袋模型和word2vec模型的情感分析实现 以购物评论为例: # 读入原始数据集 import pandas as pddfpos = pd.read_excel('../dat ...
- 是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)?
是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)? http://www.voidcn.com/artic ...
- 把一个dataset的表放在另一个dataset里面_使用中文维基百科语料库训练一个word2vec模型并使用说明...
本篇主要介绍如何通过中文维基百科语料库来训练一个word2vec模型. 相关资料下载: 中文维基百科下载地址:https://dumps.wikimedia.org/zhwiki/ WikiExtr ...
- 自然语言处理一大步,应用Word2Vec模型学习单词向量表征
选自TowardsDataScience,作者:Suvro Banerjee,机器之心编译,参与:Pedro.张倩. 在常见的自然语言处理系统中,单词的编码是任意的,因此无法向系统提供各个符号之间可能 ...
- 268G+训练好的word2vec模型(中文词向量)
268G+训练好的word2vec模型( 从网上了解到,很多人缺少大语料训练的word2vec模型,在此分享下使用268G+语料训练好的word2vec模型. 查看全文 http://www.ta ...
- Spark下的word2vec模型训练
一.引言 前边一节介绍了Word2Vec模型训练同义词,那么在大数据量的情况下,我们自然想到了用spark来进行训练.下面就介绍我们是如何实现spark上的模型训练. 二.分词 模型训练的输入是分好词 ...
- gensim流式训练word2vec模型,不需要一次性加载完整数据集
首先训练文本train_text.txt文件内容如下: 优惠的政策和政府对产业发展的重视也吸引了更多医美企业来成都寻觅机遇.2018年成都医美机构的数量一度飙升至407家,较之前一年激增131家 中国 ...
- torchtext建立词表build_vocab()时使用自己的word2vec模型
代码如下: 如果对于torchtext本身不太了解,可以参考:torchtext处理文本数据--构造dataset读取文本(学习一):torchtext处理文本数据--构造dataset读取文本(学习 ...
- torchtext处理文本数据——使用自己的word2vec模型作为词向量建立词表(学习二)
首先复制上一篇博客的完整代码,代码如下: 注:如果有不明白的地方请参考上一篇博客--torchtext处理文本数据--构造dataset读取文本(学习一) 数据源和解释都在上一篇博客中 from to ...
- 多进程使用wikimedia数据训练word2vec模型
语料库下载: 请参考:https://blog.csdn.net/weixin_35757704/article/details/115614112 1.训练Word2vec模型代码 单单使用gens ...
最新文章
- g-gdb工具使用图谱(持续更新)
- spring中那些让你爱不释手的代码技巧
- angular 兼容ie7 bootstrap2兼容ie6
- NetBeans 时事通讯(刊号 # 22 - Aug 18, 2008)
- 高性能mysql 聚簇索引,高性能MySQL笔记-第5章Indexing for High Performance-005聚集索引...
- 分屏总屏计算机电缆,分屏加总屏电缆DJYVP计算机电缆14x2x0.75
- 车辆违章演示示例代码
- 二叉搜索树(HDU3791)
- Spring Boot @PropertySource 加载配置文件、@ImportResource 导入Spring 配置文件
- WPF版的Dock控件第二版完成
- 游戏辅助制作技术分析
- 标准粒子群算法(PSO)
- 校园APP开发的优势和特点
- 319. 灯泡开关【我亦无他唯手熟尔】
- 用shapely判断两个图形的包含相交关系
- 设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?
- python excel处理重复行并统计个数_excel两个表格数据核对python-如何用python实现两个文件重复数据筛选并统计...
- 100种鞋子的画法,如何画鞋子
- FLASH--W25QXX系列存储器
- 决策树(Decision Tree)算法 python简单实现
热门文章
- 如果出现 Cause: java.lang.ClassNotFoundException: Cannot find class: com.itheima.domian.User
- Modelica资料整理
- @MapperScan和@Mapper的使用
- 网页从数据库读取出现乱码问题
- win7打开xp共享的计算机,win7系统如何访问xp共享打印机_windows7连接xp共享打印机的方法...
- 人生定位 读后感(1)
- spring xml解析详解
- 练法、打法、演法——回味老罗踢馆这场戏
- 我叫mt4公会攻城战服务器维护中,我叫MT4公会攻城战怎么打 我叫MT4公会攻城战打法攻略...
- MySQL两阶段加锁