Word2Vec之Skip-Gram(理论及代码实现)

1、简介

Word2Vec,顾名思义就是把word转成向量,也就是所谓的向量化。word embedding 是一个将词向量化的概念,中文译名为"词嵌入"。Word2Vec是谷歌提出的一种word embedding的具体手段。

Word2Vec主要有两种模型:Skip-Gram和CBOW两种。从直观上理解,Skip-Gram是给定input word来预测上下文,而CBOW是给定上下文,来预测input word。

2、什么是one-hot编码?

首先了解一下one-hot编码:one-hot编码,即一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有自己独立的寄存器位,并且在任意时候,其中只有一位有效。

Word2Vec之Skip-Gram(理论及代码实现)_第1张图片

3、词的分布式表示

传统的独热表示仅仅将词符号化,不包含任何语义信息。如何将语义融入到词表示中?——词的分布式表示。

Word2Vec之Skip-Gram(理论及代码实现)_第2张图片

4、滑动窗口

Word2Vec之Skip-Gram(理论及代码实现)_第3张图片

5、神经网络模型

Word2Vec之Skip-Gram(理论及代码实现)_第4张图片

6、反向传播计算量大的原因

        理论上得到的输出ŷ与y做误差进行反向传播即可,但是在这个推导里面不可以,因为y为one-hot矩阵,只有1个地方为1,其他地方均为0,为了反向传播的效果更好,需要对预测的值进行softmax,得到ŷ',但是这样做会导致反向传播的计算量特别大。

Word2Vec之Skip-Gram(理论及代码实现)_第5张图片

7、如何训练多个词?

Word2Vec之Skip-Gram(理论及代码实现)_第6张图片

8、 具体过程:

①我们输入a的one-hot编码,经过计算得到ŷ',ŷ'与b的one-hot编码做交叉熵。

Word2Vec之Skip-Gram(理论及代码实现)_第7张图片

②再将a输入。经过计算得到ŷ',ŷ'与c的one-hot编码做交叉熵。

Word2Vec之Skip-Gram(理论及代码实现)_第8张图片

③优化:可以将softmax改进成n个二分类的逻辑回归分类器,即把词匹配的方法改进。

Word2Vec之Skip-Gram(理论及代码实现)_第9张图片

④模型如何放进网络里面训练,又如何产生结果?

Word2Vec之Skip-Gram(理论及代码实现)_第10张图片

Word2Vec之Skip-Gram(理论及代码实现)_第11张图片

9、代码实现

①、导入包

Word2Vec之Skip-Gram(理论及代码实现)_第12张图片

②准备数据

Word2Vec之Skip-Gram(理论及代码实现)_第13张图片

③定义参数

Word2Vec之Skip-Gram(理论及代码实现)_第14张图片

④ 处理数据

Word2Vec之Skip-Gram(理论及代码实现)_第15张图片

⑤ 构建数据集

Word2Vec之Skip-Gram(理论及代码实现)_第16张图片

⑥定义dataloader

⑦定义模型

Word2Vec之Skip-Gram(理论及代码实现)_第17张图片

⑧计算损失

Word2Vec之Skip-Gram(理论及代码实现)_第18张图片

⑨训练

Word2Vec之Skip-Gram(理论及代码实现)_第19张图片

 

 

 

 

 

你可能感兴趣的:(word2vec,p2p,深度学习)