word2vec技术通俗易懂的解释

word2vec思路很简单,我觉得网上很多介绍都弄得太复杂、太细节化了,下面说说我的看法。

1. 数学模型

word2vec说白了就是一个映射:
word→Fvec(1)\tag1 word \stackrel{F} \to vec wordFvec(1)

那么word、vec、F 如何定义呢?

  • word 采用 one-hot 编码,如果一种语言有 m 个单词的词汇量,这个就是一个 m 维向量。感觉这个向量是不是块头很大?如何提升效率不是本文要解决的问题,我们还是把原理先弄明白吧。
  • vec 是普通的向量,不妨假设是 n 维向量。
  • F 就是神经网络模型。

2. 模型的训练方法

神经网络模型(2) 无法实现标注其训练数据,如果知道如何标注,这个问题就不用研究了。因此,我们得探讨一个间接的方法来训练这个模型。

2.1 确定训练数据的形式

我们不妨利用一批实际文本做训练样本,这样做的好处是不需要人为标注。

我们假设一个 word 的意义取决于句子中该 word 所在句子中前后顺序排列的其他单词。如果两个 word 在大量的文献中,他们在句子中所处的前后位置关系很接近,我们认为这两个 word 的意义是相近的。

2.2 从训练数据中生成数据 word 和标签 label

从训练数据,提取 word 很容易,主要问题聚焦在标签 label 如何生成。

对于一个 word,我们可以用它所在句子中的其他单词作为其标签。作为简化方案,选择 word 所在句子前后若干个单词,比如前后各取 3 个单词,组成一个词袋,来做其标签。这样的话,word 的标签 label 也是一个 m 维向量。

当然了,同一个 word 在不同的句子中,就会有不同的标签。这个没啥关系,通过大量的训练,我们总会得到 word 到 label 的分量的一个概率分布。意义相近的 word,其语境的概率分布也会相近。

2.3 训练模型

把数学模型(1) 扩展一下:
word→Fvec→Glabel(2)\tag2 word \stackrel{F} \to vec \stackrel{G} \to label wordFvecGlabel(2)

这样一来,经过大量语料训练之后,模型(2)就完成了。当然,也就顺便得到了模型(1)。目前我们一般不会直接用自己的语料训练词向量,而是使用别人在超大量语料库上训好的词向量,直接用这些现成的词向量进行下游任务。除了word2vec之外,比较常用的还有GloVe。至于ELMo和BERT,它的原理就跟w2v完全不同了,这个需要单独学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值