Introduction and Word Vectors
word vector
词向量:一个用来表达一个词的意思的向量。
在这个图片中,我们假象每个维度都代表了一个清晰定义的意思。例如,你可以想象第一个维度代表animal,每个词汇在这个维度的权重代表了与这个意思或概念的相近度。
文本表示:从one-hot到word2vec
文本表示:把字词处理成向量或矩阵,以便计算机能进行处理。文本表示是自然语言处理的开始环节。
文本表示分为离散表示和分布式表示。离散表示的代表就是词袋模型,one-hot(也叫独热编码)、TF-IDF、n-gram都可以看作是词袋模型。分布式表示也叫做词嵌入(word embedding),经典模型是word2vec,还包括后来的Glove、ELMO、GPT和BERT。
one-hot
one-hot向量表示为ti=[0,0,0,…,1,…0],长度等于特征数目。这个向量的表示为一项属性的特征向量,只有一个特征是不为0的,其他都是0。
优点:解决了分类器不好处理离散数据的问题;在一定程度上也起到了扩充特征的作用。
缺点:在文本特征表示上有些缺点就非常突出。首先,它是一个词袋模型,不考虑词与词之间的顺序(文本中词的顺序信息也是很重要的);其次,它假设词与词相互独立(在大多数情况下,词与词是相互影响的);最后,它得到的特征是离散稀疏的。
为了解决上述问题,有了word2vec的出现。
word2vec
word2vec模型是简单化的神经网络。既然是神经网络,就有对应的输入层,隐层与输出层。输入就是上边提到的One-Hot Vector,隐层没有激活函数,只是线性的单元。输出层维度跟输入层一样,用的是Softmax回归。
word2vec主要包含两个模型:CBOW和skip-gram,以及两种高效训练的方法:负采样(negative sampling)和层序softmax(hierarchical softmax)。
CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。
Skip-gram模型
Skip-gram是给定input word来预测上下文。所谓一个单词的上下文是指在其窗口中出现的词(一般情况窗口的size选5左右,即这个中心词的前5个词和后5个词,上下文词一共是10个词)。
给出训练词w1,w2,w3,…,wt ,Skip-gram模型的目标是最大化对数日志概率:
其中c是训练上下文(可以是中心单词wt的一个函数)的大小。较大的c意味着更多的训练例,因此可以导致更高的准确性,同时也意味着更多的训练时间。
如何求这个P(wt+j | wt;θ)?基本Skip-gram公式使用softmax函数:
其中Vw和V′w分别为w的输入和输出向量表示,W为词汇表中的单词数。
层序Softmax
Hierarchical softmax是完全softmax的计算效率近似。它的主要优点是不需要评估神经网络中的W个输出节点以获得概率分布,仅需要评估约log2(W)个节点:
负采样(Negative Sampling)
使用负采样,每个训练样本只修改模型的一小部分权重,而不是全部的权重: