机器学习数据预处理2:词向量 (word2vec)

google 两篇关于 word2vec 的论文: 
[1]Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space. In Proceedings of Workshop at ICLR, 2013. 
[2]Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. Distributed Representations of Words and Phrases and their Compositionality. In Proceedings of NIPS, 2013.

google word2vec 项目地址
--------------------- 

1. 背景

(1) 机器学习数据预处理方法: 

           在 word2vec 出现之前,机器学习数据预处理的 自然语言处理的方法 一般是把 字词 转为 离散的单独的符号,也就是 One-Hot Encoder。具体内容参照我的上一篇博客:数据预处理1:独热编码(One-Hot)。鉴于该篇博客介绍的 One-Hot 编码的缺点,2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。

(2) 现有方法存在的问题:

(1) 城市编码是随机的,向量之间相互独立,看不出城市之间可能存在的 关联关系

(2) 其次,向量维度的大小取决于语料库中字词的多少。如果将世界所有城市名称对应的向量合为一个矩阵的话,那这个矩阵过于稀疏,并且会造成 维度灾难。 

 

2. Word2Vec

定义:

word2vec 也叫 word embeddings,中文名 “词向量”,作用就是将 自然语言中的字词 转为 计算机可以理解的 稠密向量(Dense Vector)。

功能:

          对于One-Hot 编码的维度灾难 (产生的是稀疏向量),用 Vector Representations 可以有效解决这个问题。

          (1) Word2Vec 可以将 One-Hot Encoder 转化为低维度的连续值,也就是稠密向量,

          (2) 并且其中 意思相近的词 将被映射到 向量空间中 相近的位置。 如果将 embed 后的城市向量 通过 PCA 降维后可视化展示出来,那么结果如下。

模型:

Word2Vec 模型其实就是简单化的神经网络。Word2Vec 方法由两部分组成。

1. 首先是将高维独热形式表示的单词映射成低维向量。例如将 10,000 列的矩阵转换为 300 列的矩阵。这个过程被称为词嵌入。

2. 第二个目标是在保留单词上下文的同时,从一定程度上保留其意义。

Input Layer:是 One-Hot Vector,

Hidden Layer: 没有激活函数,也就是线性的单元。这一层输出一个 dense vector,作为下一层的输入。

Output Layer:维度跟 Input Layer 的维度一样,用的是Softmax回归。
 

input layer —> hidden layer 网络的参数计算 (词嵌入过程):

上图中,乘号右边的矩阵 代表 hidden layer 的权重。设 input layer神经元数目(insize) 是 a ,hidden layer神经元数目 (outsize) 是 b ,weights数目 w,则有以下关系:w=a*b。 因此,权重矩阵的维度是 a*b。

上图中,乘号左边的绿色的元素 代表 输入向量中的一个神经元,右边绿色的一行元素 代表 该输入神经元hidden layer所有神经元连接的一组weights

下图是示例。

矩阵代表以上计算过程仍然存在缺点,因此被做简化。

缺点:

       我们来看一下上图中的矩阵运算,左边分别是1 x 5 和5 x 3 的矩阵,结果应该是1 x 3的矩阵,按照矩阵乘法的规则,结果的第一行第一列元素为0 x 17 + 0 x 23 + 0 x 4 + 1 x 10 + 0 x 11 = 10,同理可得其余两个元素为12,19。如果10000个维度的矩阵采用这样的计算方式是十分低效的。

解决:

       为了有效地进行计算,这种稀疏状态下不会进行矩阵乘法计算。上面的例子中,左边向量中取值为1的对应维度为3(下标从0开始),那么对应的就是矩阵的第3行(下标从0开始)—— [10, 12, 19]。这样模型中的隐层 权重矩阵 便成了一个”查找表“(lookup table)。进行矩阵计算时,直接去查 输入向量中 取值为1的 维度下 对应的那些 权重值。隐层的输出 就是 每个输入单词 的“嵌入词向量”。

3. 分类

(1) CBOW模式:

定义:给定 上下文,来预测 input word

应用:对 小型数据库 比较合适。

t 代表语句中的位置。

(2) Skip-Gram模式:

定义:  给定 input word 来预测 上下文

应用:大型语料 中表现更好。

例子:

对同样一个句子:Hangzhou is a nice city。如果要构造一个语境与目标词汇的映射关系,其实就是 input 与 label 的关系。 

CBOW可以制造的映射关系为:[Hangzhou,a]—>is,[is,nice]—>a,[a,city]—>nice 
Skip-Gram可以制造的映射关系为:(is,Hangzhou),(is,a),(a,is), (a,nice),(nice,a),(nice,city)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦dancing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值