词嵌入(word2vec) 讨论区

http://zh.diveintodeeplearning.org/chapter_natural-language-processing/word2vec.html

利用word2vec或者其他GloVe fastText模型训练出来的的词向量是不是也是和one hot一样长度是整个词典词语数量呢?

不是,这个是可以提前定好的参数。例如,fasttext设了300. GloVe维度有50,100,300等。

请问老师,噪声词P(w)P(w)在实际中被建议设为ww的单字概率的3/4次方,这个是跟机器学习里为了解决数据稀疏而采用的一种平滑手段吗?

是为了让生僻词更容易被采样。例如0.01^0.75 = 0.03

3赞

有人知道推导过程的么?求交流;推倒的过程不是很理解

对于这里面的log应该是以e为底的ln吧

是。
第一步是最大似然估计
第二步是最小化损失函数(与第一步等价),损失函数对数联合概率的相反数
第三步是描述概率函数,该函数的自变量是词向量(u和v),词向量也是模型参数
第四步对第二步中每一项求梯度。有了梯度就可以优化第二步中的损失函数,从而迭代学习到模型参数,也就是词向量。(优化在第五课和第六课里讲了)

1赞

想请问下word2vec中训练数据怎么起作用的?不论加没加高效训练法(negative sampling 或hierarchical softmax),模型(skip-gram 或 continuous bag of words)的损失函数最后都指向了模型的参数u、v,并没有包含训练数据的因素。实在迷惑

中心词和背景词同时出现在一个时间窗口的事件来自训练数据集

from mxnet.contrib import text 有GPU版本吗?怎么更新?也是pip install mxnet --pre --upgrade ?

pip install mxnet-cu80 (or mxnet-cu90) --pre --upgrade

@astonzhang
follow up:
(1) word2vec需不需要P(Wo | Wc)的统计信息?我猜不需要。
(2)word2vec用什么网络结构?这个网络的每个sample的输入输出是啥?课程给的论文里没有涉及,网上搜没有找到太靠谱的介绍,还望指点一二。

  1. 不用
    2)没有用到神经网络。就是最小化教程里的损失函数,例如用随机梯度下降。每次采样时输入可以是一段很短的子序列,然后计算这段子序列的损失函数,迭代该损失函数里出现的模型参数(损失函数涉及到的相关词向量)

听你这么讲,觉得word2vec简单了好多。如此说来它应是unsupervised learning吧?

再请教另一问题:
image
这个式子中用到了点积image,觉得突兀。
我的疑问是,什么样的动机让作者想到了用点积?
一个粗浅的猜测是文本空间的相邻映射到向量空间的相邻。你一定有深理解,洗耳恭听:)

1赞

两个向量的点积对应cosine similarity

1赞

老师您好,您说的“中心词和背景词同时出现在一个时间窗口的事件来自训练数据集”,训练数据是通过目标函数中下面这个函数出现的次数的传入的? 比如说I和love共现了四次,那么P(I|love)在目标函数出现4次,也就是P(I|love)^4
image
还有一个问题是为什么这种联合概率形式的语言模型能反应词之间的关系?我不是怀疑他是否能,毕竟验证过了,是好奇为什么

I suppose:
因为概率P需要的是一个标量,或者说在做梯度下降求导的时候一个,用数字的话计算量更小。而不巧我们要训练得到的是一个向量。

1赞

我好奇的不是为什么用点乘,而是这个形式为什么能表示这个共现概率?