Lesson5-week2

这一节主要分为三个部分:
1)为什么要使用词嵌入?
2)词嵌入的使用场景及,可扩展使用范围?
3)词嵌入有哪些方法?

词嵌入的由来

原始对词进行表示的方法是One_hot编码,但这种编码有两个主要的缺点:1.这样编码的每个词的长度都比较长;2.两个词之间的距离不能表示出两个词的相似程度。
使用词嵌入的方式来表示每个词,实际上是对不同词提取出它们的特征表示,
词表示
例如上图中就是用各个词的性别Gender,年龄Age,Food等特征来表示各个词,由此可得到Apple与Orange两个词的向量非常接近,可以说明这两个词表示的含义非常接近。
将一个高位嵌入向量映射到2维平面的方法叫做t-SNE.

词嵌入的应用场景NLP

1.命名实体识别Name entity recognition
实体识别
要识别人名的时候,可以类比的从orange到apple,因此识别说Robert Lin也是一个人名,主要原因就是orange与apple两个词的词向量十分接近。
通过别人大量文本通过词嵌入得到的词向量,应用到少量文本实现命名实体识别中。这种学习方法叫做迁移学习。
迁移学习
这与人脸识别领域有一些相似,人脸识别是对人脸进行编码,比较两个人脸的向量是否接近来进行匹配。

2.可实现类比推理
还是用第一张图片的例子,如果man对应women,那么King对应什么?
这里用的计算公式为 arg w max s i m ( e w , e k i n g e m e n + e w o m e n ) ,其中计算相似度的函数 s i m 可以用余弦相似度函数表示。

如何学习词嵌入

实际上是学习嵌入矩阵E, E O w = e w 这个嵌入矩阵乘单词w的One_hot编码向量后就能得到对应的嵌入向量。
但一般在实现中不会真的去乘这个One_hot向量,因为这种矩阵相乘很耗费资源,在keras中是采用embedding层去取嵌入矩阵的某一列。
学习词嵌入的方法有两大类:
一、skip-gram/Word2vec
1).用概率预测模型去预测下一个单词,在这个模型前半段就可以训练出嵌入矩阵。
矩阵
输入不仅可以选取这个词的前n(if n=4)个词,还可以选取该词的前后4个词or 该词的前一个词or该词附近的一个词。实验表明,在做上下文预测的时候,取该词的前4个词作为输入是很好的,但在仅训练词嵌入时后三种取词方式也能取得很好的结果。这种取词来源于skip-gram。
2).Word2vec
将第一个模型中的目标变量设置为输入X单词的前后10个单词中随机的一个。
缺点在于最后的softmax层的计算量很大,因此可以采用分级分类来简化softmax函数。
3).Nagetive sampling
这里写图片描述
K怎么选呢?
较大的数据集可选k=2~5;较小的数据集可选5~20.
这样讲单词对作为输入,target作为输出,对一个输出对就都存在一个正样本和4个负样本,本质上就是把之前的10000维输出的softmax多分类器转换为5个sigmoid函数输出的二分类器,大大减小了运算量。
如何对负样本采样呢?
经验采样频率公式:
这里写图片描述
其中f(w)表示每个词在词料库中出现的频率。
二:Glove词向量
这里写图片描述
X i j 指单词i和单词j一起出现的次数,表示了两个单词联系的紧密程度。

应用

sentiment analysis情感分析:输入嵌入向量,输出评分等级;

需要注意的:偏见消除。
例如在学习了词嵌入之后,机器学会类比,就可能出现性别歧视或种族歧视:
这里写图片描述
如何消除偏见呢?
消除偏见
1.首先找到需要消除的偏见的方向,建立一个方向轴;
例如我们想要消除性别歧,就要找到一些表征性别差异的词如man-woman,female-male等,计算两个单词之间的差异并对这些词对求平均,根据这个差值建立一个方向轴bias;
2.对于在性别方面没有定义的词要消除这些词的偏见,如图中的babysitter和docter。做法是将这些词在我们建立的坐标轴上偏移;
3.均衡之前的词对;
目的是为了使之前的词对与babysitter的距离相同,这样就无法认为babysitter与哪个性别更为接近了,消除了偏见。

猜你喜欢

转载自blog.csdn.net/zhouhong0284/article/details/81585166
今日推荐