赞
踩
让算法自动理解同类词。
之前我们将对词的表示用的是one-shot,这种方法简单,这种表示方法的一个缺点就是,它把每个词都孤立起来了,使得其对相关词的泛化能力不强,因为任意两个one-shot向量内积都为0 ,也就是任意两个词间的距离是一样的,没有词类的概念。
举个例子,若已经学习了I want a glass of orange juice“”很可能是一个句子,但再看到“I want a glass of apple __”的时候,因为不知道orange和Apple的相近关系,所以很难从已经学习到的句子学习到 orange juice和Apple juice都是和常见的词组
词的特征化的表示:
就是列举所有可能的特征,用这些特征的值来表示一个词。
如果学习了300维的特征,然后表示到2D空间可视化显示,可以看出如下效果:
类似的词距离比较近,不同类的词距离比较远。
以人名实体识别为例,给出一句话:Sally Johnson is an orange farmer。我们知道Sally Johnson应该是一个人名而不是公司名之类的,因为farmer必须为一个人。如果用一个基于词嵌入训练的模型,遇到另外一句Robert Lin is an apple farmer,因为知道橘子和苹果属于一类,那么就很容易推断出Robert Lin也是一个人名,一个比较有意思的情况,如果遇到很少见的词如Robert Lin is a durian cultivator,durian cultivator这两个词都是比较少见的,如果训练集里面没有这两个词,那么预测就会很困难,但是如果有一个学习好的词嵌入,它告诉我们durian属于水果,cultivator和farmer属于一类,那么就很容易能够判断出Robert Lin是一个人名。
词嵌入能达到这样的效果,是因为学习词嵌入的算法通常会考察非常大量的无标签文本库,如1亿甚至百亿单词,其来源可以是互联网文本,通常也是可以免费下载的,所以可以利用迁移学习使用词嵌入。
(1)从一个很大的文本集中学习词嵌入或从网上下载学习好的词嵌入;
(2)将学习好的词嵌入应用到只有小量带标签的训练集的新任务当中;
(3)可选步,决定是否根据新任务的训练集对词嵌入进行微调,当新任务的训练集较小的时候,不推荐花费精力调整词嵌入。
迁移学习对于训练集较小的任务比较有意义,所以目前词嵌入广泛应用于NLP,如名称识别、文本摘要、文本解析、parsing等标准的NLP任务,在语言模型、机器翻译等领域应用较少,因为这些任务中有大量的数据。
Word embadding学习的是词的编码,而face encoding学习的是人脸或图像的编码,术语embedding和encoding是可以互换的,那么区别在哪里呢?
不同:
face encoding学习的编码/特征没有范围限定,也就是预先不需要设置编码,所以任何输入都能学习他的编码;
Word embadding则有一个固定的词汇表,所以学习的编码也是固定的。
词嵌入可以帮助实现类比推理。
上图是用词嵌入学习特征表示的几个词,man如果对应woman,那么king对应谁?如何让算法学习到这种推理关系?
(1)用编码向量表示各个词
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。