1、前言
word2vec是谷歌2013年推出的将文本量化为单词向量的工具,以量化所有单词为特征,可以定量测量单词和单词之间的关系,挖掘单词之间的联系。
2、词的表示
(1 (一)一热“一热代码”(One-hot Representation )最常见的单词表示方法是将每个单词表示为一个长向量。 这个向量的维度是同义词库大小,其中大部分元素为0,只有一个维度的值为1,这个向量表示当前的词。
例如:“‘我’、‘爱’、‘中国’”
One-hot为“我”:“1,0,0”、“爱”:“0,1,0”、“中国”3360 [ 0,0,1 ]
分析缺点:
1、随着句子词的数量类型变大,向量的维数变大
2、任意两个词之间是孤立的,无法表示语义层面上词汇间的相关信息。
)词的分散表示
分布式re presentation可以解决One hot representation的问题,其思路是通过训练将各个词映射为短词向量。 的这些词向量都构成向量空间,进而可以用一般的统计学方法研究词与词的关系。 这个短语的向量维度是多少? 这一般需要我们训练的时候自己指定。
例如,在下图中,词汇表的单词由“Royalty”、“Masculinity”、“Femininity”、“age”四个维度表示。 与漂亮裙子这个单词相对应的单词向量可能是“0.99,0.99,0.05,0.7”。 当然,实际上,并不能很好地说明单词向量的各个维度。
传统的独热意味着只将单词符号化,不包含语义信息。 怎样将意思融入单词表达中呢? Harris在1954年提出的“分布假说”为这一构想提供了理论基础。 语境相似的词,意思也相似。 Firth在1957年进一步论述了分布假说,明确了语言的意义由其语境决定。
以(CBOW )为例,如果有“the cat sits one the mat”这个句子,在训练的时候输入“the cat sits one the”,预测最后一个词是“mat”。
方差表示的一大优点是,n维向量的每一维k个值具有非常强的表示能力,例如可以表示k的n次方个的概念。 下图的神经网络语言模型(NNLM )采用文本分布式表示。 词向量(word embedding )是训练其语言模型的附加产物,是图中的矩阵c。
我们的任务可以分为两部分:
1 )选择描述上下文的方法;
(2)某个词(即宾语) )和其语境的关系的“模型”。
因此,出现了几种文本表示方法,从tdggx的NNLM到Word2vec、glove、Fasttext到现在的End2End,文本表示方法发生了很大的变化。
3、 word2vec
Word2vec包括两种培训方式连续世界模型(Cbow )。连续跳过模型(kip-gram模型)。
CBOW :预测当前单词的上下文
Skip-gram :当前单词预测上下文
关于word2vec,需要理解网络结构、jydlc代码、jydlc树、n-grams以及word2vec两大途径: Hierarchical Soft max和否定样本
4、两个trick
(1)层次结构软件最大值已知jydlc树是加权路径最短的树,在一般的神经网络语言模型中,在预测时输出预测宾语的概率(由于每次预测都基于所有的数据集合进行计算,所以有很大的时间开销) Hierarchical Softmax是一种优化输出层的策略,该输出层已从使用原始模型的softmax计算概率值改为使用Huffman树计算概率值。 最初位于叙词表上
全部词作为叶子节点,词频作为节点的权,构建Huffman树,作为输出。从根节点出发,到达指定叶子节点的路径。Hierarchical Softmax正是利用这条路径来计算指定词的概率,而非用softmax来计算。 即Hierarchical Softmax:把 N 分类问题变成 log(N)次二分类。(2)Negative Sampling
Negative Sampling(简写NEG,负采样),这是Noise-Contrastive Estimation(简写NCE,噪声对比估计)的简化版本:把语料中的一个词串的中心词替换为别的词,构造语料 D 中不存在的词串作为负样本。在这种策略下,优化目标变为了:较大化正样本的概率,同时最小化负样本的概率。这样说大家可能已经糊涂了,我们省去繁琐的数学推倒,这里举一个例子:
假设有一个句子为:“The quick brown fox jumps over the lazy dog.“
如果我们用skip-gram model ,貌似这是一个很大的网络。
注意:比如像“the”这种常见的词,我们会遇到两个问题:
1) 比如(fox,the)其实没有传递我们关于 fox的信息。‘the‘出现得太多了。
2)我们有太多(‘the’,…)的样本,多于我们实际需要的。
所以word2vec采用了降采样的策略。对于每个我们在训练样本中遇到的词,我们有一个概率去删除它。这个概率与单词出现的频率相关。
如果我们采用window size = 10,同时我们删除‘the’:
1) 当我们再去训练剩下的词,我们就不会再遇到‘the’了;
2)我们减少了10个包含‘the’的样本
这其实就是‘NEG’的核心思想。
5、总结
word2vec篇幅比较大,因此一篇文章不能完全表述,因此将通过几篇文章几个点来说明,本文是Word2vec的一个综述,总之,词嵌入一种很重要的思想,word2vec更是这里面最有代表性的一种算法之一。