NLP学习(1)---Glove模型---词向量模型

一、简介:

1、概念:glove是一种无监督的Word representation方法。

2、优点:充分有效的利用了语料库的统计信息,仅仅利用共现矩阵里面的非零元素进行训练,而skip-gram没有很有效的利用语料库中的一些统计信息。

3、发展过程:

词向量详细推导:https://blog.csdn.net/liuy9803/article/details/86592392

  (1)one-hot:

词向量的维数为整个词汇表的长度,对于每个词,将其对应词汇表中的位置置为1,其余维度都置为0。

缺点是:

  • 维度非常高,编码过于稀疏,易出现维数灾难问题;
  • 不能体现词与词之间的相似性,每个词都是孤立的,泛化能力差。

(2)向量空间模型VSM:

定义:在给定文档集合C和词典D的条件下,将某篇文档通过词袋模型表示成一个个的词,而后根据 TF-IDF 为每个词计算出一个实数值;

由于词典D的大小为M,因此将这篇文档转化成一个M维向量,如果词典中某个词未出现在文档中,则这个词的在向量中对应的元素为0,若某个词出现在文档中,则这个词在向量中对应的元素值为这个词的tf-idf值。这样,就把文档表示成向量了,而这就是 向量空间模型(vector space model)

而有了文档向量,也就可以用余弦公式计算文档之间的相似度了。

缺点:

  • 相对于onehot加入了tf-idf等信息,向量空间模型并没有catch住词(term)与词(term)之间的关系,它假设各个term之间是相互独立的。一些上下文信息丢失。
  • 在实际应用中,我们并不是直接使用 TF*IDF 这个理论模型,因为它计算出来的权重偏向于短文本因此需要某种平滑

举个例子来说,term1在docA中出现了3次,term2在docA中出现了9次,根据上面计算TF的方式,意味着:term2的tf权重(或者说重要性)比term1要大3倍,那真的是重要3倍么?因此,在Lucene的实际评分模型中,计算的是sqrt(tf),即通过 tf 开根号,起到一定的平滑作用。类似地,计算 idf 时,是取log对数,也是为了平滑。

词向量空间模型的主要思路是出现在类似的上下文环境中的单词在语义上很可能相似。例如,假如我们发现,“咖啡”和“喝”经常同时出现,另一方面,“茶”和“喝”也经常同时出现,那么我们可以推测“咖啡”和“茶”在语义上应该是相似的。则词向量维度为总上下文的词数量。【但如果词料数量很多,则会产生维度过高的问题】

(3)词嵌入:

神经网络将词汇表中的词作为输入,输出一个低维的向量表示,然后使用BP优化参数。

生成词向量的神经网络模型分为两种:

  • 一种的目的是训练可以表示语义关系的词向量,能被用于后续任务中,如word2vec;
  • 另一种是将词向量作为副产品产生,根据特定任务需要训练得到词向量,如fastText。

①学习的概率分布

Word2Vec:【其输出是单词同时出现的概率分布】

GLove:【相比单词同时出现的概率,单词同时出现的概率的比率能够更好地区分单词。】

比如,假设我们要表示“冰”和“蒸汽”这两个单词。对于和“冰”相关,和“蒸汽”无关的单词,比如“固体”,我们可以期望P冰-固体/P蒸汽-固体较大。类似地,对于和“冰”无关,和“蒸汽”相关的单词,比如“气体”,我们可以期望P冰-气体/P蒸汽-气体较小。相反,对于像“水”之类同时和“冰”、“蒸汽”相关的单词,以及“时尚”之类同时和“冰”、“蒸汽”无关的单词,我们可以期望P冰-水/P蒸汽-水、P冰-时尚/P蒸汽-时尚应当接近于1。

②目标函数:最小二乘

Word2Vec:【Word2Vec中隐藏层没有使用激活函数,这就意味着,隐藏层学习的其实是线性关系。】

GLove:【隐藏层使用比神经网络更简单的模型】
词向量是无监督学习少数几个成功的应用之一,优势在于不需要人工标注语料,直接使用未标注的文本训练集作为输入,输出的词向量可以用于下游业务的处理。

③优点:

    • 词向量是无监督学习少数几个成功的应用之一,优势在于不需要人工标注语料,直接使用未标注的文本训练集作为输入,输出的词向量可以用于下游业务的处理。
    • 词向量用于迁移学习:

(1)使用大的语料库训练词向量(或网上下载预训练好的词向量);

(2)将词向量模型迁移到只有少量标注的训练集任务中;

(3)用新的数据微调词向量(如果新的数据集不大,则这一步不是必须的)。

    • 词维度降低

虽然词向量是神经网络的输入,但并非第一层输入。第一层是词的one-hot编码,乘以一个权重矩阵后得到才是词向量化表示,而权重在模型训练阶段是可以更新的。

二、模型

word-word-occurence:共现矩阵,定义为X。

Xij表示wordj出现在wordi周边的次数。

  

猜你喜欢

转载自www.cnblogs.com/Lee-yl/p/11172255.html