几种改进的embedding方法
最近看论文的时候发现好几篇改进词向量的小论文,方法虽然不复杂但是都挺有意思的,可能在工业界的某些任务上有奇效,分享一下~
1.平均加权词向量
paper:https://arxiv.org/abs/2002.05606
方法
先,分别用word2vec和glove计算出各个单词的词向量,后将其归一化:
其中,d代表word2vec或者glove词向量的尺寸d1或d2,w是word2vec或glove算法输出的单词的向量,表示归一化的单词向量。 然后将评论的评论向量r计算为标准化单词向量的平均值:
N是评论中的字数。 ai表示评论中单词wi的权重。我们使用两种不同的加权方案。 在第一个(平均评论向量-ARV)中,我们对所有单词简单地采用ai = 1并获得单词向量的简单平均值。 在第二个(加权平均评论向量-WARV)中。 公式4中的ai对于IMBD数据集产生了最佳结果:
公式5中的ai对于Semeval数据集产生了最佳结果:
实验结果
2.利用类标签提高基于embedding性能
paper:https://arxiv.org/abs/2006.02104
方法
提出了一种新的加权方案:TF-CR。
Wc:当前单词在类别c中出现的次数
Nc:当前类别的总单词数
W:当前单词在所有类别中出现的数目
将TF-CR应用于embedding:先构建正常的词embedding矩阵,然后将句子中每个单词的嵌入乘以它们的TF-CR分数相加,可以创建特定于类别的表示形式。 这导致了k个TF-CR加权嵌入表示,其中k是数据集中的类别数。 最后,我们将这k个嵌入表示连接起来,以生成最终向量,该向量的维数为k×d,其中d是词嵌入模型的维数。
实验结果
采用Glove embedding + 加权方法的对比实验,在8份数据集上对比。
3. Attention Word Embedding
paper:https://arxiv.org/abs/2006.00988
方法
我们知道CBOW输入层到隐藏层是把上下文的词向量(词的one-hot向量和输入层到隐层权重矩阵U相乘得到)简单地求和平均 ,即
b指滑窗窗口大小,指位置。然后c(D x 1)再和隐层矩阵V(D x N)相乘经过softmax得到最终输出向量y(N x 1):
所以每个词语都有两个向量,一个是其作为其他遮蔽词的上下文时候的向量,一个是其作为遮蔽词时的向量。
那这个所谓的Attention Word Embedding是怎么做的呢?很简单,第一步:构建两个可训练的矩阵:K、Q矩阵,大小均为N*D',N是词汇表大小,D'是vector维度。计算注意力权重:
第二,模型中的上下文词嵌入矩阵和掩蔽词嵌入矩阵之间分配权重,即设置U = V。 权重共享有两好处,一是单词的含义保持不变,无论它出现在上下文窗口中还是被掩盖的单词,这就增加了模型的可解释性,在AWE方法里性能还比设置两个矩阵好;二是减少了模型参数量,尽管AWE比CBOW多一个矩阵,但与CBOW相比,AWE中的参数数量要少得多。 原因是与值矩阵V相比,键矩阵K和查询矩阵Q要小得多。 在我们的实验中,我们将D'设置为50,D设置为500。
最后作者还提出了一种AWE的变种,AWE-S( A Subword Variant of AWE ),也很简单,就是把单词的词向量表示转为其所有子词的和,其他不变。
实验结果
在WIKI百科数据集上训练词向量模型,在两个任务上面对比:
单词相似性任务。我们使用此任务来评估单词嵌入模型本身的性能。此任务的数据集包含单词对和与单词对相关的语义相似性评分,是词嵌入模型使用最广泛的评估方法。
下游NLP任务。这些任务评估重要NLP应用程序的性能,包括自然语言推断,语义蕴涵,语义相关性和复述检测。
注意力机制观测
最后作者还观测了一**意力机制对词向量表达的作用,得到两个发现。
1.无论被掩盖的单词如何,被掩盖的单词和频繁出现的单词(诸如and,the,has和a等)的注意力权重通常很高。但是,即使注意力权重很大,词向量之间的相似度也非常接近于零,因此不影响被掩盖词的预测概率。
2.如果我们从上下文词集中删除这些频繁出现的词,则会观察到注意力权重集中在上下文中用于预测掩盖词的更多信息词上。
4.总结
可以看到三种方法本质上都是对词向量进行加权,区别是加权的系数计算方法和加入时机不一样,其中1、2两种方法是在词向量计算出来后进行权重系数的计算,而方法3是直接在word2vec计算词向量时采用了类似attention的操作来优化词向量的表示,那理论上讲这几个方法是可以结合一起使用的,就是不知道效果如何,有待验证。To do:实现三种方法并进行效果检验。