CS224N个人笔记

1. 词向量

词向量,即使用密集的低纬向量代替稀疏的one-hot向量。
传统的词向量可以使用SVD等方法得到,但基于神经网络的词向量,是03年Bengio在神经网络语言模型论文中提出的。

one-hot向量的缺点:
1. 没有考虑词汇之间的相似性。比如,hotel和motel分别表示为(1,0,0)、(0,1,0),二者的内积为0,正交关系,相似性为0,但是这两个词是近义词。
2. 当文本词汇量非常大的时候,one-hot词向量会带来维度灾难。

word2vec:skip-gram算法、cbow算法(连续词袋)
skip-gram,根据中心词预测上下文词出现概率;cbow相反,根据上下文词预测中心词出现概率。

下面主要介绍skip-gram算法。

目标函数是,极大似然估计的思想,使得整个句子出现的概率最大,也就是n(假设句子有n个词)个词的联合概率最大。使用滑动窗口限定上下文环境,中心词汇分别向左右滑动固定长度,作为上下文环境。当然,通常需要把目标函数log化和损失化。

词汇间的相似性,用向量的内积表示;
概率,用softmax的形式表示;
句子概率计算公式中,使用词条件概率连乘,说明skip-gram假设,上下文词是独立的
 

计算公式如下:

1. 下图中的公式为目标函数和log化后的损失函数。

2. 下图中的公式为条件概率的计算。

3. 下图为skip-gram算法的计算样例

前向传播阶段:

最左边为网络的输入(vx1的one-hot向量,v是词典的大小),
左边的红色矩阵(dxv)为映射权重,或者所有的中心词汇矩阵,也就是最终我们需要的所有词向量组成的矩阵,
one-hot稀疏型向量经过映射之后,转为固定维度(超参数)的密集型词向量,然后,再经过红色的矩阵(vxd),这个红色的矩阵表示上下文矩阵。图中绘制了3个这样的红色矩阵,其实我们只有一个,图中给出了3个样例而已。
再经过softmax层,转化为概率。计算完概率后,就可以做反向传播了。

问题:中心词汇矩阵和上下文矩阵是一个矩阵吗?
回答:不是,通常我们需要的是第一个矩阵,第二个丢掉即可。

4. 下图为优化后的skip-gram

上面介绍的skip-gram算法,计算概率的时候,分母部分要做V次指数运算,计算量大。

所以在13年的论文中,作者做了优化。使用了负采样(negative sampling)的方式,使用逻辑回归做二分类,随机采样部分词。具体不多做介绍。

另外,在更新参数的时候,并不是走完所有的window做一次更新,这样计算量太大,且效果也不好,可以n(超参数)个window之后就做一次参数更新。

未完待续。。。

发布了11 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/xueqinmax/article/details/102397782