skip-gram训练word2vec论文阅读笔记

随着google bert的面试,以及一系列的推演和变种,人们越来越淡忘了word2vec,由于bert预训练的词向量模型参数太大,运行效率大大减少,所以在个别任务还是推荐使用wordvec。
 

1. Distributed Representations of Words and Phrases
and their Compositionality

1.1摘要:

最近引入的连续Skip-gram模型是一种学习高质量的分布式矢量表示的有效方法,该表示可以捕获大量精确的句法和语义词关系。另外论文提出了几种扩展,它们既提高了词向量的质量,又提高了训练速度。 通过对频繁出现的单词进行二次采样,不仅获得了明显的加速,而且还学习了更多常规的单词表示形式。 论文中还描述了用于替代分层softmax的简单方案,称为负采样。

1.2引言:

向量空间中单词的分布式表示在自然语言处理任务中通过对相似单词进行分组可帮助算法来实现更好的性能。论文中,介绍了原始Skip-gram 模型 几个扩展类型。

skip-gram训练word2vec论文阅读笔记_第1张图片

Figure 1: The Skip-gram model architecture. The training objective is to learn word vector representations
that are good at predicting the nearby words.

1.3The Skip-gram Model

给定训练word ,目标函数为:

skip-gram训练word2vec论文阅读笔记_第2张图片

其中baseline skip-gram模型的 使用softmax函数计算:

skip-gram训练word2vec论文阅读笔记_第3张图片

其中是输出向量,v是输入向量,W是总词汇数量。

1.3.1Hierarchical Softmax

分层softmax 目标函数为:

其中,n(w,j)是从根到w的路径上的第j个节点,令L(w)是该路径的长度,因此n(w,1)=root 并且n(w,L( w))= w。

1.3.2Negative Sampling

一种替代分层softmax的方法是使用NCE loss,NCE的思想,认为好的模型应该能够通过逻辑回归将数据与噪声区分开。google 教程提供tensorflow word2vec模型就是使用NCE loss。由于skip-gram只是学习词向量的表示,论文讲NCE简化为NEG,其目标函数如下:

skip-gram训练word2vec论文阅读笔记_第4张图片

1.3.3Subsampling of Frequent Words

为了平衡稀有词和常见词之间的平衡,并提高稀有词的向量表示,提出了子采样,当词w的词频大于t,则以一定的概率丢弃,丢弃概率计算如下图:

skip-gram训练word2vec论文阅读笔记_第5张图片

2.Ngram2vec: Learning Improved Word Representations from NgramCo-occurrence Statistics

上篇论文主要提出共现学习词向量的表示,这篇论文在共现的基础上提出了以及共现。

该论文主要提出三个不同方式构建共现。

2.1.词预测词:与skip-gram一样

skip-gram训练word2vec论文阅读笔记_第6张图片

其目标函数为:skip-gram训练word2vec论文阅读笔记_第7张图片

 

2.2词预测ngram

skip-gram训练word2vec论文阅读笔记_第8张图片

其目标函数和词预测词一样,只是窗口范围不一样。

skip-gram训练word2vec论文阅读笔记_第9张图片

2.3.ngram预测ngram

skip-gram训练word2vec论文阅读笔记_第10张图片

其目标函数为:

skip-gram训练word2vec论文阅读笔记_第11张图片

其中 

Nc是上下文ngram的顺序。

优点:不仅可以学习词共现信息,还可以学习ngram共现学习。

缺点:词汇量太大,需要统计word,ngram作为词汇。

3.Two/Too Simple Adaptations of Word2Vec for Syntax Problems

3.1摘要

论文对流行的Word2Vec工具中的模型进行了两个简单的修改,以生成更适合涉及语法任务的嵌入。 原始模型的主要问题是它们对单词顺序不敏感。 尽管依序关系对诱导语义表示很有用,但是当它们用于解决基于语法的问题时,这会导致结果不理想。 论文展示了使用提出的structed Word2vec对模型有很大的改进。

3.2structed skip-gram

skip-gram 模型通过给定中心词w0的嵌入,输出 O∈| V |×d预测每个上下文词 ,wc,...,w-1,w1,...,wc。 论文提出了对模型进行了调整,以使其对单词的位置敏感。 通过定义了一组c×2个输出预测变量Oc,...,O-1,O1,Oc,大小为O∈(| V |)×d, 每个输出矩阵专用于预测相对于中心的特定相对位置的输出词,如图所示:

skip-gram训练word2vec论文阅读笔记_第12张图片

在模型预测p(wo | wi)时,选择适当的输出矩阵Oo-i来将单词嵌入投影到输出矢量。

优点:可以很好地学习词与词之间的位置信息。

缺点:模型参数太多,需要多个窗口位置信息,导致模型训练速度很慢。

4.Directional Skip-Gram: Explicitly Distinguishing Left and Right Context for Word Embeddings

4.1摘要

论文提出了DSG模型,一种通过显式区分左右上下文,简单有效地改进的skip-gram模型。作者通过为每个单词引入了方向向量,因此不仅通过其上下文中的单词共现模式还可以通过其上下文单词的方向来学习其嵌入。

4.2skip-gram model

skip-gram训练word2vec论文阅读笔记_第13张图片

skip-gram训练word2vec论文阅读笔记_第14张图片

其中 f\left (w_{t+i},w_{t} \right )=p\left ( w_{t+i}|w_{t} \right ),是输出向量, v是输入向量。

4.3Directional Skip-Gram Model

其中预测输出为

优点:相对于skip-gram模型能够学习词左右上下文关系,参数相对于structed skip-gram小很多,腾讯AILab开源的embedding使用该wordembedding。

5.开源wordembedding

腾讯开源词向量: https://ai.tencent.com/ailab/nlp/en/embedding.html

上百种预训练中文词向量:  cihttps://github.com/yanqiuxia/Chinese-Word-Vectors

使用tensorflow写的skip-gram 训练word2vec: 我自己写的一个代码 https://github.com/yanqiuxia/word2vec

6.应用

1.查询扩展

可以使用已有训练好的wordembedding扩展查询term,测试开源这两款词向量,腾讯开源词向量扩展后的term更相关。

2.获得相似词

3.作为深度学习例如文本分类、实体识别的wordembedding。

你可能感兴趣的:(论文,自然语言处理,深度学习,tensorflow,神经网络)