NLP-CS224n学习讲义PART 2——Word Vector 2: GloVe, Evaluation and Training

NLP-CS224n学习讲义PART 2——Word Vector 2: GloVe, Evaluation and Training

1 Global Vectors for Word Representation(GloVe)

1.1 方法间的比较

我们之前提到两种查找词汇嵌入的方式。第一种就是基于计数且依赖于矩阵分解的方式,这种方式可以有效地利用了全局统计信息,但是它们未能很好捕捉单词相似性。第二种基于window方式,即skip-gram和CBOW的方式,这种方式能够很好的捕获单词之间的相关性,但是未能利用全局共现统计信息。可见这两种方式是一种互补的,为了能够同时获得两种方式的优点。

1.2 共现矩阵

在这里插入图片描述

生成这个矩阵需要一次遍历整个语料库来收集统计信息。

1.3 最小二乘目标

在skip-gram模型中,使用softmax来计算 w o r d j word_j wordj 出现在上下文 w o r d i word_i wordi 的概率为:
Q i j = e x p ( u j T v i ) ∑ w = 1 W e x p ( u w T v i ) Q_{ij} = \frac{exp(u_j^Tv_i)}{\sum_{w=1}^Wexp(u_w^Tv_i)} Qij=w=1Wexp(uwTvi)exp(ujTvi)
最后的cross-entropy loss为:

J = − ∑ i ∈ c o r p u s ∑ j ∈ c o n t e x t ( i ) l o g Q i j J = -\sum_{i\in corpus}\sum_{j\in context(i)} logQ_{ij} J=icorpusjcontext(i)logQij

因为相同的单词i和j可以在语料库中出现多次,所以首先将相同的值i和j组合在一起会更有效率:

J = − ∑ i = 1 W ∑ j = 1 W X i j l o g Q i j J = -\sum_{i=1}^W\sum_{j=1}^W X_{ij}logQ_{ij} J=i=1Wj=1WXijlogQij

交叉熵损失的一个显著缺点是,它需要对分布Q进行适当的规范化,这涉及到对整个词汇表进行昂贵的求和。相反,我们使用最小二乘法作为目标:
J ^ = ∑ i = 1 W ∑ j = 1 W X i ( P ^ i j − Q ^ i j ) 2 \hat J = \sum_{i=1}^W \sum_{j=1}^W X_i(\hat P_{ij} - \hat Q_{ij})^2 J^=i=1Wj=1WXi(P^ijQ^ij)2

然而 P ^ i j = X i j \hat P_{ij} = X_{ij} P^ij=Xij Q ^ i j = e x p ( u j T v i ) \hat Q_{ij} = exp(u_j^Tv_i) Q^ij=exp(ujTvi)是非规范化分布 。新的问题是 X i j X_{ij} Xij往往值很大会使得优化困难,所以我们使用log:

J ^ = ∑ i = 1 W ∑ j = 1 W X i ( l o g ( P ^ ) i j − l o g ( Q ^ ) i j ) 2 = ∑ i = 1 W ∑ j = 1 W X i ( u j T v i − l o g X i j ) 2 \hat J = \sum_{i=1}^W \sum_{j=1}^W X_i(log(\hat P)_{ij} - log(\hat Q)_{ij})^2 = \sum_{i=1}^W \sum_{j=1}^W X_i(u_j^Tv_i - logX_{ij})^2 J^=i=1Wj=1WXi(log(P^)ijlog(Q^)ij)2=i=1Wj=1WXi(ujTvilogXij)2


2 Word Vectors的评估

将讨论定量地评估Word2Vec和GloVe等技术生成的word vectors的性能。

2.1 内部评估

词向量的内部评估是对一组词向量的评估,这些词向量是由嵌入技术(如Word2Vec或GloVe)在特定的中间子任务上生成的。一个内在的评价通常应该返回一个数字给我们,这个数字表示那些词向量在评价子任务上的表现。

内部评估直接衡量单词之间的句法和语义关系

  1. 相关性度量
  2. 类比度量

2.2 外部评估

而词向量的外部评估是对一组通过嵌入技术在手头的实际任务上生成的词向量的评价。通常,对表现不佳的外部评估系统进行优化是不能让我们确定是哪个子系统出了问题,这就激发了对内部评估的需求。

比如进行可视化评估。


3 Training for Extrinsic Tasks

3.1 问题定义

大多数NLP 外部任务都可以定义为分类任务。

训练集通常定义为 { x ( i ) , y ( i ) } 1 N \{x^{(i)}, y^{(i)}\}_1^N {x(i),y(i)}1N 的形式,其中 x ( i ) x^{(i)} x(i) 为d维词向量, y ( i ) y^{(i)} y(i) 为C维one-hot向量,即我们最后想要预测的标签(比如句子的情感、命名实体、其他词等)

我们知道在传统的机器学习任务中,基本上都固定input和output,然后我们去训练模型的weight,但是在NLP任务中,要注意,当我们训练外部任务时,我们引入了重新训练input词向量的概念。

3.2 重新训练词向量

我们用于外部评估的词向量是通过一个简单的内部评价来进行优化并初始化的。在许多情况下,这些预训练的词向量在外部评价中表现良好。但是,这些预训练的词向量在外部评价的表现仍然有提高的可能。然而,重新训练词向量存在着一定的风险,需要保证训练集足够大并能覆盖词汇表中大部分的单词。

3.3 Softmax分类和正则化

这块是个非常重要的知识点,因为基本上机器学习很多任务都需要用到softmax,softmax就是一种计算概率的函数,而这个往往和多分类问题相关。它的形式如下:

p ( y j = 1 ∣ x ) = e x p ( W j . x ) ∑ c = 1 C e x p ( W c . x ) p(y_j = 1|x) = \frac{exp(W_j.x)}{\sum_{c=1}^Cexp(W_c.x)} p(yj=1x)=c=1Cexp(Wc.x)exp(Wj.x)

上面的式子是在计算词向量x是第 j 类的概率,然后使用Cross-entropy 作为训练的损失函数:

− ∑ j = 1 C y j l o g ( p ( y j = 1 ∣ x ) ) = − ∑ j = 1 C y j l o g ( e x p ( W j . x ) ∑ c = 1 C e x p ( W c . x ) ) ) -\sum_{j=1}^C y_jlog(p(y_j=1|x)) = -\sum_{j=1}^Cy_jlog(\frac{exp(W_j.x)}{\sum_{c=1}^Cexp(W_c.x)})) j=1Cyjlog(p(yj=1x))=j=1Cyjlog(c=1Cexp(Wc.x)exp(Wj.x)))

我们一定要理解这个Cross-entropy loss,这里再做一下解释:

y j y_j yj表示真实结果,而 p ( y j = 1 ∣ x ) p(y_j=1|x) p(yj=1x) 表示计算的结果,刻画的便是通过计算的结果来表达真实结果的困难程度,其实换句话说就是loss越小,这计算结果和真实结果就越接近。

当然,整个求和$ -\sum_{j=1}Cy_jlog(\frac{exp(W_j.x)}{\sum_{c=1}Cexp(W_c.x)}))$ 会有 (C-1) 个0值,这是因为只有在某个下标时 y j y_j yj 才为1,这表示 x x x 只属于某一个类别。这样loss可以简化为:

− l o g ( W k . x ∑ c = 1 C e x p ( W c . x ) ) -log(\frac{W_k.x}{\sum_{c=1}^Cexp(W_c.x)}) log(c=1Cexp(Wc.x)Wk.x)

我们知道训练不仅仅要训练model weights,同时还要训练input word vectors,所以需要更新的参数数量为 C ⋅ d + ∣ V ∣ ⋅ d C \cdot d + |V| \cdot d Cd+Vd 个,即

▽ θ J ( θ ) = [ ▽ W . 1 : ▽ W . d ▽ x a a r d v a r k : ▽ x z e b r a ] \bigtriangledown_\theta J(\theta) = \begin{bmatrix} \bigtriangledown_{W.1}\\:\\\bigtriangledown_{W.d}\\\bigtriangledown_{x_{aardvark}}\\:\\\bigtriangledown_{x_{zebra}} \end{bmatrix} \quad θJ(θ)=W.1:W.dxaardvark:xzebra

这个数量是非常大的,而如此多的参数很容易过度拟合,所以我们需要加一个正则项来减少过拟合的风险:

− l o g ( W k . x ∑ c = 1 C e x p ( W c . x ) ) + λ ∑ k = 1 C ⋅ d + ∣ V ∣ ⋅ d θ k 2 -log(\frac{W_k.x}{\sum_{c=1}^Cexp(W_c.x)}) + \lambda \sum_{k=1}^{C\cdot d+|V|\cdot d}\theta_k^2 log(c=1Cexp(Wc.x)Wk.x)+λk=1Cd+Vdθk2

3.4 window classification

实际上我们不会以一个单词作为输入的,这是因为语言处理基本都是根据上下文进行的,所以我们要以一段序列作为输入,而这个序列就包括中心词和其上下文词,而上下文词的个数就作为window的大小。比如:

x w i n d o w ( i ) = [ x ( i − 2 ) x ( i − 1 ) x ( i ) x ( i + 1 ) x ( i + 2 ) ] x_{window}^{(i)} = \begin{bmatrix} x^{(i-2)} \\ x^{(i-1)} \\ x^{(i)} \\ x^{(i+1)} \\ x^{(i+2)} \end{bmatrix} \quad xwindow(i)=x(i2)x(i1)x(i)x(i+1)x(i+2)

然后我们对其进行求导来更新参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值