词向量模型扩展

1、词向量介绍

在自然语言处理领域,数据的表征是最基础的技术。初始为每个单词或者数字赋值id作为标识;到one-hot方式,将用一个词表大小的向量表示,有且仅有一个位置为1,其余为0,即下标index等同于id,如:词袋模型(BOW bag of words);再到如今的分布式表示,采用一个k维的向量,每一个维度都是一个double(float)类型的数字,如:LDA、word2vec。。。

词向量的表征功能越来越强大,但是还是依然无法解决一词多义的问题。而词向量模型的可解释性依然不足。

2、word2vec 介绍

网络上充斥着很多word2vec模型框架的介绍,很详细也很冗余,例如:cbow、skip-ngram、Huffman-tree、negative-sampling。。。。。对它的原理介绍的也很清楚,使用上下文来表征当前单词,本质上可以看作基于点互信息的排序(GoldBerg 以及后续的wordrank 模型)。。。。不足之处介绍的也很详细,cbow模型在进行参数更新是对上下文word的更新1/n,没有考虑到不同位置的贡献度不同。。。。

Mikolov提出的经典的word2vec架构中的CBOW/skip-ngram模型,其实可以看作是一个全链接层(输入层)+层次化softmax层(huffman树)的架构;而采用negative-sampling方法后的模型,则更加简单,全链接层(输入层)+多分类层(softmax)。

3、扩展

如果将输入层看作是特征提取层,则我们可以使用功能更加强大的其它网络结构,如CNN、LSTM;也可以设计出更加丰富的输入形式构词特征等。接下来的分类层,我们同样可以采用其他分类函数,无SVM等等。

word2vec学习到的分类参数W看作为上下文矩阵,是一种强耦合的关系。我们可以将其解耦合,单独设计一个网络架构学习上下文向量,然后进行分类学习。(新增,实验证明使用笔画生成字向量,模拟笔画构造汉字的规律,这种方法可行)

更进一步,一个单词可以有多种上下文,即单词和上下文是一种多对多的关系,而目前的模型架构均为一对一(分类模型),即使根据统计学,也可以学到比较丰富的词义表示(一对多),但依然有所不足。可以考虑采用GAN模型框架去训练词向量(笔者正在摸索中。。。)

猜你喜欢

转载自blog.csdn.net/u011349397/article/details/78801358