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

文章目录

  • 一、词向量基础知识
    • [1.1 One-hot表示](#1.1 One-hot表示)
    • [1.2 Distributed表示](#1.2 Distributed表示)
  • 二、word2vec基础知识
    • [2.1 CBOW和Skip-gram](#2.1 CBOW和Skip-gram)
  • [三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型](#三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型)
    • [3.1 CBOW 模型](#3.1 CBOW 模型)
    • [3.2 Skip-gram 模型](#3.2 Skip-gram 模型)
  • 参考资料

由于计算机不能直接对各种字符进行运算,为此需要将词的表示进行一些转换。因此,在自然语言处理中,通常需要对输入的语料进行一些预处理:

其中,如何对词汇进行表示是很关键的问题,糟糕的表示方法容易导致所谓的 "Garbage in, garbage out"。

一、词向量基础知识

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

1.1 One-hot表示

One-hot represention 将词汇用二进制向量表示,这个向量表示的词汇,仅仅在词汇表中的索引位置处为1,其他地方都为0。例子如下图所示:

这样的方式表示词汇虽然简单,但是也有如下缺点:

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

1.2 Distributed表示

Distributed Representation 也可以理解为Word Embedding,具体形式为:

注意到,使用Word Embedding得到的向量维度远小于词汇表的个数。如果将上面的向量在空间中表示,可以得到:

上图告诉我们,通过词向量之间的距离可以度量他们之间的关系,意思相近的词在空间中的距离比较近。出现这种现象的原因是最后得到的词向量在训练过程中学习到了词的上下文。

那么,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模型: 在已知上下文 w t − 2 , w t − 1 , w t + 1 w t + 2 w_{t-2}, w_{t-1}, w_{t+1} w_{t+2} wt−2,wt−1,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} wt−2,wt−1,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} wt−2,wt−1,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模型的网络结构:

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

  • 输入层:包含 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)为例说明。如下图所示:

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

  • 输入层:只包含当前样本中心词 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,所以:

其中:

所以我们的优化目标是:

采用随机梯度上升法将这个函数最大化。

参考资料

相关推荐
FF-Studio6 小时前
【硬核数学】3. AI如何应对不确定性?概率论为模型注入“灵魂”《从零构建机器学习、深度学习到LLM的数学认知》
大数据·人工智能·深度学习·机器学习·数学建模·自然语言处理·概率论
羊小猪~~8 小时前
【NLP入门系列四】评论文本分类入门案例
人工智能·自然语言处理·分类
一ge科研小菜鸡18 小时前
云原生环境下部署大语言模型服务:以 DeepSeek 为例的实战教程
人工智能·语言模型·自然语言处理
zeroporn10 天前
以玄幻小说方式打开深度学习词嵌入算法!! 使用Skip-gram来完成 Word2Vec 词嵌入(Embedding)
人工智能·深度学习·算法·自然语言处理·embedding·word2vec·skip-gram
Zhijun.li@Studio10 天前
【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程
人工智能·自然语言处理·llama·多模态大模型
lgbisha10 天前
华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建自己的AI写作神器
人工智能·ai·语言模型·自然语言处理·华为云·ai写作
大模型最新论文速读10 天前
Agent成本降低46%:缓存规划器的思路模板
人工智能·深度学习·机器学习·缓存·语言模型·自然语言处理
unityのkiven10 天前
Happy-LLM task2 第一章 NLP 基础概念(2天)
人工智能·自然语言处理
东临碣石8210 天前
【AI论文】扩展大型语言模型(LLM)智能体在测试时的计算量
人工智能·语言模型·自然语言处理
H4ppyD0g10 天前
预训练语言模型基础知识概述
人工智能·语言模型·自然语言处理