1. 词向量(Word2Vector)介绍
深度学习应用在自然语言处理当中的时候,基本都会通过词向量的方式将one-hot编码的向量,转换为词向量。至于为什么这么做,一个原因是因为深度学习对稀疏输入效果不好,第二个最主要原因是,那种one-hot方式的编码,对于每一个不同的单词或者中文的词语,之间关系没有办法表达出来,也即,对于不同的单词,两个单词的one-hot编码的向量的相似度永远为0, 也即cos(Vi, Vj) = 0。那么问题来了,怎样表示出单词之间的内在联系呢?
word2vector的出现便是为了处理单词之间的内在联系。那具体怎么做呢?我们在学习语言的时候,比如英语,每一个具体的单词虽然对应一个中文的翻译,但即使是具有相同的中文翻译的英文单词在绝大多数情况下也并不能互换。怎样才算掌握了一个具体单词呢,知道了一般这个单词在什么语境下使用,才算了解了基本使用。word2vector算法的思想与之类似,即认为,具备相似语境下使用的单词在语义上也很相似。具体有两种算法模型:Skip-gram模型
Continuous Bag of Words(CBOW) 模型
这两种模型都可以作为word2vector算法实现,CBOW模型在数据量小的情况下效果更好一点。skip-gram是通过具体的中心单词预测上下文的单词。而CBOW则是通过中心单词附近的几个窗口单词预测中心单词,二者的逻辑刚好互逆。代码实现的话,skip-gram更简单一些吧。
下面以skip-gram模型,简单说明一下word2vector的数学推导
2. Word2Vector的数学推导
Skip-gram模型的基本思想是:在一个句子当中&#x