通俗Word2vec学习笔记 ING(没有复杂公式推导)

一、学习参考的资料和总结

内容来自于论文、知乎、csdn、雷锋等各类网站。因为在学习过程中也看了不少过分“深入”的教程,导致起初学习进度缓慢,因为将觉得较为适合的内容整理在此处。以下内容不会过多地涉及数学公式推导。当然使用Gensim就可以轻松调用Word2vec,并且w2v也并非最新的理论成果,但是在使用时能理解其中含义,就算调参也会让人更嗨。为了方便记录,本着利人利己的考虑写下这篇文章。

 

1.基本知识

这两篇强推,写得很清楚简洁

https://blog.csdn.net/bitcarmanlee/article/details/82291968

https://www.jianshu.com/p/d6a0aec6e9a1

xinron的论文,当然我是看了一些之后再看的这篇,进一步验证了想法

https://arxiv.org/abs/1411.2738

 

2.实例

来自机器不学习,以Skip-Gram为例子讲解了结构,并给出了代码示例

https://www.leiphone.com/news/201706/PamWKpfRFEI42McI.html

训练篇

https://www.leiphone.com/news/201706/PamWKpfRFEI42McI.html

使用TensorFlow实现

https://www.leiphone.com/news/201706/QprrvzsrZCl4S2lw.html

 

PS.以上三篇机器不学习的内容属于一个系列,主要以Skip-Gram为例子讲解了Word2vec的结构,给出了实例代码,经验证此团队提供TF1.0代码做一些简单的改动就可以跑通。

 

二、个人理解

当然上面的几篇内容也足以完成入门,同时自己再看看各类博客或者代码了解一些技巧便会有极大的提高。以下是我归纳总结的内容。

1.首先,上两张图!

尽管这两张图只要读者看过博客或者是教程都快看吐了,但是还是得放,因为什么叫经典,这**就叫经典。

首先单就这两张图而言,看起来是借助上下文预测中间词,或者是借助中间词预测上下文。但Word2vec最重要的内容就诞生于此,通过前向传播和反向传播,训练隐藏层权重矩阵,而最后得到的Hidden layer就是我们这里需要的词向量,which means 当训练完成后Hidden layer 后面的部分都可以不去理会。因为训练出模型后,转换成的词向量就是中间的Hidden layer。

 

通俗Word2vec学习笔记 ING(没有复杂公式推导)_第1张图片

模型上来说从上下文推测一个中间词  Cbow模型

 

通俗Word2vec学习笔记 ING(没有复杂公式推导)_第2张图片

从模型上来说,从一个词推测出上下文的是skip-gram模型

 

 

2.数学验证

从skip-gram出发,input层是将单词转换成one-hot向量进行输入。

什么是one-hot向量?

就是比如一个词库有N个单词,以此构建一个1*N向量,假设输入单词排在第6个,那么向量只有第6个是1其余都是零。只有一个是hot的。

因而input输入了一个1*V的向量,经过权重矩阵V*N  成为1*N向量,就是中间的Hidden layer,接下来经过并行的C个N*V权重矩阵,得到的依然是C个1*V的向量,并且经过output上的softmax,得到的output是对每个单词出现的预测概率。

 

而对于Cbow

正如图上所示,Cbow一开始有C个词的input,但这不是问题,依然和前文一样只不过这里将C个1*V的input分别和同一个V*N的权值矩阵相乘,从而得到C个1*N的Hidden layer,此时将这C个hidden layer平均,成为唯一一个1*N的hidden layer。随后的步骤便如同上文。

 

 

3.一些技巧和细节

①尽管我们有了output但是真考虑的还是我们的hidden layer 还有前面的权值矩阵。我们在上文提到了input无论何时都是one hot向量。所以,当我们真正使用Word2vec时,无需真的正直的做一遍矩阵乘法,而是找到1是第几个,然后再矩阵找到对应的行。这就成了一个查表问题。

 

通俗Word2vec学习笔记 ING(没有复杂公式推导)_第3张图片

②当然在计算时因为计算量过大,所以会有些注入negative word等的方法来帮助减少计算等的小技巧,他人的推文已经写得很具体,推荐看这篇最后的内容

https://www.leiphone.com/news/201706/eV8j3Nu8SMqGBnQB.html

 

 

③写到这里我开始发现,当坐着了解这个内容的时候会过多的纠结深层次的问题,比如数学细节或者是一些更细致末梢的内容。而忽略了真正的观众是对这一块内容并不了解的人,是渴望用最浅显语言和数字和图片来揭示实质,而非期待一上来用大量的推导劝退。希望这篇博文能够帮到有需要的人,不管是我手写的内容或者文中的推荐

 

如果有理解不到位的地方麻烦评论指正

你可能感兴趣的:(Word2vec,nlp,自然语言处理,词向量,embedding,natureLP)