Pytorch实现基于skip-gram的word2vec

对于词语的表示,最开始采用one-hot编码,用于判断文本中是否具有该词语;后来发展使用Bag-of-Words,使用词频信息对词语进行表示;再后来使用TF-IDF根据词语在文本中分布情况进行表示。而近年来,随着神经网络的发展,分布式的词语表达得到大量使用,word2vec就是对词语进行连续的多维向量表示。

区别于其它神经网络对词语embedding表示,Mikolov的word2vec非常漂亮,直接采用单层神经网络(或理解为sigmoid函数)对词语进行表示。具体的方法有两种CBOW和Skip-gram,具体模型结构如下:

CBOW是使用周边词语来预测当前词语出现的概率,而skip-gram是采用中心词语预测周边词语的概率。需要说明的是,当语料较少时使用CBOW方法比较好,当语料较多时采用skip-gram表示比较好。

本文具体描述skip-gram模型的原理与实现。假设给定一句话“中国 经济 近年来 发展 飞快”,skip-gram模型就是通过“近年来”预测其它周边词语的概率。模型的预测目标函数,就是使得中心词预测周边词的概率最大,具体数学表示为:

对于概率p的计算公式可以表示为:

当语料比较大时,词典规模会比较大,求softmax速度会变得很慢,严重影响了训练速度。此时有两种方法进行改进:(1)分层softmax; (2)负采样。分层softmax的原理很简单,就是构建Huffman树(使得计算概率的次数最小),正例词都在叶子结点,其他词为中间节点,分层进行softmax。负采样的思想也很简单,就是不计算所有词的概率算softmax,而是采样一些负样本,算对数sigmoid函数,近似softmax。具体原理就是最大化正例概率,最小化负例出现的概率。

根据上述公式,使用Pytorch进行模型实现,具体如下:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

R: 学习Gradient Boosting算法,提高预测模型准确率

24311
来自专栏磐创AI技术团队的专栏

谱聚类概述

1593
来自专栏IT派

神经网络告诉我,谁是世界上最「美」的人?

数月前,华南理工大学发布了关于「颜值预测」的论文和数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间。

1370
来自专栏机器之心

资源 | 神经网络告诉我,谁是世界上最「美」的人?

选自TowardsDataScience 作者:Dima Shulga 机器之心编译 参与:路、刘晓坤 「魔镜魔镜告诉我,谁是世界上最美的女人?」这句伴随童年的...

3024
来自专栏大数据文摘

干货 | Active Learning: 一个降低深度学习时间,空间,经济成本的解决方案

2222
来自专栏机器之心

4900篇NIPS 2018提交论文难评审?北京大学提出基于CNN的学术论文自动评分模型

2175
来自专栏CVer

[计算机视觉论文速递] 2018-03-20

通知:这篇推文有13篇论文速递信息,涉及图像分割、SLAM、显著性、深度估计、车辆计数等方向 往期回顾 [计算机视觉] 入门学习资料 [计算机视觉论文速递] ...

5588
来自专栏量子位

一文看懂如何搭建AI应用:10周学会深度学习,还赢下5千美元

春节后第一个休息日,量子位给大家准备了一个不一样的故事。 在这个故事里,主人公David Brailovsky(就叫阿D吧)参加了一场计算机视觉比赛。这个挑战赛...

1955
来自专栏AI研习社

博客 | 新的网络优化方法:随机权值平均

在本文中,数据科学研究人员 Max Pechyonkin 讨论了最近两篇有趣的论文,它们提供了一种简单的方法,通过用一种巧妙的集成方式来提高任何给定神经网络的性...

982
来自专栏AI研习社

英伟达发布新算法,可以重建缺失像素

日前,英伟达公司由 Guilin Liu 领导的研发团队发布了一种最先进的深度学习算法,可以编辑图像或复原那些像素有缺失的图像。

1293

扫码关注云+社区

领取腾讯云代金券