1.前言

基于one-hot对于词汇进行编码的方式着实让人头疼,又无奈。头疼的是占用空间很大,计算量大,无奈的是这么简单粗暴的方式居然一直流传到了现在。今天给大家介绍一款基于神经网络语言模型来生成词向量的神器。在上一篇神经网络语言模型中我们介绍过语言模型的工作方式,将输入通过嵌入层转换为向量,然后使用投影层把各向量拼接在一起,通过隐层,再进入输出层。所以输入层中就得到了词向量矩阵。语言模型的核心是去表达文本,生成文本。词向量只是其中的一个环节,数据预处理的一部分。今天我们要讲解的词向量模型恰恰相反,其核心是借助于语言模型来生成词向量。

2.Word2Vec总述

如下图,其核心的思想是将词汇映射到向量空间中,使用向量之间的余弦距离来表示词汇之间点的相似度。如下图所示。

Word2Vec包含两种生成向量的模型CBOW和Skip-Gram。如下所示,CBOW使用周围的词来预测中心的词,而Skip-Gram是用中心的词预测周围的词,其思想类似于Gram。下面我们来详细介绍一下。

3.Skip-Gram

在这个模型中,我们给定一个输入,它会给我们输出离这个词比较近的词。如下图所示,我们会将中间词和它周围的词两两组成一队。

下图是skip-gram工作的整体流程,首先我们根据语料库的文本制作词表,然后对词进行one-hot编码。输入层和隐层之间的矩阵相当于词嵌入矩阵,那么隐层的输出就是该context对应的词向量,将该词向量和所有的词向量相乘得到相似度。在输出层使用softmax将相似度转换为概率,真实值就是我们从上下文附近词中选中的一个。

所以,最终我们得到的hidden layer层的权重W就相当于是词嵌入矩阵,该层的输出就是最后的词向量矩阵。训练完成之后我们的输出层也就去掉了。

4.CBOW

CBOW的思想是使用周围的词来预测中间的词。其流程就是将周围词组成的context进行输入,通过嵌入矩阵找到 对应的词向量,然后将context中各向量加和求平均,作为隐层输出。最后使用softmax预测概率。网络训练完成后隐层的输出就是我们需要的词向量。

5.哈夫曼树

哈夫曼树被称为最优二叉树,是带权路径长度最短的树

其构造流程如下,可以 看做是每次选择最小的树作为子节点,将其和作为上层节点,不断迭代来构成一棵树。

原始的word2vector输出层,每次都需要计算所有词汇的softmax,计算量大,收敛速度慢。采用树结构,每个·节点使用sigmoid进行二分类,正例则往右走,负例1-theta则往左走。可以证明所有的概率之和为1。这样对于相应的节点,我们就计算其对应路径上所有概率的连乘,权重越大其对应的路径就越短,这样一方面加快了计算速度,当一个权重点反向调节的时候其路径上的所有节点都会调节,也就同时加快了收敛速度。

6.负采样

因为原始的标签是one-hot编码,数据非常的离散。并且每次只有一个正例可以用来调节,这样的话效率就非常低。所以负采样就是选择 一部分负例也用来对损失进行调节,在随机选择负样本时,那些出现次数多的样本被选中的概率会比较大。这样每次损失调整的就会多一点,收敛速度也会快一些。

7.总结

本文介绍了word2vector中的CBOW和Skip-Gram两种词向量模型,其中CBOW是用周围的词来预测中心的词,而Skip-Gram是用中间的词来预测周围的词。当然预测并不是词向量模型的真正目的,其核心是使用这种语言模型的结构来生成词向量模型。在模型使用的过程中,不需要有后面的输出层,即隐层的输出就是我们所需要的词向量。同时因为传统的损失是计算词表中所有单词的概率,一般来说词表的数量是非常大的,所以速度会很慢,并且每次只会有一个正例来进行反向调节。为此我们介绍了两种优化方法哈夫曼树和负采样,哈夫曼树是最优的带权二叉树,每个节点反向调节时,其路径上的所有参数都会调节到;负采样使用部分的负例样本来进行反向调节,我们采用带权负采样,即出现的次数越大的负例被选中的概率越大。同样是能加快收敛。

8.废话

写到这块我都快要吐了,我是一个不能够善始善终的人。如果一件事情做的太久我就会很烦,想早点的结束。这就跟达芬奇画画总是画不完就放弃一样,我是不是脸皮有点厚了。但其实我想说的是,要学会接纳不完美的自己。正所谓凡事要留个有余不尽的意思,则造物不能忌之,鬼神不能损之。若业必求满,功必求盈者,不生内变,必招外忧。所以我从小上学总是得第三名,年年得奖,但是我觉得很羞愧,到后来我收到第三名的奖状立马就扔了。直到高中我就想通了,不是我超不过前面那两个,这是上帝有意在隐藏我的才华。想要进步,就得认清自己。不要相信别人,也不要相信时间,时间和别人就是两个最大的骗子。

谎言 BigBang 中文字幕

神经网络词向量模型之Word2Vec相关推荐

  1. 文本深度表示模型——word2vecdoc2vec词向量模型(转)

    from: https://www.cnblogs.com/maybe2030/p/5427148.html 阅读目录 1. 词向量 2.Distributed representation词向量表示 ...

  2. 使用gensim框架及Word2Vec词向量模型获取相似词

    使用gensim框架及Word2Vec词向量模型获取相似词 预备知识 Word2Vec模型下载 加载词向量模型 预备知识 gensim框架 gensim是基于Python的一个框架,它不但将Pytho ...

  3. 【自然语言处理】Word2Vec 词向量模型详解 + Python代码实战

    文章目录 一.词向量引入 二.词向量模型 三.训练数据构建 四.不同模型对比 4.1 CBOW 4.2 Skip-gram 模型 4.3 CBOW 和 Skip-gram 对比 五.词向量训练过程 5 ...

  4. 【NLP模型笔记】Intro || Word2vec词向量模型

    INTRO 自然语言处理(Natural Language Processing),简称NLP.这个领域是通过统计学.数学模型.机器学习等相关技术研究人类语言的特征,对其进行数学的表示,并基于这种表示 ...

  5. 《自然语言处理学习之路》02 词向量模型Word2Vec,CBOW,Skip Gram

    本文主要是学习参考莫烦老师的教学,对老师课程的学习,记忆笔记. 原文链接 文章目录 书山有路勤为径,学海无涯苦作舟. 零.吃水不忘挖井人 一.计算机如何实现对于词语的理解 1.1 万物数字化 1.2 ...

  6. 词向量模型Word2Vec

    文章目录 1.词向量模型通俗解释 1.1Word2Vec 1.2如何训练词向量 1.3构建训练数据 2.CBOW与Skip-gram模型对比 2.1CBOW模型 2.2Skip-gram模型 2.2. ...

  7. GENSIM官方教程(4.0.0beta最新版)-Word2Vec词向量模型

    GENSIM官方教程(4.0.0beta最新版)-词向量模型 译文目录 回顾:词袋模型 简介:词向量模型 词向量模型训练实例 训练一个你自己的模型 储存和加载模型 训练参数 内存相关的细节 模型评估 ...

  8. 使用Google word2vec训练我们自己的词向量模型

    主要内容 这篇文章主要内容是介绍从初始语料(文本)到生成词向量模型的过程. 词向量模型 词向量模型是一种表征词在整个文档中定位的模型.它的基本内容是词以及它们的向量表示,即将词映射为对应的向量,这样就 ...

  9. Word2Vec词向量模型代码

    Word2Vec也称Word Embedding,中文的叫法是"词向量"或"词嵌入",是一种计算非常高效的,可以从原始语料中学习字词空间向量的预测模型.Word ...

最新文章

  1. 【vue】vue中ref用法
  2. 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠
  3. php smarty继承,PHP Smarty 模板 模板继承 {extends}
  4. oracle快速排序法,经典算法系列之快速排序算法
  5. html玫瑰花效果代码,html5渲染3D玫瑰花情人节礼物js特效代码
  6. 6-6-3:STL之map和set——multiset和multimap及set和map在oj题中的用处
  7. CCF 2017-3-2 学生排队
  8. 2.2 Mnist手写数据集
  9. 支付宝 应用网关和授权回调地址怎么配置?
  10. C++ 一个简单的log类的实现
  11. win10电脑防火墙在哪里设置
  12. matlab给函数积分,MATLAB函数积分
  13. nanomsg交叉编译
  14. Unity3D组件 | 绘制静态柱状图
  15. wifi模块服务器项目心得,一次关于WiFi 驱动移植的总结复盘
  16. UHF RFID 读卡实验
  17. 关掉win10电脑hyper-v虚拟机方法
  18. 设备管理器,其他设备,PCI数据捕获和信号处理控制器出现感很多未知设备感叹号,通用解决方法,以华为matebook为例
  19. linux freetype 安装
  20. 有三个数abc 要求按大小顺序把它们输出_认识数字、比大小、凑十法… 孩子们做做手工玩玩游戏就OK了...

热门文章

  1. c语言删除链表中特定元素,单链表的删除某个元素的操作
  2. 真实经历:中国移动抢市场的卑劣手段
  3. 用python实现论文中的箱线图(盒图) 黑白色 新罗马字体
  4. u8服务器配置文档,u8云服务器配置
  5. 使用Python设计一个自动查询文件夹的exe文件
  6. python前程无忧scrapy存mogondb案例+可视化显示
  7. eclipse中文乱码问题
  8. 256. Spinnaker介绍(企业级K8S自动化运维平台)
  9. jna-platform 简介、中文文档、中英对照文档 下载
  10. Laravel框架上传文件到OSS