【自然语言处理】理解词向量、CBOW与Skip-Gram模型

这篇具有很好参考价值的文章主要介绍了【自然语言处理】理解词向量、CBOW与Skip-Gram模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


由于计算机不能直接对各种字符进行运算,为此需要将词的表示进行一些转换。因此,在自然语言处理中,通常需要对输入的语料进行一些预处理:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
其中,如何对词汇进行表示是很关键的问题,糟糕的表示方法容易导致所谓的 “Garbage in, garbage out”。

一、词向量基础知识

对词汇的表示,常见的有One-hot representionDistributed Representation 两种形式。

1.1 One-hot表示

One-hot represention 将词汇用二进制向量表示,这个向量表示的词汇,仅仅在词汇表中的索引位置处为1,其他地方都为0。例子如下图所示:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
这样的方式表示词汇虽然简单,但是也有如下缺点:

  • 单词的上下文丢失了。
  • 没有考虑频率信息。
  • 词汇量大的情况下,向量维度高且稀疏,占用内存。

1.2 Distributed表示

Distributed Representation 也可以理解为Word Embedding,具体形式为:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
注意到,使用Word Embedding得到的向量维度远小于词汇表的个数。如果将上面的向量在空间中表示,可以得到:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
上图告诉我们,通过词向量之间的距离可以度量他们之间的关系,意思相近的词在空间中的距离比较近。出现这种现象的原因是最后得到的词向量在训练过程中学习到了词的上下文。

那么,Distributed Representation 要如何得到?

  • 使用神经网络语言模型可以得到;
  • 使用word2vec。

二、word2vec基础知识

word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。在正式讲解 word2vec 前,还需要对一些基本概念有所了解。

2.1 CBOW和Skip-gram

CBOW模型(Continuous Bag-of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。如下图所示:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
由图可见,两个模型都包含三层:输入层、投影层和输出层。区别在于:

  • CBOW模型: 在已知上下文 w t − 2 , w t − 1 , w t + 1 w t + 2 w_{t-2}, w_{t-1}, w_{t+1} w_{t+2} wt2,wt1,wt+1wt+2的前提下预测当前词 w t w_t wt
  • Skip-gram模型: 在已知当前词 w t w_t wt的前提下预测上下文 w t − 2 , w t − 1 , w t + 1 w t + 2 w_{t-2}, w_{t-1}, w_{t+1} w_{t+2} wt2,wt1,wt+1wt+2

三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型

3.1 CBOW 模型

CBOW 模型是 在已知上下文 w t − 2 , w t − 1 , w t + 1 w t + 2 w_{t-2}, w_{t-1}, w_{t+1} w_{t+2} wt2,wt1,wt+1wt+2的前提下预测当前词 w t w_t wt 。后面我们用 c o n t e x t ( w ) context(w) context(w)来表示词 w w w的上下文中的词,通常,我们取词 w w w前后 2 2 2c个单词来组成 c o n t e x t ( w ) context(w) context(w)。下图给出了CBOW模型的网络结构:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理

它包括三层:输入层、投影层、输出层。

  • 输入层:包含 c o n t e x t ( w ) context(w) context(w)中的 2 c 2c 2c个词向量 v ( c o n t e x t ( w ) 1 ) , v ( c o n t e x t ( w ) 2 ) , … , v ( c o n t e x t ( w ) 2 c ) ∈ R m \mathbf v(context(w)_1),\mathbf v(context(w)_2),\ldots,\mathbf v(context(w)_{2c}) \in \mathbf R^m v(context(w)1),v(context(w)2),,v(context(w)2c)Rm
    ,每个词向量的长度是 m m m
  • 投影层:将输入层的 2 c 2c 2c个词向量累加求和,即 x w = ∑ i = 1 2 c v ( c o n t e x t ( w ) i ) \mathbf x_w = \sum_{i=1}^{2c}\mathbf v(context(w)_i) xw=i=12cv(context(w)i)
  • 输出层:输出层是用哈夫曼算法以各词在语料中出现的次数作为权值生成的一颗二叉树,其叶子结点是语料库中的所有词,叶子个数 N = ∣ D ∣ N=|D| N=D,分别对应词典D中的词。

神经网络语言模型(NNLM)中大部分计算集中在隐藏层和输出层之间的矩阵向量运算,以及输出层上的softmax归一化运算,CBOW模型对此进行了改进。与传统的神经网络语言模型相比:

  • NNLM是简单的将输入的向量进行拼接,而CBOW模型将上下文的词累加求和作为输入;
  • NNLM是线性结构,而CBOW是树形结构
  • NNLM具有隐藏层,而CBOW没有隐藏层

3.2 Skip-gram 模型

Skip-gram 模型的结构也是三层,下面以样本 ( w , c o n t e x t ( w ) (w,context(w) (w,context(w)为例说明。如下图所示:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
它也包括三层:输入层、投影层、输出层。

  • 输入层:只包含当前样本中心词 w w w词向量 v ( w ) ∈ R m \mathbf v(w) \in \mathbf R^m v(w)Rm,每个词向量的长度是 m m m
  • 投影层:恒等投影,即和输入层一样,保留是为了与CBOW对比。
  • 输出层:与CBOW类似

对于Skip-gram模型,已知的是当前词 w w w,需要对其上下文 c o n t e x t ( w ) context(w) context(w)中的词进行预测,所以:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
类似于CBOW,所以:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
其中:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理

所以我们的优化目标是:
【自然语言处理】理解词向量、CBOW与Skip-Gram模型,自然语言处理
采用随机梯度上升法将这个函数最大化。文章来源地址https://www.toymoban.com/news/detail-718264.html

参考资料

  • 【AI理论学习】理解词向量、CBOW与Skip-Gram模型

到了这里,关于【自然语言处理】理解词向量、CBOW与Skip-Gram模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自然语言处理从入门到应用——动态词向量预训练:双向语言模型

    分类目录:《自然语言处理从入门到应用》总目录 对于给定的一段输入文本 w 1 w 2 ⋯ w n w_1w_2cdots w_n w 1 ​ w 2 ​ ⋯ w n ​ ,双向语言模型从前向(从左到右)和后向(从右到左)两个方向同时建立语言模型。这样做的好处在于,对于文本中任一时刻的词 w t w_t w t ​ ,可以

    2024年02月10日
    浏览(52)
  • 自然语言处理从入门到应用——动态词向量预训练:ELMo词向量

    分类目录:《自然语言处理从入门到应用》总目录 在双向语言模型预训练完成后,模型的编码部分(包括输入表示层以及多层堆叠LSTM)便可以用来计算任意文本的动态词向量表示。最自然的做法是使用两个LSTM的最后一层隐含层输出作为词的动态向量表示。然而,在ELMo模型中

    2024年02月09日
    浏览(59)
  • 自然语言处理(四):全局向量的词嵌入(GloVe)

    全局向量的词嵌入(Global Vectors for Word Representation),通常简称为GloVe,是一种用于将词语映射到连续向量空间的词嵌入方法。它旨在捕捉词语之间的语义关系和语法关系,以便在自然语言处理任务中能够更好地表示词语的语义信息。 GloVe的设计基于两个观察结果:共现矩阵(

    2024年02月11日
    浏览(49)
  • 自然语言处理-词向量模型-Word2Vec

    通常数据的维度越高,能提供的信息也就越多,从而计算结果的可靠性就更值得信赖 如何来描述语言的特征呢,通常都在词的层面上构建特征,Word2Vec就是要把词转换成向量 假设现在已经拿到一份训练好的词向量,其中每一个词都表示为50维的向量 如果在热度图中显示,结果

    2024年02月09日
    浏览(53)
  • 2.自然语言处理NLP:词映射为向量——词嵌入(word embedding)

    1. 什么是词嵌入(word2vec) : 把词映射为向量(实数域)的技术 2. 为什么不采用one-hot向量: one-hot词向量无法准确表达不同词之间的相似度,eg:余弦相似度,表示夹角之间的余弦值,无法表达不同词之间的相似度。 3. word2vec主要包含哪两个模型 跳字模型: 基于某个词生成

    2024年02月06日
    浏览(55)
  • Elasticsearch的自然语言处理与理解

    自然语言处理(NLP)是计算机科学和人工智能领域的一个重要分支,旨在让计算机理解、处理和生成人类自然语言。随着数据的爆炸增长,传统的NLP技术已经无法满足现实生活中的需求。因此,大规模分布式搜索引擎Elasticsearch成为了NLP的重要工具之一。 Elasticsearch是一个基于L

    2024年02月21日
    浏览(43)
  • 自然语言处理从入门到应用——LangChain:索引(Indexes)-[向量存储器(Vectorstores)]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月12日
    浏览(71)
  • 自然语言处理的崛起:从初步分析到深度理解

    自然语言处理(NLP)是计算机科学、人工智能和语言学的交叉领域,旨在让计算机能够理解和生成人类语言。随着时间的推移,NLP 经历了一系列革命性的变化,从简单的规则和模式匹配到如今的深度学习模型,它们使计算机的理解能力接近人类水平。 早期的NLP系统基于一系

    2024年01月23日
    浏览(57)
  • 自然语言处理从入门到应用——全局向量的词嵌入:GloVe(Global Vectors for Word Representation)词向量

    分类目录:《自然语言处理从入门到应用》总目录 无论是基于神经网络语言模型还是word2vec的词向量预训练方法,本质上都是利用文本中词与词在局部上下文中的共现信息作为自监督学习信号。除此之外,另一类常用于估计词向量的方法是基于矩阵分解的方法,例如潜在语义

    2024年02月09日
    浏览(46)
  • 自然语言处理从入门到应用——静态词向量预训练模型:神经网络语言模型(Neural Network Language Model)

    分类目录:《自然语言处理从入门到应用》总目录 《自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)》中介绍了语言模型的基本概念,以及经典的基于离散符号表示的N元语言模型(N-gram Language Model)。从语言模型的角度来看,N元语言模型存在明显

    2024年02月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包