NLP基础笔记5——词向量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/IOT_victor/article/details/87914076

一、什么是词向量

词向量是将字、词语转换成向量矩阵的计算模型。目前为止最常用的词表示方法是 One-hot,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。还有 Google 团队的  Word2Vec,值得一提的是,Word2Vec 词向量可以较好地表达不同词之间的相似和类比关系。除此之外,还有一些词向量的表示方式,如 Doc2Vec、WordRank 和 FastText 等。

二、Word2Vec

Google 团队的  Word2Vec,其主要包含两个模型:跳字模型(Skip-Gram)和连续词袋模型(Continuous Bag of Words,简称 CBOW),以及两种高效训练的方法:负采样(Negative Sampling)和层序 Softmax(Hierarchical Softmax)。

word2vec作为神经概率语言模型的输入,其本身其实是神经概率模型的副产品,是为了通过神经网络学习某个语言模型而产生的中间结果。具体来说,“某个语言模型”指的是“CBOW”和“Skip-gram”。具体学习过程会用到两个降低复杂度的近似方法——Hierarchical Softmax或Negative Sampling。两个模型乘以两种方法,一共有四种实现。

2.1 模型结构(CBOW和Skip-Gram)

两个算法:

  • Skip-grams (SG):预测上下文

  • Continuous Bag of Words (CBOW):预测目标单词

CS224n中的只讲到了Naive Softmax

Skipgram(以CS224n讲解为例)

wt :以one-hot vector 形式输入的“中心词汇”

W : 所有中心词汇的表示所组成的矩阵(第一个matrix)

Vc : 中心词向量,即中心词汇的表示

W' : 存储上下文的词汇表示(图中3个矩阵是相同的,只有一个上下文词汇矩阵W')

W'.dot(Vc) :得到对每个词语的“相似度”

Softmax :给定一个中心词汇,作为生成模型,它可以预测在上下文中出现的词汇的概率,与答案对比计算损失

Note: Every word has two vectors! Makes it simpler!

2017-06-07_15-24-56.png

从左到右是one-hot向量,乘以center word的W于是找到词向量,乘以另一个context word的矩阵W'得到对每个词语的“相似度”,对相似度取softmax得到概率,与答案对比计算损失。下图的官方版,一样的意思:

Skip-Gram.png

这两个矩阵都含有V个词向量,也就是说同一个词有两个词向量,哪个作为最终的、提供给其他应用使用的embeddings呢?有两种策略,要么加起来,要么拼接起来。在CS224n的编程练习中,采取的是拼接起来的策略。W中的向量叫input vector,W'中的向量叫output vector。

最小化负的对数似然项,使预测的概率最大化

2.2 训练方法(层次化softmax和负采样)

具体学习过程会用到两个降低复杂度的近似方法——Hierarchical Softmax或Negative Sampling。两个模型乘以两种方法,一共有四种实现。

猜你喜欢

转载自blog.csdn.net/IOT_victor/article/details/87914076