word2vec学习

word2vec是指通过神经网络学习将单词转换成特定长度的数值向量的过程。

这里的向量应当尽量满足:对于同义词如cat、kitty,二者对应的数值向量值应当比较接近。

通常,学习单词的向量表示的方法为通过类似于自编码器的网络,学习神经网络中的权重,

得到的权重即为我们需要的向量表示。

(这个看博客能理解:若输入数据为10000维的单一稀疏向量(只有一个为1),输入到隐藏层的W为10000*300,

则最后训练结束后,每一行表示一个单词对应的词向量。)

一个关于Word2Vec的结构、训练、实现的博客:

http://www.softcopyright.net/show.aspx?cid=103&id=111412

谷歌训练了一个包含3Million个词汇对应的词向量的网络,这个网络的训练数据来源于包括1000亿个词汇的google news。

当然google也实现了python的开源项目word2vec,可以通过语料库作为训练数据,训练数据的词向量表示。

(对于中文语料库来讲,需要首先进行分词,一个分词工具:ANSJ)

关于中文词向量的例子:http://www.cnblogs.com/hebin/p/3507609.html

——————————————————————————————————————————————————

词向量的tensorflow教程:https://www.tensorflow.org/tutorials/word2vec

——————————————————————————————————————————————————

在训练过程中,在经过softmax后(概率和为1),计算softmax结果与实际类别(只有一个值为1,剩下为0)的熵,

将这个熵作为loss函数,但是这样的训练速度非常慢。

为了加快速度,这里随机选择了几个错误类别(与实际类别不一样),计算sofmaxt结果与这个假结果的熵的负值,

将真熵与假熵共同作为梯度下降的loss函数,这样可以明显加快训练速度。这个算法为negative sampling(NCE)

tensorflow上的一个翻译:http://www.jeyzhang.com/tensorflow-learning-notes-3.html

至于怎么选择假结果,根据信息学来选择,出现概率大的被选择为负样本的概率较大。

如France与Paris,二者的结合给出的信息量很大,而France与the结合的信息量几乎为0,意思是说这种情况不应该发生。

——————————————————————————————————————————————————

为了进一步加快训练速度,在训练数据上也进行一定的操作:根据单词出现的概率,剔除掉一些训练数据。

总体剔除方法为:频率越大,被提出的概率越大,这样能不减少样本丰富度的情况下保证训练精度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值