场景:上次回答word2vec相关的问题,回答的是先验概率和后验概率,没有回答到关键点。

词袋模型(Bag of Words, BOW)与词向量(Word Embedding)模型

  • 词袋模型就是将句子分词,然后对每个词进行编码,常见的有one-hot、TF-IDF、Huffman编码,假设词与词之间没有先后关系。
  • 词向量模型是用词向量在空间坐标中定位,然后计算cos距离可以判断词于词之间的相似性。

先验概率和后验概率

先验概率和后验证概率是基于词向量模型。首先一段话由五个词组成:
A B C D E
对C来说:先验概率指ABDE出现后C出现的概率,即P(C|A,B,D,E)
可以将C用ABDE出现的概率来表示 Vector(C) = [P(C|A), P(C|B), P(C|D), P(C|E) ]
后验概率指C出现后ABDE出现的概率:即P(A|C),P(B|C),P(D|C),P(E|C)

n-gram

先验概率和后验概率已经知道了,但是一个句子很长,对每个词进行概率计算会很麻烦,于是有了n-gram模型。
该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。
一般情况下我们只计算一个单词前后各两个词的概率,即n取2, 计算n-2,.n-1,n+1,n+2的概率。
如果n=3,计算效果会更好;n=4,计算量会变得很大。

cbow

cbow输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量,即先验概率。
训练的过程如下图所示,主要有输入层(input),映射层(projection)和输出层(output)三个阶段。

skip-gram

Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量,即后验概率。训练流程如下:

word2vec中的Negative Sampling概述

传统网络训练词向量的网络:

word2vec训练方法和传统的神经网络有所区别,主要解决的是softmax计算量太大的问题,采用Hierarchical SoftmaxNegative Sampling模型。
word2vec中cbow,skip-gram都是基于huffman树然后进行训练,左子树为1右子树为0,同时约定左子树权重不小于右子树。
构建的Huffman树如下:

其中,根节点的词向量对应我们的投影后的词向量,而所有叶子节点就类似于之前神经网络softmax输出层的神经元,叶子节点的个数就是词汇表的大小。在霍夫曼树中,隐藏层到输出层的softmax映射不是一下子完成的,而是沿着霍夫曼树一步步完成的,因此这种softmax取名为"Hierarchical Softmax"。

因为时间有限,暂时总结这些,下一次详细看一下word2vec中的实现。

参考:
word2vec原理(一) CBOW与Skip-Gram模型基础
word2vec原理(二) 基于Hierarchical Softmax的模型
自己动手写word2vec (四):CBOW和skip-gram模型

cbow与skip-gram的更多相关文章

  1. DeepLearning.ai学习笔记(五)序列模型 -- week2 自然语言处理与词嵌入

    一.词汇表征 首先回顾一下之前介绍的单词表示方法,即one hot表示法. 如下图示,"Man"这个单词可以用 \(O_{5391}\) 表示,其中O表示One_hot.其他单词同 ...

  2. NLP学习(4)----word2vec模型

    一. 原理 哈弗曼树推导: https://www.cnblogs.com/peghoty/p/3857839.html 负采样推导: http://www.hankcs.com/nlp/word2v ...

  3. 关于 word2vec 如何工作的问题

    2019-09-07 22:36:21 问题描述:word2vec是如何工作的? 问题求解: 谷歌在2013年提出的word2vec是目前最常用的词嵌入模型之一.word2vec实际是一种浅层的神经网 ...

  4. Paddle Graph Learning (PGL)图学习之图游走类模型[系列四]

    Paddle Graph Learning (PGL)图学习之图游走类模型[系列四] 更多详情参考:Paddle Graph Learning 图学习之图游走类模型[系列四] https://aist ...

  5. word2vec (CBOW、分层softmax、负采样)

    本文介绍 wordvec的概念 语言模型训练的两种模型CBOW+skip gram word2vec 优化的两种方法:层次softmax+负采样 gensim word2vec默认用的模型和方法 未经 ...

  6. tensorflow在文本处理中的使用——CBOW词嵌入模型

    代码来源于:tensorflow机器学习实战指南(曾益强 译,2017年9月)——第七章:自然语言处理 代码地址:https://github.com/nfmcclure/tensorflow-coo ...

  7. Tensorflow 的Word2vec demo解析

    简单demo的代码路径在tensorflow\tensorflow\g3doc\tutorials\word2vec\word2vec_basic.py Sikp gram方式的model思路 htt ...

  8. Word2Vec总结

    摘要: 1.算法概述 2.算法要点与推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 Word2Vec是一个可以将语言中的字词转换为向量表达(Vecto ...

  9. Coursera, Deep Learning 5, Sequence Models, week2, Natural Language Processing & Word Embeddings

    Word embeding 给word 加feature,用来区分word 之间的不同,或者识别word之间的相似性. 用于学习 Embeding matrix E 的数据集非常大,比如 1B - 1 ...

  10. lecture2-word2vec-七月在线nlp

    离散表示: one-hot bag of words -- 词权重 ~不能表示顺序关系   TF-IDF (Term Frequency - Inverse Document Frequency) [ ...

随机推荐

  1. Spring框架学习06——AOP底层实现原理

    在Java中有多种动态代理技术,如JDK.CGLIB.Javassist.ASM,其中最常用的动态代理技术是JDK和CGLIB. 1.JDK的动态代理 JDK动态代理是java.lang.reflec ...

  2. Luogu

    dalao们的博客a http://hzwer.com   //Orz  %%% https://oi-wiki.org  //Orz https://www.cnblogs.com/-guz/p/9 ...

  3. sublime使用技巧之添加到右键菜单、集成VI

    熟悉开发工具,减少多余的操作流程有助于提高开发效率,而Sublime Text 2是sublime产品的经典版本,因此本文基于Sublime Text 2讲解sublime的使用技巧. VI的主要作用 ...

  4. 利用Solr服务建立的站内搜索雏形

    最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀.总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下, ...

  5. manjaro 配置 独立显卡驱动

    参考 https://blog.csdn.net/weixin_42205310/article/details/81905293 尝试多次 只有这篇配置成功. ①先解决依赖sudo pacman - ...

  6. mfc调用cmd执行完保留黑框

    mfc调用cmd的方法有很多,本文采用 ShellExecute ShellExecute(AfxGetMainWnd()->m_hWnd,L"open",L"cm ...

  7. 51Nod1577 异或凑数 线性基 构造

    国际惯例的题面:异或凑出一个数,显然是线性基了.显然我们能把区间[l,r]的数全都扔进一个线性基,然后试着插入w,如果能插入,则说明w不能被这些数线性表出,那么就要输出"NO"了. ...

  8. pycharm引入numpy报错:ImportError: Importing the multiarray numpy extension module failed. Most likely you are trying to import a failed build of numpy.

    软件为pycharm,安装了anaconda. 我一开始的报错为,PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named 'numpy',这个 ...

  9. eclipse中配置server

    打开Eclipse,在打开上面的help--- install new software---- work with 里面点开选择--All Available Sites-- 等下面的pending ...

  10. .w调用action

    有两种方法发送Action请求,分别是sendBizRequest和sendBizRequest2,前者返回xml格式的参数,后者提供了返回json或者xml格式的参数的能力. 1.sendBizRe ...