首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Word2Vec看看DeepLearning

word2vec是google几年前开源出来的一个小的机器学习项目,代码极为精简,其作用就是把一个词转换为200维(可以设置)的向量,比如:father->[0.11234234,0.00032112,....]。 转换成向量之后有什么用?作用太大了,算词之间的关联关系,对词进行聚类都变得非常简单。看下图:

下面我们就通过一个例子一步步的来看它是怎么做的?

word2vec中有2个模型,在训练的时候需要选择一个:CBow(bag of words),skip-gram。

先看看CBow,把一个词前后的几个词看成一个整体来预测该词出现的概率,通过windows size来设置往前后看几个词:

假设我们现在有一句话, windows size为2,我们会得到如下训练data set:

{i coffee everyday->drink}

,每个单词用one-hot-vector 表示:

i->[1,0,0,0]

like->[0,1,0,0]

drink->[0,0,1,0]

coffee->[0,0,0,1]

以第3个训练数据为例

输入x1=i ,x2=drink, x3=everyday ,输出:coffee

初始化因子W,计算W*x,作为Hidden layer的输入

计算Hiden Layer的输出,同样初始化一个因子W'

计算输出层,SoftMax:

计算Cost值,回想一下前面“softmax”的文章中提到的方法:

Cost值:L=-(0*ln(0.23)+0*ln(0.03)+1*ln(0.62)+0*ln(0.12))=-0.478

反向传播更新W'和W,回想一下前面“BP”的文章中提到的方法,为了加深理解,我把整个过程推算一遍:

8. 继续下一轮迭代训练。。

skig-gram模型跟cbow是反着来的,用一个词来预测前后X个词,还是用上面的,如果用skip-gram模型,windows_size还是2,则得到如下training data set:

有兴趣的可以自己模拟算一遍。

自然语言处理是很有意思的领域,很多方法都很巧妙,后面再写一下HMM模型,跟这个对比着看看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608G118LW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券