NLP学习笔记(1)

实现word2vec 的方法


direct prediction的两个方法:


skip gram模型

在这里插入图片描述

  • 这是skip gram模型,中间dx1的向量就是单词的representation v c v_c vc,Vx1的向量是对所有单词出现在某个单词的语境中的可能性,其中的第o行是 u o T v c u_o^Tv_c uoTvc,表示U这个矩阵的第o行和 v c v_c vc相乘的结果,要通过softmax归一化才能是概率值。然后这从上到下这3个VX1的向量应该是一样的,因为matrix只有一个,所以可能是画错了。
  • 训练方式是从语料库中取window,只更新window内出现的作为正例,负例则在语料库中随机取两个词作为负例。也就是说,并不是每次都取一整个VXd的矩阵,只需要取其中的一行,比如,当center word为deep时,window中出现了learning这个单词,那么只需要取V×d中对应learning的这一行,这样只得到对应learning这一个单词的score。事实上如果真的去算softmax,你还是需要对所有的单词都算一遍score的,也就是说在每个window你都需要算一个dx1乘以V×d的矩阵乘法。但是这样非常浪费,因为对于一个center word,绝大多数单词并不会出现在他的outside word里面,如果可以只从语料库中随机选取一小部分作为负例,把出现的作为正例,能减少很多计算量。这就是skip gram的内在含义,就是说它并不是真的去算softmax,所以真正的loss函数其实是这样的:第二项是从语料库中随机选取5-10个单词作为负例。另外,不会遍历完整个语料库再进行梯度更新,一般是一个window更新一次或者几个window更新一次
    在这里插入图片描述
CBOW模型

在这里插入图片描述


count based的方法:

  • 这类方法主要基于对整个语料库进行co-occurence 计数,即先遍历一遍整个语料库, 记下所有的单词的window里出现的其它单词的总次数,这个V×V的矩阵成为co-occurence matrix, 然后通过对这个矩阵进行SVD操作等,也就是说先将语料库转化成矩阵,后面就对这个矩阵操作就行,这叫count based的word2vec模型。这类方法的性能稍弱于skip gram 在这里插入图片描述

Global Vectors model (GloVe)

  • GloVe事实上结合了skip gram和count based的方法,这里的P就是计数矩阵,而ui,vj和skip gram的一样。GloVe在实践各项指标都很出色。
    在这里插入图片描述
    在这里插入图片描述

评估

  • 对于一个word vector的方法的效果评估分为两方面,一方面是intrinsic,一方面是extrinsic。intrinsic指的是sub function的评估,是指还为用到下游应用的时候,对某些指标如相似性、完备性、计算速度等的评估,这种评估的优点是非常快,缺点是有可能与最终效果的关系不大,比如你花了一个月提高了相似性,最后用到应用上发现提高前和提高后对应用的影响并不大,日常使用可能并不需要专家级的word vector;另一种是extrinsic,指的是应用效果的评估,优点是直接,缺点是很慢,为了评估某个word vector的超参数改变给应用效果带来的影响你可能需要训练一周时间来完成整个流程,而intrinsic你甚至不需要训练。
intrinsic
  • word vector analogies
    希望看到word vector具有这种特性,即woman的向量减去man的向量加上king的向量等于queen的向量。可以对比这样计算得到的向量和queen的向量的差别比较算法的效果
    在这里插入图片描述
  • correlation
    首先请一些研究生来对一些词对之间的相关性给出自己的分数,取平均。然后对word vector也计算同样词对的相关性,看看是否符合正常人的判断,作为算法的效果的评估。word vector之间的相似性可以用欧氏距离也可以用余弦相似度。判断word vector的相似性度量是否符合人类的相似性度量可以计算人类评估的相似性向量和预测的相似性向量之间的相关性
    在这里插入图片描述
extrinsic
  • 常用的是在entity recognition这个任务上的性能,因为他简单实用。用同一个entity recognition的模型,使用用不同方法生成的word vector,检验一下模型的最终效果,就可以评估word vector的好坏从而评估生成word vector算法的好坏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值