Word2vec浅显的理解

本文主要让你理解Word2vec大概是个什么事情~没有具体原理等~

先来说一下Word2vec的产生,其实也和one-hot编码有关系,大家相信100维的向量最多可以表示多少个词?

one-hot说,我能表示100个~但是你如果表示所有的单词需要多少维啊...one-hot就数不过来了,太多了(10的五次方级的维度),然后人们就想用一直分布式的方法来表示,如果100维的向量每个维度都可以取任意0/1,那么可以表示多少个啊?2的100次方个单词,那么...假设可以取任意数字或者...浮点数那...滋滋滋...任意维度都可以表示无穷个数字...这貌似是个解决one-hot编码空间爆炸的好方法~然后one-hot也没有能表示的相似度啊,也为了解决这个问题,人们提出了Word2vec方法,不过空间爆炸刚刚解释了用分布式向量就可以解决,那么语义问题哪?那就听我慢慢道来吧~

Word2vec,是一群用来产生词向量的相关模型。说白了就是个简单化的神经网络模型,然后在nlp中最常见的就是两种,也是google在2013年提出的两种重要模型CBOW模型与Skip-Gram模型。CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。(这样就解决了语义上的问题了,每个单词都包含周围的词语的语言)如果这个听不明白可以结合下图来了解一下,然后再结合一个例子来说明一下,CBOW:我喜欢猫咪,其中小是目标词,假设那么小的词向量应该就和周围的词语有关系,用语文的说法来一下就是,猫咪的形容词,和喜欢关系倒是不是很大... (这可能我说的有点不是很形象,大概意思就是每一个词都和周围的词有一些关系,例如语法主谓宾等结构啊,一些词语搭配啥的),但是这个地方大家又会问了:这个道理我懂,但是我怎么实现啊,或者怎么和周围的词联系啊,一开始大家都是默认的,目标词不是根据周围的初始值来设定的吗...

这个也是困扰我的一个...道理可能大家都懂,但是怎么实现哪?这个道理好抽象啊~其实这个就是是刚刚说的Word2vec说白了就是个简单化的神经网络模型,这个如果大家不理解...可以看看我写的另一片文章https://blog.csdn.net/RHJlife/article/details/104747153,说了好久的关于如何输入一直图片输出说她是一个猫,具体是如何做到的呐?和刚刚的问题一样的。如果实在不能理解就这么理解:神经网络就是个黑色的盒子,它能完成你想做的事情,你想利用上下文推测单词,或者利用单词推测上下文,你只需要知道神经网络就是个神奇的盒子,他可以根据你提供的大量数据去学习内在联系,然后变成一个你完成任务的小黑盒子(黑盒代表我们并不清楚他里面具体代表啥)。

那么下面就具体说说CBOW模型与Skip-Gram模型~

CBOW模型:

 

输入层输入的是上下文单词的one-hot,隐藏层不需要激活函数(线性的)。输出层维度跟输入层的维度一样,用的是Softmax回归。当这个模型训练好以后,我们并不会用这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学得的参数,即隐层的权重矩阵。为什么哪?因为任何一个单词的one-hot乘以这个矩阵都将得到自己的词向量这样就可以免去训练调用模型去得到词向量。

其实本块内容主要是神经网络的,这一块相关资料非常多,就不具体介绍了~

Skip-Gram模型:正在学习ing

放个目前感觉比较不错的学习链接供大家参考:https://blog.csdn.net/qq_24003917/article/details/80389976

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章