Spark MLlib — Word2Vec

本文介绍了Word2Vec的背景知识,包括词向量、分类和逻辑回归、Huffman编码。接着详细讨论了Spark MLlib中的Word2Vec模型,如CBOW和Skip-gram模型,以及使用Hierarchical Softmax的求解方法。最后提到了Word2Vec的应用。
摘要由CSDN通过智能技术生成

Word2vec 是 Google 在 2013 年开源的一款将词表征为实数值向量的高效工具。能够将单词映射到K维向量空间,同时由于算法考虑了每个单词的上下文环境,因此词向量表示同时具有语义特性。本文对Word2Vec的算法原理以及其在spark MLlib中的实现进行了对应分析。(PS:第一次用latex打这么多公式,真是心累~)

1.背景知识

1.1 词向量

NLP中词向量通常有两种表示方式:

  • One-hot Representaion
    把每个单词按顺序编号,每个词就是一个很长的向量,向量的长度等于词表的大小,只有对应位置上的数字编号为1,其余位置为0.在实际应用中一般采用稀疏矩阵的表示方式。例如:
    假设词表为{I, am, study, spark, machine, learning}
    则若用稠密矩阵来表示单词spark,则为[0,0,0,1,0,0,0], 在Scala语法中就是Vectors.dense(0,0,0,1,0,0,0);
    若用稀疏矩阵来表示单词spark,则为(6, 3, 1),这是一个三元组,6表示向量维度,3,1表示矩阵在3这个位置上的元素为1,其余位置元素均为0。在Scala语法中就是Vectors.sparse(6,(3),(1))
  • Distributed Representaion
    其基本思想是通过训练将每个词映射为K维实数向量,通过词之间的距离(例如cosine相似度、欧氏距离)来判断它们之间的语义相似度。Word2Vec就是使用这种Distributed Representaion的词向量表示方式。Word2Vec算法的一个附加输出就是输入语料文本中每个单词的Distributed Representaion词向量。

1.2 分类和逻辑回归

(1) 一般来说,回归不用再分类问题上,因为回归是连续模型,如果非要引入,可以使用logistic回归。logistic回归本质上仍是线性回归,只是在特征 X X 到结果 y 的映射中加入了一层函数映射,先做线性求和再使用 σ(z) σ ( z ) 作为假设函数来映射,将连续值映射到{0,1}上。logistic回归只能用于二分类,对于任意样本 x={ x1,x2,...xn}T x = { x 1 , x 2 , . . . x n } T ,其评估函数为:

hθ(x)=σ(θ0+θ1x1+θ2x2+...+θnxn)=σ(θTx)=11+eθTx(1.1) (1.1) h θ ( x ) = σ ( θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n ) = σ ( θ T x ) = 1 1 + e − θ T x

其中 σ(z)=11+ez σ ( z ) = 1 1 + e − z 就是sigmoid函数
(2) 选用sigmoid函数来做logistic回归的理由有:

  • 平滑映射:能将 x(,) x ∈ ( − ∞ , ∞ ) 平滑映射到(0,1)区间

  • 其导数具有如下特点:

    σ(z)=ddz(11+ez)=ez(1+ez)2=11+ez(111+ez)=σ(z)(1σ(z))(1.2) (1.2) σ ′ ( z ) = d d z ( 1 1 + e − z ) = e − z ( 1 + e − z ) 2 = 1 1 + e − z ( 1 − 1 1 + e − z ) = σ ( z ) ( 1 − σ ( z ) )

(3) 使用logistic回归进行二分类,实际上是取阈值T=0.5,即使用如下判别公式:

y(x)={ 10hθ(x)0.5hθ(x)<0.5(1.3) (1.3) y ( x ) = { 1 h θ ( x ) ≥ 0.5 0 h θ ( x ) < 0.5

假设这里的二分类满足伯努利分布,也即
p(y=1|x;θ)p(y=0|x;θ)=hθ(x)=1hθ(x)(1)(2) (1) p ( y = 1 | x ; θ ) = h θ ( x ) (2) p ( y = 0 | x ; θ ) = 1 − h θ ( x )

也即:
p(y|x;θ)=(hθ(x))y(1hθ(x))1y(1.4) (1.4) p ( y | x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y

(4)参数 θ θ 向量的求取方法通常为:假设训练集是独立同分布的,期待模型能在全部训练数据上预测最准,也就是求使其概率积最大 θ θ ,使用最大似然估计,其对数似然函数表示为:
L(θ)l(θ)=p(Y|X;θ)=i=1mp(y(i)|x(i);θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)=logL(θ)=i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))(3)(1.5) (3) L ( θ ) = p ( Y | X ; θ ) = ∏ i = 1 m p ( y ( i ) | x ( i ) ; θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) (1.5) l ( θ ) = l o g L ( θ ) = ∑ i = 1 m y ( i ) l o g h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) )

(5)要求得使上面的似然函数 l(θ) l ( θ ) 最大的 θ θ ,可使用牛顿上升法,即使用 θ:=θ+αθl(θ) θ := θ + α ∇ θ l ( θ ) 迭代公式来不断迭代直到收敛,其中
θjl(θ)=i=1m(y(i)×1hθ(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值