最后更新于
最后更新于
常用的两种对词进行向量化的方法族都有自身的缺点:
global matrix factorization methods(全局统计矩阵分解法): 例如positive pointwise mu- tual information(PPMI)方法. 类似于这种方法, 充分考虑了全局的统计信息(词频等), 但没有考虑单词的局部情况, 导致在单词推理(word analogy)任务中表现很差.
Shallow Window-Based Methods(浅层窗口方法): 例如word2vec中的CBOW或Skip-gram(Skip-Gram with Negative Sampling, SGNG)方法. 这种方法在单词推理的任务中表现很好, 但是没有使用到预料的统计信息, 只是使用到了窗口限定的局部信息.
其中的单词推理任务举个例子就是word2vec论文中经典的man->woman
的关系推理出king->?
中的未知单词是queen
. 而且word2vec产生的词向量, 还有着的关系, 这可以被定义为在词义上有线性表现(linear directions of meaning).
文章认为这个属性是词向量化模型必须具备的属性, 然后提出了使用对数(log-bilinear)回归模型来保证这种属性. 通过一个加权最小平方模型(weighted least squares model), 通过语料全局的word-word co-occurrence的次数来训练这个模型, 这样就使用到了全局的统计信息. 而且词与词之间的co-occurrence通过窗口限制, 也考虑了局部, 因此使用了语料中更多的信息, 理论上向量化效果应当更好.
Global Vectors(GloVe)模型使用语料全局统计信息, 并且生成的词向量, 并且词向量与词义有着希望的对应关系.
定义符号:
: matrix of word-word co-occurrence counts
: 单词在单词的上下文中出现的次数
: 所有单词在单词的上下文中出现的次数
: 单词出现在单词的上下文中的概率
考虑几个例子:
假设有两个单词, . 我们认为, 这两个单词的相关性, 可以通过第三个探针单词来体现, 具体来说是通过比例来体现, 如何体现呢?
这就是我们希望在词的向量空间中的运算来表示这个概率.
下面就是把上式转换成我们可以计算的形式的过程:
注意到等式右侧是标量, 左侧的变量是两个向量, 因此很自然的想到通过内积的方式进行转换, 即函数内部应该有向量之间的内积运算, 因此也就是这个内积就可以做自变量. 而且内积也能很好的保持向量之间的线性, 得到:
其中:
论文中最终选择:
需要选择的超参数有:
上下文窗口
窗口长度
单向/双向窗口
学习率
词向量的维度
迭代的轮数
噪声的影响
过拟合
例如说单词与很相关, 而与不相关, 例如, 这样的值就会很大; 再比如单词与不相关, 而与很相关, 例如, 值就会很小; 如果单词同时与两个单词都很相关, 例如, 或者同时与两个单词都不相关, 例如, 那个值就会接近于1.
因此, 相对于使用原始的条件概率, 这个比例的大小就很能很好的区分相关与否的单词.
定义, 这个值与, , 三个单词相关. 这个概率目前使用全局共现频率统计计算得到的, 如果我们可以通过这三个单词的词向量计算得到, 那么就可转换成:
我们希望词向量具有线性特性, 那么词向量之间的差向量就能很好的定义两个单词之间的差异性. 由于我们要考察和之间的相关性, 所以上式可以转换为:
考虑到使用了单词之间的co-occurrence矩阵, 因此对于一个中心词和其对应的某个上下文词, 这两个词的角色是可以相互转换的, 即应表现出对称性. 又考虑到使用词向量表示, 而且没有顺序区别, 点积是很好的形式, 因此:
而对于这种形式, 观察左侧的相减转换成了右侧相除的形式, 容易联想到幂函数的形式. 因此使, 则一式转换为:
注意到, 因此上面等式中三项只有没有对称性. 又由于是关于的一个函数, 所以将其即为一个偏置项, 为了对称性同时加入单词的偏置项, 式子转换成:
我们希望上式的两端尽可能相等, 因此用差的平方来衡量差距. 而考虑到两个单词共现的频率不同, 采用加权的方法, 对词典中所有项进行衡量, 因此得到最终的损失函数:
其中是字典中词的数量. 而权重函数需要考虑如下几点:
, 且当时, 是有限值
应当是非递减函数, 这样很少共现的情况就不会被考虑过重
对于很大的自变量其值也不能过大, 这样就不会过度考虑频繁共现的情况
其中, 即可.
而在训练过程中, 两个单词, 中心词词向量和上下文词词向量使用的不是同一个词向量矩阵. 但当是对称的, 则和矩阵就是等同的. 但在训练的初始化时, 这两个嵌入参数矩阵用不同的数值进行初始化. 在最后对于每个单词最终的词向量, 从矩阵中取出对应单词的限量. 即将两个矩阵加和在一起作为最后的结果, 这样的方法能够: