没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1 Word2vec
https://blog.csdn.net/itplus/article/details/37969979
在传统的 NLP 中,我们将单词视为离散符号,然后可以用 one-hot 向量表示。向量的维
度是整个词汇表中单词的数量。单词作为离散符号的问题在于,对于 one-hot 向量来说,没
有自然的相似性概念。因此,另一种方法是学习在向量本身中编码相似性。核心思想是一个
词的含义是由经常出现在其旁边的单词给出的。词向量是字符串的实值向量表示。我们为每
个单词建立一个密集的向量,选择它以便类似于类似上下文中出现的单词的向量。对于大多
数 NLP 任务而言,词向量被认为是一个很好的起点。它们允许深度学习在较小的数据集上
也是有效的,因为它们通常是深度学习体系的第一批输入,也是 NLP 中最流行的迁移学习
方式。在词向量中最流行的应该是 Word2vec,它是由谷歌开发的模型,另外一个是由斯坦
福大学开发的 GloVe。
1.2 词向量的意义
自然语言处理(NLP)相关任务中, 要将自然语言交给机器学习中的算法来处理,通
常需要首先将语言数学化,因为机器不是人,机器只认数学符号。向量是人把自然界的东西
抽象出来交给机器处理的东西,基本上可以说向量是人对机器输入的主要方式了。
词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量就是把一个词
转化成一个向量。
一种最简单的词向量方式是 one-hot representation,就是用一个很长的向量来表示一个
词,向量的长度为词典的大小,向量中只有一个 1,其它位置全为 0。1 的位置对应该词在
词典中的位置。这种 One-hot Representation 如果采用稀疏方式存储,会是非常的简洁:也
就是给每个词都分配一个数字 ID。但这种词表示有两个缺点:(1)容易受维数灾难的困扰,
尤其是将其用于 Deep Learning 的一些算法时;(2)不能很好地刻画词与词之间的相似性。
另一种就是 Distributed Representation,其基本想法是直接用一个普通的向量表示一个
词,这种向量一般长成这个样子: [0.792, −0.177, −0.107, 0.109, −0.542, ... ],也就是普通
的向量表示形式。维度以 50 和 100 维常见。由于是用向量表示,而且用较好的训练算法得
到的词向量的向量一般是有空间上的意义的,也就是说, 将所有这些向量放在一起形成一
个词向量空间,而每一向量则为该空间中的一个点,在这个空间上的词向量之间的距离度量
也可以表示对应的两个词之间的“距离”,这样的特性使得词向量很有意义。考虑英语和西
班牙语两种语言,通过训练分别得到它们对应的词向量空间 E 和 S。从英语中取出五个词
one, two,three, four, five,设其在 E 中对应的词向量分别为 v1, v2, v3, v4, v5,
为方便作图,利用主成分分析(PCA)降维,得到相应的二维向量 u1, u2, u3,u4, u5,
在二维平面上将这五个点描出来,如下图左图所示。类似地,在西班牙语中取出(与 one,
two, three, four, five 对应的) uno, dos, tres, cuatro,cinco,设其在 S 中对应的
词向量分别为 s1, s2, s3, s4, s5,用 PCA 降维后的二维向量分别为 t1, t2, t3,
t4, t5,将它们在二维平面上描出来(可能还需作适当的旋转),如下图右图所示:
观察左、右两幅图,容易发现:五个词在两个向量空间中的相对位置差不多,这说明两
种不同语言对应向量空间的结构之间具有相似性,从而进一步说明了在词向量空间中利用距
离刻画词之间相似性的合理性。
1.3 语言模型
语言模型形式化的描述就是给定一个 T 个词的字符串 s,看它是自然语言的概率
。 到 依次表示这句话中的各个词。对于统计语言模型而言,利
用最大似然可把模型设为:
在计算 这个东西的过程中,有非常多的方法被开发出来了。利用函数
来拟合计算 ,换句话说, 不是根据语料库统计出来的,而
是直接把 和 代到一个函数里面计算出来的。用数学的方法描述就是:
然后就有人提出了用神经网络来拟合这个函数,就有了各种方法, word2vec 是其中的
一种。
word2vec 主要分为 CBOW(Continuous Bag of Words)和 Skip-Gram 两种模式。CBOW 是
从原始语句推测目标字词,而 Skip-Gram 正好相反,是从目标字词推测出原始语句。CBOW
对小型数据库比较合适,而 Skip-Gram 在大型语料中表现更好。
对同样一个句子:Hangzhou is a nice city。我们要构造一个语境与目标词汇的映射关系,
其实就是 input 与 label 的关系。滑窗尺寸为 1。
CBOW 可以制造的映射关系为:[Hangzhou,a]—>is,[is,nice]—>a,[a,city]—>nice
Skip-Gram 可以制造的映射关系为(is,Hangzhou),(is,a),(a,is), (a,nice),(nice,a),(nice,city)
到这里你可能会注意到,这个训练过程的参数规模非常巨大。假设语料库中有 30000
个不同的单词,hidden layer 取 128,word2vec 两个权值矩阵维度都是[30000,128],在使用 SGD
对庞大的神经网络进行学习时,将是十分缓慢的。而且,你需要大量的训练数据来调整许多
权重,避免过度拟合。数以百万计的权重数十亿倍的训练样本意味着训练这个模型将是一个
野兽。
1.3.1 CBOW
v
i
∈
R
d
,词典中索引为 i 的词的背景词向量;
u
i
∈
R
d
,词典中索引为 i 的词的中心词向量;
设中心词为
,背景词
1
,...,
2
,m 表示窗口大小。给定背景词生成中心词的条件
概率:
(
|
1
,...,
2
) =
(
1
2
(
1
+⋯+
2
))
∈
(
1
2
(
1
+⋯+
2
))
简写为:
(
|
) =
(
)
∈
(
)
其中w
o
= w
o
1
,...,w
o
2m
,v
o
= V
o
1
+⋯+ V
o
2m
。
给定一个 T 个词的字符串 s,根据语言模型有:
P(s) = P(w
1
,
w
2
,...,
w
T
) =
i=1
T
p(
w
i
|context(
w
i
)) =
i=1
T
p(w
i
|w
i−m
,...,w
i−1
,w
i+1
,...,w
i+m
)
我们的目标是让 P(s)最大化,这就变成最大似然估计问题,等价于最小化损失函数:
−
=1
(
|
−
,...,
−1
,
+1
,...,
+
)
将
w
o
替换上式的
w
i−m
,...,w
i−1
,w
i+1
,...,w
i+m
,得到:
=−
=1
(
|
) =−
=1
(
−
∈
(
)
)
对背景向量
v
o
k
求导:
=−
=1
1
2
(
−
∈
(
) ∙
∈
(
)
) =−
=1
1
2
(
−
∈
(
|
)
)
在 CBOW 中我们使用背景词向量作为词的表针向量。上面的最终结果显示,每次计算
一个背景词向量的梯度都要计算
j∈
p(w
j
|w
o
)u
j
,也就是计算词典中每个词作为上下文w
o
的中心词的概率,这个计算量非常大。
所以 Word2vec 中采用了两种加速训练方法,第一种是负采样,即计算
j∈
p(w
j
|w
o
)u
j
的时候不再是对词典中每个词都算一遍,而是抽取 neg 个负样本,只对这些负样本计算
j∈neg
p(w
j
|w
o
)u
j
;第二种方法是层次 softmax,它完全摒弃了
j∈
p(w
j
|w
o
)u
j
,而采用另一
个概率计算方法。
1.3.2 skip-gram
v
i
∈
R
d
,词典中索引为 i 的词的中心词向量;
u
i
∈
R
d
,词典中索引为 i 的词的背景词向量;
注意和 CBOW 中定义相反。给定中心词
生成背景词
的条件概率:
(
|
) =
(
)
∈
(
)
那么给定中心词
生成上下文的条件概率:
((
)|
) =
∈(
)
(
)
∈
(
)
给定一个 T 个词的字符串 s,窗口大小为 m,根据语言模型有:
P(s) = P(w
1
,w
2
,...,w
T
) =
t=1
T
p(context(w
t
)|w
t
) =
i=1
T
p(w
t−m
,...,
w
t−1
,
w
t+1
,...,
w
t+m
|w
t
)
我们的目标是让 P(s)最大化,这就变成最大似然估计问题,等价于最小化损失函数:
=−
=1
∈(
)
(
)
∈
(
)
=
=1
∈(
)
(
)
∈
(
)
=
=1
∈(
)
(
−(
∈
(
) ))
对中心词
v
t
求导:
=
∈(
)
(
−
∈
(
)
∈
(
)
) =
∈(
)
(
−
∈
(
|
)
)
1.4 词向量模型
我们先回顾下传统的神经网络词向量语言模型,里面一般有三层,输入层(词向量),
隐藏层和输出层(层)。里面最大的问题在于从隐藏层到输出的层的计算
量很大,因为要计算所有词的概率,再去找概率最大的值。这个模型如下图所示。
其中 V 是词汇表的大小。
剩余23页未读,继续阅读
资源评论
纽约的自行车
- 粉丝: 76
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AIS2024 valid
- 最入门的爬虫代码 python.docx
- 爬虫零基础入门-爬取天气预报.pdf
- 最通俗易懂的 MongoDB 非结构化文档存储数据库教程.zip
- 以mongodb为数据库的订单物流小项目.zip
- 腾讯云-mongodb数据库, 项目部署.zip
- 腾讯 APIJSON 的 MongoDB 数据库插件.zip
- 理解非关系型数据库和关系型数据库的区别.zip
- 操作简单的Mongodb网页web管理工具,基于Spring Boot2.0支持mongodb集群.zip
- tms-mongodb-web,提供访问mongodb数据的REST API和可灵活扩展的mongodb web 客户端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功