word2vec 学习和理解

这里先按吴恩达老师的课程讲解的softmax做一个笔记,和之前看的一个大神的文章,相对比,来方便我对word2vec的理解。

 

 

目的:学习一个词嵌入矩阵E。

手段:构建一个语言模型。

 

最老的方法:

预测一个句子(4个词)之后的下一个词是什么。

例如,下面是一个样本:

a glass of orange (juice).

样本输入: a glass of orange

样本输出:juice

 

实际上,我们会遍历一篇文章,然后文章中如果有这么一句话a glass of orange (juice).

它就可以作为一个样本了。

I want a glass of orange juice.

这样的句子,按照窗口为4来处理的话,可能会有如下的样本: 

样本输入(样本输出)

want a glass of (orange)

want a glass of (apple)

want a glass of (mango)

这样, 经过训练之后,orange apple mango等词汇就会有相近的词向量。

(为什么?以后可以再思考解释一下。暂时没想通)

 

训练的模型为:

词嵌入矩阵E,随机初始化。假设one-hot表示有10000个词(实际更多),词向量维度是300,那么E大小为300*10000

开始:

(1)->4个词的one-hot 

(2)-> 乘以E,得到4个词的词向量表示,合并成一个大的向量 

(3)-> 输入到一个隐藏层

(4)-> 输出到一个softmax

(5)-> 输出为样本输出。

 

输入层:词向量维度为300,那么(2)得到的向量长度为4*300 = 1200,即输入层有1200个特征。

隐藏层:假设隐藏层的激活项有500个(可能没那么少,这里打个比方),那么隐藏层权重矩阵W1 是 1200*500的。不过这层的参数我们不关注。

softmax层:为了获得一个词库总量(本例为10000词)的分类器。所以softmax的权重为W2 = 500*10000.

分类器如下:

e_Vi是隐藏层的输出,i表示one-hot的第一个词。Si是样本输出表示的单词。

可以看到,分母有一个超大的求和,大小为one-hot词向量大小,这个例子是10000。

为了计算得到一个样本的损失函数,需要进行10000次求和。

这个计算简直不能忍的。

 

于是后面会有其他的模型来解决这个求和量过大的问题(还会解决这个模型的其他缺陷,这里不做过多讨论)。

 

 

第二部分

上面,语言模型是根据前面4个词,预测最后一个词。

但实际,我们的目标不是语言模型本身,所以可以用另一种方法来预测词的关系。

 

比如,用上下文。

I want a glass of orange juice to go ...

还是orange这个词,这时候,我们的样本就不一定是前面4个词了。可以是左边取几个,右边取几个。

比如如下是一个样本:(左右窗口是2)

glass of (orange) juice to

 

此外,还有其他方式,比如取上一个词作为输入,预测下一个词。

of (orange)

之类的。 这个就是skip-gram的思路。

 

接下来的例子,模型为:

一个上文->预测一个下文

开始:

(1)->one-hot 乘以 词嵌入矩阵E,得到词向量

(2)->词嵌入矩阵输入到一个softmaxt,直接预测下文

(3)没有了。

我们看到,吴恩达课程里,讲softmax层的计算公式时,为:

P(t|C) = \frac{e^{\theta _t^T \cdot e_c}}{\sum_{j=1}^{10000} e^{ \theta _j^T \cdot e_c}}

这个公式是直接把前面层所做的东西合并了。

这里的θ,就是softmax层的权重。小写t表示单词t在one-hot里的下表序号。

这个公式,实际上就是将softmax的输出做一个归一化,求得t分类的相对概率。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值