引言
本次文章和上两篇文章完全相反,原来的两篇文章是从一个宏观的角度自上而下的介绍什么是自然语言处理。从本篇文章开始将从语言的最底层开始研究,并开始数学分析。
Note:如需Word2vec相关论文,可以直接联系作者:jun6739163。
本文概要
1
什么是词意(word meaning)及如何表示(representio)?
2
Word2vec 介绍。
3
Word2vec 目标函数求解。
4
下期预告
5
参考文献
正文开始
1
什么是词意(word meaning)及如何表示(representio)?
1
什么是单词的词意(它的定义是什么)?
英文中meaning代表人或文字想要表达的idea,这个idea还可以通过手写文字、艺术品来表示。中文中的词义更有意思,例如在第二篇中写的关于“意思意思”例子。如果站在语言学的角度来说,“词意”相当于“指代、所指、符号”。
2
如何在计算机中单词的词意表示?
过去一般都是使用分类词典,计算语言学中常见的方式是WordNet那样的词库。比如通过WordNet查询男人的上位词(is a的关系),会得到“杂食动物”“人类”等尚未词;也可以查询“good”的同义词,例如:right、ripe、skillful等。
但是采用过去的这种表示方法会存在很多的问题(discrete representation problem)。
在传统的自然语言处理中,一般把单词当做离散符号:hotel、conference、motel。那么单词可以使用one-hot表示法,例如:
但是采用这种方法会存在一个比较大的问题就是当词典数量相当大的时候,单词向量的长度会非常长,而且这种方式也不能表征处两个单词之间的相似性。例如将上面的两个one-hot向量是正交的(两个向量对应点的乘积为0)。
所以基于上面讨论,需要找寻一种能够使用向量直接编码的方法。语言学家J. R. Firth提出,通过一个单词的上下文可以得到它的意思。J. R. Firth甚至建议,如果你能把单词放到正确的上下文中去,才说明你掌握了它的意义。这是现代统计自然语言处理最成功地思想之一。如下:
2
Word2vec 介绍
1
Word vectors?
基于上面对one-hot的讨论,希望能够为每个单词建立稠密的向量,并且通过单词向量可以表示出单词之间的相似性。例如:
2
学习神经网络word embeddings的基本思路:
定义一个以预测某个单词的上下文的模型:
损失函数定义如下:
这里的
表示
的上下文(负号通常表示除了某某之外),如果完美预测,损失函数为零。
然后在一个大型语料库中的不同位置得到训练实例,调整词向量,最小化损失函数。
3
Word2vec 简单介绍?
Word2vec(Mikolov et al.2013)是一个学习单词向量的框架。其主要的思想是:
4
Word2vec 原理介绍?
如下图所示:
以“into”为中心词,计算其周围背景词出现的概率。
以“banking”为中心词,计算其周围背景词出现的概率。
对于每个为之t=1,2,...,T,给定一个中心词
都是在一个固定的窗口m内预测背景单词。那么有下式:
其中?表示需要被优化的所有变量。
那么目标函数J(?)这里是去平均负对数。
其中最小化目标函数就相当于最大化预测精度。
3
Word2vec 目标函数求解
通过上面分析,已经得到了目标函数J(?。那么对于目标函数,如何才能求解出公式中:
求解方法是:每个单词采用两个向量表示。
然后对于每个中心词c和背景词o都有:
可以得到:
其中分子点乘表示中心词c和背景词o的相似度,点乘积越大,他们相似度越大;分母对其取完指数之后然后对整个词典最归一化。
这正好符合softmax函数的形式。
它的主要功能是将任意之Xi映射到概率空间分布Pi上。
4
下期预告
本篇文章主要讲传统词意的表示方法,以及深度学习中词意的表示方法,着重介绍了Word2vec中的Skip-Gram算法。下期将介绍:
1、Word2vec中Skip-Gram训练方法
2、Word2vec的另外一种算法CBOW(连续词袋模型)
3、Word2vec的优化算法介绍
5
参考文献
[1]http://www.hankcs.com/nlp/word-vector-representations-word2vec.html
[2]Natural Language Processing with Deep Learning CS224n.