Word Embedding

简介: Word Embedding

如何表示词义

流程


文本文件->分词后的序列->词表示的向量(词嵌入)->解决具体任务的算法;


用离散符号表示词

传统NLP中,我们将词表示为一个个的离散符号,如:sun、hotel、fruit……,我们可以用o n e − h o t one-hotone−hot方式将词代表为向量形式,如:


s u n = [ 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] sun=[0,1,0,0,0,0,0,0,0,0]

sun=[0,1,0,0,0,0,0,0,0,0]


h o t e l = [ 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 ] hotel=[0,0,0,0,1,0,0,0,0,0]

hotel=[0,0,0,0,1,0,0,0,0,0]


此时存在问题:


向量之间无相似性,各个词用o n e − h o t one-hotone−hot方式表示时,不同词之间都是正交的,不含有近似单词的信息;

向量维度过高,利用o n e − h o t one-hotone−hot方式表示词向量时,向量维度等于词表中的词数,当词数量过多时,这个方法所带来的维度过高问题就会凸显出来;

分布式语义

分布表示的思路


语料->对共现词计数->将计数后的数据转换为向量 ->通过一系列降维方法,将高维转换为低维


LSA(潜在语义分析)


Word Embedding(词嵌入)


通过给每个单词学习一个密集向量,类似于出现在相似上下文中的单词向量,这样的词向量就叫做word embedding或者word representations;


模型结构图


image.png算法基本思想


输入层通过将大规模语料中的每个单词表示为一个密集向量,其中每个单词都是通过向量来表示,对文本进行遍历,每个位置都有一个中心词c cc和语境词表示o oo,通过利用c cc和o oo词向量之间的相似度,从而在给定c cc,计算出o oo的概率(或给定o oo,计算出c cc的概率),还需要通过调节词向量来最大化概率;


具体例子



image.png在给定第t tt个位置中心词b a n k i n g bankingbanking的情况下,当窗口大小设为2 22时,通过给定p ( w t ) p(w_t)p(w

t


)来计算左右窗口大小为2 22的词的条件概率;


相似度


对于每个位置t = 1 , 2 , … … , T t=1,2,……,Tt=1,2,……,T,当预测固定窗口大小为m mm的上文问关联词时,给出中心词为w t w_tw

t


,则相似度为:


L ( θ ) = ∏ t = 1 T ∏ − m < = j < = m , j ≠ 0 P ( w t + j ∣ w t ; θ ) , 其 中 θ 是 所 有 需 要 优 化 的 变 量 L(\theta)=\prod ^T_{t=1} \prod _{-m<=j<=m,j\not=0} P(w_{t+j}|w_t;\theta),其中\theta是所有需要优化的变量

L(θ)=

t=1

T


 

−m<=j<=m,j


=0


P(w

t+j


∣w

t


;θ),其中θ是所有需要优化的变量


目标函数(损失/代价函数)

J ( θ ) = − 1 T l o g L ( θ ) = − 1 T ∑ t = 1 T ∑ − m < = j < = m , j ≠ 0 l o g P ( w t + j ∣ w t ; θ ) J(\theta)=-\frac{1}{T}logL(\theta)=-\frac{1}{T}\sum^T_{t=1}\sum_{-m<=j<=m,j\not=0}logP(w_{t+j}|w_t;\theta)

J(θ)=−

T

1


logL(θ)=−

T

1


 

t=1

T


 

−m<=j<=m,j


=0


logP(w

t+j


∣w

t


;θ)


即目标函数为负的相似度函数对数的平均值,通过最小化目标函数,从而将预测的准确率最大化;


预测函数


如何最小化目标函数呢?我们可以通过对预测函数的的处理来解决这一问题。对于预测函数P ( w t + j ∣ w j , θ ) P(w_{t+j}|w_j,\theta)P(w

t+j


∣w

j


,θ),可以通过用词w ww的两个向量来解决。我们假设V w V_wV

w


是中心词,U w U_wU

w


是语境词。则对于中心词c cc和语境词o oo而言,存在如下关系:


P ( o ∣ c ) = e x p ( u o T v c ) ∑ w ∈ V e x p ( u w T v c ) P(o|c)=\frac{exp(u^T_ov_c)}{\sum_{w\in V}exp(u^T_wv_c)}

P(o∣c)=

w∈V


exp(u

w

T


v

c


)

exp(u

o

T


v

c


)



其中,分子中o oo和v vv的点积u o T v C u^T_o v_Cu

o

T


v

C


越大,则最后得到的概率P ( o ∣ v ) P(o|v)P(o∣v)越大。而分母则通过指数函数计算之后,从而实现了对整个词表的标准化;


实例


image.png其中P ( u p r o b l e m s ∣ v i n t o ) P(u_{problems}|v_{into})P(u

problems


∣v

into


)为P ( p r o b l e m s ∣ i n t o ; u p r o b l e m s , v i n t o , θ ) P(problems|into;u_{problems},v_{into},\theta)P(problems∣into;u

problems


,v

into


,θ)的简写形式;


image.pngSoftmax回归

s o f t m a x ( x ) i = e x p ( x i ) ∑ j = 1 n e x p ( x j ) = p i softmax(x)_i = \frac{exp(x_i)}{\sum^n_{j=1}exp(x_j)}=p_i

softmax(x)

i


=

j=1

n


exp(x

j


)

exp(x

i


)


=p

i



s o f t m a x softmaxsoftmax又称为多项逻辑回归(m u l t i n o m i a l l o g i s t i c r e g r e s s i o n multinomial logistic regressionmultinomiallogisticregression),多用于分类过程,它通过将多个神经元的输出,映射到( 0 , 1 ) (0,1)(0,1)区间。它通过将任意值x i x_ix

i


映射到一个概率分布p i p_ip

i


上,"m a x maxmax“是因为它会将输入中最大的值的概率进一步放大,而”s o f t softsoft"则是因为对于输入中极小的值,它也人然后分配一些概率,而不是直接丢弃。因此,s o f t m a x softmaxsoftmax函数常常用在深度学习中;


word2vec中将文本进行向量表示的方法

C B O W ( C o n t i n u o u s B a g o f W o r d s ) CBOW(Continuous Bag of Words)CBOW(ContinuousBagofWords)


image.png给定上下文中的词,然后预测中心词。从而利用中心词的预测结果情况,利用梯度下降方法不断调整上下文词的向量。训练完成后,每个词都作为中心词遍历了一遍,将上下文中的词向量进行调整,从而获取整个文本中所有词的向量;


S G ( S k i p − G r a m ) SG(Skip-Gram)SG(Skip−Gram)


image.png给定中心词,然后预测上下文中的词。从而利用上下文中的词的预测结果情况,利用梯度下降法不断调整中心词的词向量,最后文本遍历完一遍之后,就得到了所有词的词向量;


C B O W CBOWCBOW和S G SGSG的比较


两者均为三层神经网络(输入层、投影层和输出层)。S G SGSG中,每个词作为中心词时,是一对多的情况,多个上下文中的词对一个中心词进行“训练”,然后得出较准确地中心词的向量结果,这样最终的效果更好。C B O W CBOWCBOW中,是多对一的情况,多个上下文中的词从一个中心词处进行“学习”,这样效率更高,速度快,但是最终效果却不如S G SGSG。此外,在S G SGSG中,每个词都会受上下文词的影响,每个词作为中心词时,需要进行K KK次训练(K KK为窗口大小),所以经过多次调整将使得词向量相对更准确。C B O W CBOWCBOW预测词数和整个文本中词数几乎相等,每次预测才会进行一次反向传播。


模型优化的方法

分层S o f t m a x SoftmaxSoftmax


image.png用于计算s o f t m a x softmaxsoftmax的方法,用二叉树(根据类标频数构造的霍夫曼树)来表示词汇表中的所有单词。如上图,其中,白色节点表示词汇表中的所有单词,而黑色节点则表示隐节点。其中V VV个单词存储于二叉树的叶子节点单元,而对于每个叶子节点,都有一条唯一的路径可以从根节点达到该叶子节点,这条路径用于计算该叶子节点所代表的单词的概率。在这个模型中,不存在单词的输出向量,而是V − 1 V-1V−1个隐节点中都有一个输出向量v n ( w , j ) ‘ v ^`_{n(w,j)}v

n(w,j)


,单词作为输出词的概率被定义为:


p ( w = w O ) = ∏ j = 1 L ( w ) − 1 σ ( [ [ n ( w , j + 1 ) = c h ( n ( w , j ) ) ] ] . v n ( w , j ) ‘ T h ) p(w=w_O)=\prod ^{L(w)-1}_{j=1}\sigma([[n(w,j+1)=ch(n(w,j))]].{v^`_{n(w,j)}}^Th)

p(w=w

O


)=

j=1

L(w)−1


σ([[n(w,j+1)=ch(n(w,j))]].v

n(w,j)


 

T

h)


其中,c h ( n ) ch(n)ch(n)是节点n nn的左侧子节点,v n ( w , j ) ‘ v^`_{n(w,j)}v

n(w,j)


是隐节点n ( w , j ) n(w,j)n(w,j)的向量表示(即“输出向量”)。而h hh则是隐藏层的输出值(SG模型中,h = v w i h=v_{wi}h=v

wi


;CBOW模型中,h = 1 C ∑ c = 1 C v w c h=\frac{1}{C}\sum_{c=1}^C v_{w_c}h=

C

1


c=1

C


v

w

c



),[ [ x ] ] [[x]][[x]]则为一个特殊函数,其定义如下:


[ [ x ] ] = { 1    , i f   x   i s   t r u e − 1   ,   o t h e r s [[x]]=

{1  ,if x is true−1 , others

{1  ,if x is true−1 , others

[[x]]={

1  ,if x is true

−1 , others



负采样技术


为解决数量过于庞大的输出向量的更新问题,于是在更新时不更新所有向量,而只更新他们的一个样本。正样本应该出现在我们的样本中,此外也需要加入几个单词作为负样本。而在采样的过程中,我们需要任意指定一个总体的概率分布,这个分布就叫做噪声分布,标记为P n ( w ) P_n(w)P

n


(w)。在w o r d 2 v e c word2vecword2vec中,作者用一个定义好的后多项分布的负采样形式取代简化的训练目标,从而产生高质量的嵌入:


E = − l o g σ ( v w O ‘ T h ) − ∑ w j ∈ W n e g l o g σ ( − v w j ‘ T h ) E=-log\sigma({v^`_{w_O}}^Th)-\sum_{w_j\in W_{neg}}log\sigma(-{v^`_{w_j}}^Th)

E=−logσ(v

w

O



 

T

h)−

w

j


∈W

neg



logσ(−v

w

j



 

T

h)


其中,w O w_Ow

O


是正样本(即输出单词),v w O ‘ v^`_{w_O}v

w

O



是词向量。而h hh则是隐藏层的输出值(SG模型中,h = v w i h=v_{wi}h=v

wi


;CBOW模型中,h = 1 C ∑ c = 1 C v w c h=\frac{1}{C}\sum_{c=1}^C v_{w_c}h=

C

1


c=1

C


v

w

c



)。W n e g = { w j ∣ j = 1 , … , K } W_{neg}=\{w_j|j=1,…,K\}W

neg


={w

j


∣j=1,…,K}是从P n ( w ) P_n(w)P

n


(w)中采样得到的单词集合,即负样本。


G l o v e GloveGlove

定义


基于计数和直接预测的方法;


目标函数


J ( θ ) = 1 2 ∑ i , j = 1 W f ( P i j ) ( u i T v j − l o g P i j ) 2 J(\theta)=\frac{1}{2}\sum^W_{i,j=1}f(P_{ij})(u^T_iv_j-logP_{ij})^2

J(θ)=

2

1


 

i,j=1

W


f(P

ij


)(u

i

T


v

j


−logP

ij


)

2


X f i n a l = U + V X_{final}=U+V

X

final


=U+V


其中,P i j P_{ij}P

ij


是单词j jj出现在单词i ii上下文中的概率,而f ( P i j ) f(P_{ij})f(P

ij


)则是为了去除噪声而设定的函数。


如何评价E m b e d d i n g EmbeddingEmbedding

内在方式:对特定/中间子任务的评估;


外在方式:应用到具体任务中;


f a s t T e x t fastTextfastText分类

在文本分类任务中,f a s t T e x t fastTextfastText作为一种浅层网络,能取得媲美于深度网络的精度,但是训练时间却比深度网络快许多数量级。一般情况下,用f a s t T e x t fastTextfastText进行文本分类的同时也会产生词的e m b e d d i n g embeddingembedding;


字符级的n − g r a m n-gramn−gram


w o r d 2 v e c word2vecword2vec中以词作为原子,为每个词生成一个向量,而忽略词内部形态特征。面对这一问题,f a s t T e x t fastTextfastText采用字符级的n − g r a m n-gramn−gram来表示一个单词。通过这样处理则有两个优点;


对于低频词,生成的词向量效果更好,其n − g r a m n-gramn−gram可以与其他词共享;

对于训练词库外的词,仍然可以构建其词向量,可通过叠加其字符级n − g r a m n-gramn−gram从而生成向量;

模型架构


image.png类似于w o r d 2 v e c word2vecword2vec中的C B O W CBOWCBOW模型,只有输入层、隐藏层、输出层三层。其中,输入为多个单词表示成的向量,输出是一个特定的t a r g e t targettarget,隐藏层是对多个词向量的叠加平均。不同的是,C B O W CBOWCBOW的输入是目标词上下文中的词,而f a s t T e x t fastTextfastText的输入则是多个单词及其n − g r a m n-gramn−gram特征。这些特征用于表示单个文档,C B O W CBOWCBOW中输入词的是经过o n e − h o t one-hotone−hot编码过的,输出为目标词;而f a s t T e x t fastTextfastText中输入特征则是经e m b e d d i n g embeddingembedding过的特征,输出是各个文档对应的类标,且采用分层s o f t m a x softmaxsoftmax优化措施,大大加快了训练速度;


核心思想


将整篇文档的词及n − g r a m n-gramn−gram向量叠加平均,从而得到文档向量,然后利用文档向量做多层s o f t m a x softmaxsoftmax多分类,主要涉及到n − g r a m n-gramn−gram特征的引入以及分层S o f t m a x SoftmaxSoftmax分类技术;


f a s t T e x t fastTextfastText样例


主要步骤


添加输入层(即e m b e d d i n g embeddingembedding层);

添加隐藏层(即投影层);

添加输出层(即s o f t m a x softmaxsoftmax层);

指定损失函数、优化器类型、评价指标、编译模型;


目录
相关文章
|
11月前
|
机器学习/深度学习 自然语言处理 数据可视化
深入理解 Word Embedding
深入理解 Word Embedding
411 0
|
11月前
|
机器学习/深度学习 自然语言处理 算法
深度学习基础入门篇10:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}
深度学习基础入门篇10:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}
深度学习基础入门篇10:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}
|
机器学习/深度学习 存储 自然语言处理
【新闻文本分类】(task4)使用gensim训练word2vec
Word2vec即“word to vector”,是一个生成对“词”的向量表达的模型。 想要训练 Word2vec 模型,我们需要准备由一组句子组成的语料库。假设其中一个长度为 T 的句子包含的词有 w1,w2……wt,并且我们假定每个词都跟其相邻词的关系最密切。
533 0
【新闻文本分类】(task4)使用gensim训练word2vec
|
机器学习/深度学习 存储 人工智能
文本深度表示模型——word2vec&doc2vec词向量模型
NLP 中最直观,也是到目前为止最常用的词表示方法是 One-hot Representation,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。
文本深度表示模型——word2vec&doc2vec词向量模型
|
自然语言处理
Re13:读论文 Gender and Racial Stereotype Detection in Legal Opinion Word Embeddings
Re13:读论文 Gender and Racial Stereotype Detection in Legal Opinion Word Embeddings
Re13:读论文 Gender and Racial Stereotype Detection in Legal Opinion Word Embeddings
|
自然语言处理 算法 Python
Gensim实现Word2Vec的Skip-Gram模型
gensim是一个开源的Python库,用于便捷高效地提取文档中的语义话题。它用于处理原始的、非结构化的电子文本(“纯文本”),gensim中的一些算法,如 Latent Semantic Analysis(潜在语义分析)、 Latent Dirichlet Allocation(潜在Dirichlet分布)、Random Projections(随机预测)通过检查训练文档中的共现实体来挖掘语义结构。
241 0
|
机器学习/深度学习 自然语言处理 算法
Word2Vec教程-Skip-Gram模型
这篇教程主要讲述了Word2Vec中的skip gram模型,主要目的是避免普遍的浅层介绍和抽象观点,而是更加详细地探索Word2Vec。现在我们开始研究skip gram模型吧
427 0
Word2Vec教程-Skip-Gram模型
|
机器学习/深度学习 自然语言处理 算法
词向量Word Embedding原理及生成方法
如何更深入地理解以及快速上手生成Word Embedding呢?本文对Word Embedding原理和生成方法进行了讲解。
887 0
词向量Word Embedding原理及生成方法
|
机器学习/深度学习 自然语言处理 测试技术
基于jieba、gensim.word2vec、LogisticRegression的文档分类
学习资源来源:容大教育,致以诚挚的谢意。 重新编辑:潇洒坤 jieba中文叫做结巴,是一款中文分词工具,官方文档链接:https://github.com/fxsjy/jieba gensim.word2vec中文叫做词向量模型,是是用来文章内容向量化的工具,官方文档链接:https://radimrehurek.com/gensim/models/word2vec.html LogisticRegression中文叫做逻辑回归模型,是一种基础、常用的分类方法。
1527 0
|
机器学习/深度学习 资源调度 自然语言处理
word2vec原理(二) 基于Hierarchical Softmax的模型
在word2vec原理(一) CBOW与Skip-Gram模型基础中,我们讲到了使用神经网络的方法来得到词向量语言模型的原理和一些问题,现在我们开始关注word2vec的语言模型如何改进传统的神经网络的方法。
2548 0