1、如何表示一个单词的含义?
- 定义单词的含义:语言学方式上单词的含义是一种指代,指代世界上的某些具体事物(该单词的指代物,denotations)。字典含义:
- 在计算机中使用有用的单词含义:使用像WordNet(分类资源,taxonomic resource)提供很多词汇相关的分类信息,如上位词、下义词、反义词和同义词(hypernym, hyponym, antonym and synonym)
- 大部分基于规则和基于统计的nlp工作将单词视作原子符号,用一串只有一个1其余为0的向量来表示这个原子符号(独热表示,one-hot representation),这种方法存在问题,因为它没有给出任何词汇之间的内在关系概念(inherent notion of similarity)
- 分布式表示(distributed representation)指用一个dense vector来表示词汇
- 分布相似性(distributional similarity)是一种关于词汇语义的理论,可以通过理解单词出现的上下文,来描述词汇的意思
2、word2vec
定义:一种软件,利用语言的意义理论,预测每个单词和它上下文的词汇
- Skip-grams pediction:
- details of word2vec:
——在机器学习领域喜欢将事情最小化,跟上面对应起来得到一个负的对数似然(negative log likelihood)目标函数。
——目标函数(代价函数、损失函数)
当目标函数为上面的负的对数似然准则的话意味着我们使用的是交叉熵损失函数(cross-entropy loss)
——公式
结果形式:
其中,vc是中心单词的向量表示,uo是上下文单词的向量表示,c和o分别是它们的单词索引值,即它们在同种单词类型集合中的位置。
推导过程:
Softmax模型:利用c的信息获得o的输出概率(选取两个向量的点积)
softmax形式:将数值转换成概率分布(指数化使其变为正的;归一化处理)
- Skipgram的一个具体实例
3、计算出Skipgram模型(思路是调整参数,让负的对数似然这一目标函数最小化,从而使预测的概率最大化)
4、最优化(利用梯度下降,gradient descent,可以观看cs221或229课程补充相关知识)
梯度下降:梯度下降法的计算过程就是沿梯度下降的方向求解极小值(梯度即导数或偏导数)
python实现梯度下降的一般算法:
1 while True: 2 theta_grad = evaluate_gradient(J, corpus,theta) 3 theta = theta - alpha * theta_grad
这里的J,corpus,theta分别表示目标函数值,函数本身和当前参数。
在这里,我们一般使用的梯度下降法是随机梯度下降方法(stochastic gradient descent, SGD)
SGD的Python实现:
1 while True: 2 window = sample_window(corpus) 3 theta_grad = evaluate_gradient(J, window, theta) 4 theta = theta - alpha * theta_grad