Bla*_*ard 5 nlp vector machine-learning word2vec
我的问题是双重的,但希望不要太复杂.这两个部分都特别适用于Word2Vec中的Skip-Gram模型:
第一部分是关于结构:据我所知,Skip-Gram模型基于一个神经网络,一个输入权重矩阵W,一个大小为N的隐藏层,以及每个用于生成的C输出权重矩阵W' C输出向量之一.它是否正确?
第二部分是关于输出向量:据我所知,每个输出向量的大小为V,是Softmax函数的结果.每个输出向量节点对应于词汇表中单词的索引,并且每个节点的值是对应单词出现在该上下文位置(对于给定输入单词)的概率.然而,即使训练实例是,目标输出矢量也不是单热编码的.它是否正确?
我想象的方式是以下几行(构成示例):
假设词汇['quick','fox','jumped','lazy','dog']和C = 1的上下文,并假设对于输入词'jumped',我看到两个输出向量看起来像这个:
[0.2 0.6 0.01 0.1 0.09]
[0.2 0.2 0.01 0.16 0.43 ]
我会将此解释为"狐狸"是最有可能在"跳跃"之前出现的词(p = 0.6),而"狗"最有可能出现在它之后(p = 0.43).
我有这个权利吗?还是我完全脱了?任何帮助表示赞赏.
小智 5
这是我在 SO 的第一个答案,所以这里是..
根据本文,您对这两部分的理解似乎都是正确的:
http://arxiv.org/abs/1411.2738
这篇论文详细解释了 word2vec,同时保持它非常简单——值得一读,以彻底了解 word2vec 中使用的神经网络架构。
参考你提到的例子,C =1,词汇['quick', 'fox', 'jumped', 'lazy', 'dog']
如果skip-gram 的输出是[0.2 0.6 0.01 0.1 0.09],其中正确的目标词是“fox”,那么误差计算如下:
[0 1 0 0 0] - [0.2 0.6 0.01 0.1 0.09] = [-0.2 0.4 -0.01 -0.1 -0.09]
并且更新权重矩阵以最小化该误差。
希望这可以帮助 !