Paper笔记: 斯坦福课程 CS224D:Deep Learning for NLP, lecture I

Paper笔记:  斯坦福课程 CS224D:Deep Learning for NLP, lecture I

①NLP的概念

自然语言处理(NLP):通过设计算法来让计算机能够“理解”人类的语言。

②Word Vector的概念

one-hot vetor:除了某个维度的值为1,其余都为0

这样的词向量不能表示出各个单词之间的关系。

③奇异值分解(SVD分解)来得到词向量(word vectors or word embeddings)

在得到一个X矩阵后,通过奇异值分解得到U S V(转置),其中U的每一行的向量来作为word embeddings,这样就可以得到词向量之间的关系.

现在的问题就在于如何得到这个X矩阵

3.1:Word-Document Matrix

因为词性相似的单词会经常出现在同一篇文章中,所以构造这样一个矩阵:

当单词i出现在文章j中时,Xij设为1。

3.2:Window based Co-occurrence Matrix

这个矩阵依据相邻单词的关系。

比如:

Paper笔记: 斯坦福课程 CS224D:Deep Learning for NLP, lecture I_第1张图片


通过SVD分解,然后取中间的对角矩阵的k行k列(这里有一个判断公式,不是太懂...),之后的U矩阵的行向量再作为word embeddings。

④Iteration Based Methods

这个方法不用大量的数据来获取词向量,而是创造一个模型来学习并最终得到一些概率。(这里理解的不好)

4.1 Language Models

首先我们需要创建一个模型来给出一个句子的概率。如果这个句子完整且有效,那么概率就应该很高,反之很低。

如果这个概率等于每个独立的单词的概率相加,那么就很可笑,因为没有一点依据。

所以可以假设句子的概率等于每两个相邻单词的概率,但这样依然不准确,毕竟只是两个单词。

4.2 Continuous Bag of Words Model (CBOW)

通过一个句子中的周围单词来预测另外一个单词。 通过 the cat over the puddle 来预测jumped

我们需要两个矩阵 U, V,

通过乘这两个矩阵来对周围单词的one-hot vector进行变形,从而得到一个新的一维向量,我们期望这个一维向量能和我们想要预测的单词的one-hot vector很相近。

(中间的计算过程不是很明白,先跳过。)

4.3 Skip-Gram Model

这个模型是通过一个单词来预测周围单词,和上一个模型相反。

所以 U和V矩阵也需要逆用。




你可能感兴趣的:(第三学期学习日志,实验室)