机器学习笔记--特征工程之六:Word2Vec

2013年google提出的,是目前最常用的词嵌入模型之一

是一种浅层神经网络模型

它有两种网络:CBOW(Continues Bag Of Words)和Skip-gram

CBOW是什么?

CBOW的目标是根据上下文出现的词法来预测当前次的生成概率,即用周围词来预测中心词(如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』)

Skip-gram是根据当前词来预测上下文中词的生成概率,即用中心词来预测周围词(如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』)

举个例子:

cbow是 1个老师 VS K个学生,K个学生(周围词)都会从老师(中心词)那里学习知识,但是老师(中心词)是一视同仁的,教给大家的一样的知识。至于你学到了多少,还要看下一轮(假如还在窗口内),或者以后的某一轮,你还有机会加入老师的课堂当中(再次出现作为周围词),跟着大家一起学习,然后进步一点。因此相对skip-gram,你的业务能力肯定没有人家强,但是对于整个训练营(训练过程)来说,这样肯定效率高,速度更快。

在skip-gram里面,每个词在作为中心词的时候,实际上是 1个学生 VS K个老师,K个老师(周围词)都会对学生(中心词)进行“专业”的训练,这样学生(中心词)的“能力”(向量结果)相对就会扎实(准确)一些,但是这样肯定会使用更长的时间;

CBOW

 Skip-gram

    其中:w(t)是当前所关注的词 ,w(t-2)、w(t-1)、w(t+1)是上下文中出现的词,这里前后滑动窗口大小均设为2

CBOW和Skip-gram都可以表示成由输入层(input)、映射层(Projection)和输出层(Output)组成的神经网络。

输入层中的每个词由独热编码方式表示,即所有词均表示成一个N维向量,其中N为词汇表中单词的总数。在向量中,每个次都将于之对应的维度置为1,其余维度的值均为0

在映射层(又称隐含层)中,K个隐含单元的取值可以由N维输入向量以及链接输入和隐含单元之间的NxK维权中矩阵计算得到。在CBOW中,还需要将各个输入词所计算出的隐含单元求和

同理,输出层向量的值可以通过隐含层向量(K维)以及连接隐含层和输出层之间的KxN维权重矩阵计算得到。输出层也是一个N维向量,每维与词汇表中的一个单词相对应。最后,对输出层向量应用Softmax激活函数,可以计算出每个单词的生成概率。Softmax激活函数定义:

Skip-gram和CBOW的简单情形

我们看个简单的例子

如果x是输入,即句子里的一个词语,y是这个词语的杀那个下文词语。

所以y只取上下文里一个词语的时候,语言模型变为:用当前词x预测他的下一个词y

但一般数学模型只接受数值型输入,这里的x该怎么表示呢,显然不能用word2vec,因为这是我们训练完模型的产物,我们想要的是一个x的原始输入形式。

答案是:one-hot-encoder

所谓one-hot-encoder,其思想跟特征工程里处理类别变量的one-hot一样,本质是用一个只含1、其他都是0的向量来唯一标识词语。

我们看看Skip-gram的网络结构,x就是one-hot encoder形式的输入,y是在这V个词上输出的概率,我们希望跟真事的y的one-hot encoder一样

首先要说明一点:隐层的激活函数其实是线性的,相当于没有做任何处理,我们要训练这个神经网络,用反向传播算法[1],本质上是链式求导

当模型训练完后,最后得到的其实是神经网络的权重,比如现在输入一个x的one-hot encoder:[1,0,0...,0],则在输入层到隐含层的权重里,只有对应1这个位置的权重被激活,这些权重的个数,跟隐含层节数是已知的,从而这些权重组成一个响亮vx来表示x,而因为每个词语的one-hot encoder里面1的位置不同,所以这个响亮vx就可以用来唯一标识x

[1]反向传播算法
简称BP算法,适合于多层神经元网络的一种学习算法,他建立在梯度下降的算法基础上,BP网络的输入输出关系实际上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏控件想m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性,他的信息处理能力来源于简单的非线性函数的多次复合,因此具有很强的函数复现能力,这是BP算法得以应用的基础
BP算法(即误差反向传播算法)主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络的对输入的响应达到预定的目标范围为止。

参考资料:https://zhuanlan.zhihu.com/p/26306795/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值