序列模型第二周 自然语言处理与词嵌入

2.1 词汇表征
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 使用词嵌入
在这里插入图片描述
如果采用featurized representation对每个单词进行编码,再构建该RNN模型。对于一个新的句子:Robert Lin is a apple farmer, 由于这两个句子中,“apple”与“orange”特征向量很接近,很容易能判断出“Robert Lin”也是一个人名。这就是featurized representation的优点之一。
可以看出,featurized representation的优点是可以减少训练样本的数目,前提是对海量单词建立特征向量表述(word embedding)。这样,即使训练样本不够多,测试时遇到陌生单词,例如durian cultivator,根据之前的海量词汇特征可以判断出durian也是水果,与apple类似,培育者和农民也是相似的词。从而得到Robert Lin也是人名。
这种做法将单词用不同的特征来表示,即使是训练样本中没有的单词,也可以根据word embedding的结果得到与其词性相近的单词,从而得到与该单词相近的结果,有效减少了训练样本的数量。
在这里插入图片描述
featurized representation的特性使得很多NLP任务能方便地进行迁移学习,方法为:
1.从海量词汇中学习word embeddings,即所有单词的特征向量。或者从网上下载预训练好的word embedding。
2.使用较少的训练样本,将word embeddings迁移到新的任务中。
3.当训练样本足够大的时候,可以继续使用新数据微调word embeddings。
在这里插入图片描述
有趣的是,word embeddings与卷积神经网络第四周的人脸特征编码有很多相似性。人脸图片经过Siamese网络,得到其特征向量f(x)f(x),这点跟word embedding是类似的。二者不同的是Siamese网络输入的人脸图片可以是数据库之外的;而word embedding一般都是已建立的词汇库中的单词,非词汇库单词统一用< UNK >表示。

2.3 词嵌入的特征

word embeddings可以帮我们找到不同单词之间的相似类似关系。
在这里插入图片描述
因为t-SNE是高度非线性的方法,所以在二维的图中不一定有这种平行四边形的关系。
衡量相似度的方法(相似函数):
在这里插入图片描述
比较常用的相似函数是cosine similarity。因为他和cos函数特征类似,当角度差接近0时,cos值/相似度为1;90度时,相似度为0;180度时,相似度为-1。
也可以计算euclidian distance欧氏距离来比较相似性, 距离越大,相似性越小,但不如cosine similarity常用。

2.4 嵌入矩阵
在这里插入图片描述
假设某个词汇库包含了10,000个单词,每个单词的维度为300,那么表征所有单词的embedding matrix维度为30010,000,用E表示。
某单词w如orange的独热向量表示为Ow,维度为10,000
1,则该单词的embedding vector表达式为:ew=E·Ow。
然而这种乘法运算效率太低,矩阵维度比较大,且Ow大部分元素为0,所以在实际中我们直接从E中选择第w列作为ew即可。
下一节学习如何通过训练得到E中的300*10,000个参数。

2.5 学习词嵌入
在这里插入图片描述
embedding matrix E可以通过构建自然语言模型,运用梯度下降算法得到。如输入样本为I want a glass of orange (juice)。
通过这句话的前6个单词,预测出最后的单词juice。E未知待求,每个单词可用embedding vector ew表示。构建的神经网络模型如上图。
神经网络输入层包含6个embedding vectors,每个嵌入向量维度都是300,则输入层总共有1800个输入。
softmax层有10000个概率输出,也就是词汇表包含的总单词数。正确的输出label是juice。
其中E,W[1], b[1], W[2], b[2]为待求值。
对足够的训练例句样本,运用梯度下降最终可求出embedding matrix E。
这种算法的效果还不错,能够保证具有相似属性单词的embedding vector相近。

为了让神经网络输入层数目固定,可以选择只取预测单词的前4个单词作为输入,例如该句中只选择“a glass of orange”四个单词作为输入。当然,这里的4是超参数,可调。
在这里插入图片描述
一般地,我们把输入叫做context,输出叫做target。上个例子中context是a glass of orange, target是juice。
关于context的选择有很多种:如左边n个单词或右边n个单词;左边1个单词;附近某1个单词(skip-gram)。
不同的context选择方法都能计算出较准确的embedding matrix E。

2.6 WordVec
在这里插入图片描述
skip-gram模型:首先随机选择一个单词作为context,如orange,然后使用一个宽度为5或10(自定义)的滑动窗,在context附近选择一个单词作为target。最终得到了多个context-target对作为监督式学习样本。
在这里插入图片描述
训练的过程是构建自然语言模型,经过sotfmax单元的输出为y hat,公式见上。θt为target对应的参数,ec为context的embedding vector,ec=E·Oc。
损失函数为在这里插入图片描述
然后用梯度下降迭代优化,最终得到embedding matrix E。
在这里插入图片描述
然而,这种算法计算量大,影响运算速度,因为sotfmax的输出单元为10,000个,y hat的分母包含大量求和运算。
解决办法之一是使用hierarchical sotfmax classifier,即树形分类器。
这种树形分类器是一种二分类,与之前的sotfmax分类器不同,它在每个树节点上对目标单词进行区间判断,最终定位到目标单词。如一开始判断是在前5000个还是后5000个。
这种树形分类器最多需要log N步就能找到目标单词,N为单词总数。
实际应用中,对树形分类器做了一些改进,改进后的树形分类器是非对称的,通常选择把比较常用的单词放在树的顶层,不常用的单词放在树的底层,这样可以提高搜索速度。

关于context的采样,需要注意的是如果使用均匀采样,那么一些常用的介词、冠词,例如the, of, a, and, to等出现的概率更大一些。但是,这些单词的embedding vectors通常不是我们最关心的,我们更关心例如orange, apple, juice等这些名词等。所以,实际应用中,一般不选择随机均匀采样的方式来选择context,而是使用其它算法来处理这类问题。

Skip-Gram模型是Word2Vec的一种,Word2Vec的另外一种模型是CBOW(Continuous Bag of Words)。

2.7 负采样negative sampling
在这里插入图片描述
negative sampling是另一种有效求解embedding matrix E的方法。它的做法是判断选取的context word和target word是否构成一组正确的context-target对,一般包含一个正样本和k个负样本。
如训练集较小,k取5-20个;如果训练集较大k取2-5个。
在这里插入图片描述
负采样的数学模型是类sigmoid的。
可以看出负采样模型共包含了1+k个二分类问题,对比之前的10,000个输出单元的sotfmax分类,负采样计算量小了很多。
在这里插入图片描述
关于如何选择负样本对应的target单词,可以使用随机选择的方法。但有资料提出一个更实用、效果更好的方法,就是根据该词出现的频率进行选择,相应的概率公式见上图。f(wi)表示单词wi在单词表中出现的频率。

2.8 GloVe词向量
在这里插入图片描述
GloVe算法引入了一个新的参数Xij: 表示i出现在j之前的次数,即i和j同时出现的次数。其中i是context,j是target。
一般地,如果不限定context在target的前面,则有对称关系Xij=Xji。
在这里插入图片描述
GloVe的损失函数见上。可以看出若两个词的embedding vector越相近,同时出现的次数越多,则对应的loss越小。
为了防止出现“log 0”,即两个单词不会同时出现,无相关性的情况,对loss function引入一个权重因子f(Xij)。 当Xij=0时,权重因子f(Xij)=0,这种做法直接忽略了无任何相关性的context和target,只考虑Xij>0的情况。
出现频率较大的单词相应的权重因子较大,出现频率较小的单词相应的权重因子较小,具体的权重因子选取方法可以查阅相关论文。
再引入偏移量,得到最终的损失函数。
参数θi和ej是对称的。使用优化算法得到所有参数之后,最终的ew可表示为ew=(ew+θw)/2。
无论使用Skip-Gram模型还是GloVe模型等等,计算得到的embedding matrix EE的每一个特征值不一定对应有实际物理意义的特征值,如gender,age等。

2.9 情绪分类
在这里插入图片描述
情感分类一般是根据一句话来判断这个人对这家餐厅等的喜爱程度,例如1-5星分布。
在这里插入图片描述
情感分类问题的一个主要挑战是缺少足够多的训练样本。而Word embedding恰恰可以帮助解决训练样本不足的问题。第一个使用word embedding解决情感分类问题的一个简单模型算法如上图。
这句话的4个单词分别用embedding vector表示,然后求它们的平均值,这样得到的平均向量的维度仍是300。最后经过sotfmax输出1-5星。
但是这种模型由于使用平均,没有考虑到单词出现的次序,忽略其位置信息。如左下角的这句话实际是差评,但有模型很有可能认为是好评。
在这里插入图片描述
为了解决这一问题,情感分类的另一种模型是RNN。
该RNN模型是典型的many-to-one模型,考虑单词出现的次序,能有效识别句子表达的真实情感。
值得一提的是使用word embedding,能够有效提高模型的泛化能力,即使训练样本不多,也能保证模型有不错的性能。

2.10 词嵌入除偏
待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值