《CS224n斯坦福课程》-----第二课

学习笔记:cs224n2
学习视频:cs224n2
学习课件:cs224n2

同样,今天这节课还是简要的由几个问题引出,然后把思考结果书写出来。

1,什么是词语的意思,如何来进行表述呢

我们每天说词语的意思,那么到底什么是词语的意思呢?其实就是蕴含在词语中的所要传达的信息量。对于英文中,有一个神器,WordNet,这个就是词语界的百科全书,通过NLTK包可以使用这个聚集了大量前人心血的东西。

对于很多NLP学家而言,都将一个词来作为处理的最小单元,以WordNet为例,这是一个离散表示的问题(discrete representation), 在离散表示中存在很多问题:首先,不同的词之间存在微妙的差别;其次,缺少新词;再次,主观性强;再次,需要耗费大量的人力来整理;最后,对于词语之间的相似性,是没有办法准备计算,只有一个定性的表述,难以定量。

然后寻求词语的表示的向量化,从symbolic representations(one-hot)到distributed representations的发展,对于one-hot的词袋模型,但这种方法,稀疏性强,维度高,而且也无法度量词语的相似性,而分布式表示是通过引入了相对而言短的向量,然后将向量构成了一个向量空间,并且引入了距离的概念,可以通过判断词语之间的距离,来判断二者之间的相似性问题。

        在这个地方需要主要区分二个概念,分布表示(distributional representation)和分布式表示(distributed representation)

对于分布式表示,是指相对于one-hot编码而言的词语的向量编码方式的表示。

对于分布表示,是指使用词语的上下文来表示其语义,Word2vec和基于计数的词向量表示都是分布表示,因为我们都使用词语的上下文来表征它的含义。

2,神经网络来进行word embeddings

利用传统的神经网络,来做词向量可以说是一个常规操作,但在这种情况下,一个很重要的问题,在于隐藏层和输出层之间的矩阵运算,并且还有一个softmax,这些规模真的很大,效率不高,运算时间太长。后面很多的改进都是基于这个问题的,比如后面很重要的算法,Word2vec算法。

对于word2vec,我之前已经从其数学原理的角度写过一部分博客。链接为https://blog.csdn.net/angela2016/article/details/81480981

对于这门课,老师讲述的是利用naive softmax来达到目的,现在贴一个参考资料,写的很棒。http://www.hankcs.com/nlp/word2vec.html

首先,明确问题的求解的目标函数,其次,就是求偏导的过程,然后,梯度下降(SGD),最后更新参数,得到解。

猜你喜欢

转载自blog.csdn.net/angela2016/article/details/84763055