专栏介绍:本栏目为 “2021秋季中国科学院大学胡玥老师的自然语言处理” 课程记录,不仅仅是课程笔记噢~ 如果感兴趣的话,就和我一起入门NLP吧
目录
- 1. 词表示概述
-
- 2. 经典词向量表示模型
-
- 1.NNLM模型词向量
- 2.RNNLM模型词向量
- 3.C&W 模型词向量
- 4.CBOW / Skip-gram 模型词向量
-
- CBOW结构
- Skip-gram结构
- Word2vec
- 小结
- 3. 词向量特性
1. 词表示概述
词的表示
- 自然语言问题要用计算机处理时,第一步要找一种方法把这些符号数字化,成为计算机方便处理的形式化表示。
离散表示
One-hot 表示
- NLP 中最直观,也是最常用的词表示方法。
- 如:减肥[00000010000],瘦身[00000000001]
- 每一个位置代表一个词
- 优势:稀疏方式存储非常的简洁
- 不足:词汇鸿沟,维数灾难
词袋模型
- 每个数表示该词在文档出现的次数(One-hot的加和)
TF_IDF
分布式表示
- 核心思想:用一个词附近的其他词来表示该词
- 分布式假设:在相同上下文中出现的词倾向于具有相同的含义 [Harris ,1954]如,Marco saw a hairy little wampinuk Crouching behind a tree .wampinuk 的含义可由其上下文推断。
- 分布式语义学:根据词语在大型文本语料中的分布特性量化词语及词语语义相似性。
基于预测的分布式表示 (神经网络词向量)
- 不计算词之间的共现频度,直接用“基于词的上下文词来预测当前词”或“基于当前词预测上下文词”的方法构造构造低维稠密向量作为词的分布式表示 。
- 深度学习自然语言处理技术中,词向量是神经网络技术中重要的组成部分
词向量(词嵌入)
- 词嵌入在2001年首次出现。而 Mikolov 等人在2013年作出的主要创新是通过删除隐藏层和近似目标来使这些单词嵌入的训练更有效。虽然这些变化本质上很简单,但它们与高效的 word2vec(word to vector,用来产生词向量的相关模型)组合在一起,使得大规模的词嵌入模型训练成为可能。
2. 经典词向量表示模型
1.NNLM模型词向量
在上一篇博客介绍NNLM时,我们引出过一个问题,即词以什么样的形式输出的模型中?在学习了词表示之后,我们可以考虑用one-hot的形式输入,但是会导致维度过高的问题。
NNLM输入表示:采用低维稠密向量降维
- 具体是指:用一个DxV大小的矩阵(称之为look-up表)乘以onehot组成的高维矩阵得到D维稠密向量,最后将这个D维词向量输入模型。
- 稠密向量表示Look-up表是|D|ⅹ| V|维实数投影矩阵,| V|表示词表的大小,|D|表示词向量e的维度(一般50维以上);
- 各词的词向量存于look-up表中。词w 到其词向量e(w) 的转化是从该矩阵中取出相应的列。(这是因为onehot表示导致每行只有一个数为0)
- NNLM模型作用: NNLM 语言模型在训练语言模型(即输出了条件概率)同时也训练了词向量(即训练了look-up表)
2.RNNLM模型词向量
RNNLM与NNLM相似,也是通过look-up表存储词向量
- RNNLM 语言模型在训练语言模型同时也训练了词向量
上面介绍的NNLM和RNNLM实际上是语言模型,在上一篇博客中也重点介绍过,她们在训练语言模型的同时,也训练了look-up表中的词向量,而下面要介绍的这几个模型,他们是专门用来训练词向量的。
3.C&W 模型词向量
特点
- C&W 模型的目标函数是求目标词w 与其上下文c 的联合打分,而其他模型均为根据上下文c,预测目标词w。
结构
- 输出:对输入序列打分(正样本打高分、负样本打低分)
- 隐藏层:上下文和目标词的联合表示
- 输入:目标词Wi及其上下文x = [e(w i-(n-1) ),…, e(wi),…, e(w i+(n-1) )]
学习
- 优化目标:对于整个语料最小化:
- (w,c) :c 表示目标词 w 的上下文
- 正样本(w,c):来自语料
- 负样本(w’c):将正样本序列中的中间词替换成其它词
C&W模型与NNLM模型对比
- C&W:目标词在输入层,输出层只有1个节点,最后一层只需|h|次运算
- NNLM:目标词在输出层,输出层有|V|个节点,最后一层需|Vlⅹ|h|次运算,且需要进行softmax运算。
C&W 模型在运算速度上优于NNLM模型,但在许多语言学任务上,效果不如其它模型。
4.CBOW / Skip-gram 模型词向量
相比于NNLN模型,CBOW / Skip-gram 模型做了一些简化,除去了隐藏层,除去的词序。
CBOW 和 Skip-gram 很相似,CBOW 用周围词预测中心词,Skip-gram用中心词预测周围词☕。
CBOW结构
Skip-gram结构
CBOW / Skip-gram模型中softmax优化问题:计算 y 中的每个分量的值非常耗时,实际运算中采用层级softmax 函数优化。
Word2vec
基于CBOW/Skip-gram模型的词向量工具:
- Word2vec 是Google开源的将词表征为实数值向量的高效工具,其利用深度学习的思想,可以通过训练,把对词的处理简化为K维向量空间中的向量运算Word2vec训练得到的词向量可以用于机器翻译,相似词查找,关系挖掘,中文聚类等任务中。
小结
- NNLM本是语言模型,输出条件概率,因此输入是上文,输出是当前目标词
- C&W是专门用来训练词向量的,输出上下文和目标词的联合打分,所以输入是上中下
- CBOW本是做中心词预测的,输入是上下文,输出目标词概率
- Skip-gram本是做上下文预测的,输入中心词,输出上下文概率。
- CBOW/Skip-gram没有隐藏层,模型会相对简单。
3. 词向量特性
1️⃣语义相似的词,其词向量空间距离更相近 (分布假说 )
- 优点:降维,消除词汇鸿沟其语言模型自带平滑功能
- 应用:同义词检测、单词类比、语义相似度度量等
2️⃣相似关系词对的词向量之差也相似
词向量实验可以参考这篇博客:NLP作业二:中英文语料训练CBOW模型获得词向量(pytorch实现)【代码+报告】