自然语言处理 —— 2.2 使用词嵌入

上一节中已经了解了不同单词的特征化表示,这一节将会看到我们如何把这种表示方法应用到NLP应用中。

我们从一个例子开始,继续用我们的命名实体识别的例子,如果你要找出人名,假如有一个句子 S a l l y   J o h n s o n   i s   a n   o r a n g e   f a r m e r Sally\space Johnson\space is\space an\space orange\space farmer Sally Johnson is an orange farmer,你会发现 S a l l y   J o h n s o n Sally \space Johnson Sally Johnson就是一个人名,所以在神经网络中的对应位置输出1,之所以能够确定 S a l l y   J o h n s o n Sally \space Johnson Sally Johnson是一个人名而不是一个公司名,是因为你知道种橙子的农民一定是一个人。

前面我们已经讨论过,用one-hot来表示这些单词,但如果用特征化表示方法嵌入的向量,那么用词嵌入作为输入训练好的模型,如果你看到一个新的输入句子 R o b e r t   L i n   i s   a n   a p p l e   f a r m e r Robert\space Lin\space is\space an\space apple\space farmer Robert Lin is an apple farmer,因为知道橙子和苹果很相近,那么你的算法很容易就知道 R o b e r t   L i n Robert\space Lin Robert Lin也是一个人,是一个人的名字。

一个有意思的情况是,要是测试集里这句话不是 R o b e r t   L i n   i s   a n   a p p l e   f a r m e r Robert\space Lin\space is\space an\space apple\space farmer Robert Lin is an apple farmer,而是不太常见的词怎么办,要是你看到的是 R o b e r t   L i n   i s   a   d u r i a n   c u l t i v a t o e Robert\space Lin\space is\space a\space durian\space cultivatoe Robert Lin is a durian cultivatoe该怎么处理。榴莲是一种比较罕见的水果,如果对命名实体识别任务只有一个很小的标记的训练集,你的训练集里甚至可能没有榴莲或者培育家这两个词。

但是如果你有一个已经学好的词嵌入,它会告诉你榴莲是水果,就像橙子一样,并且培育家其实和农民差不多。那么你就有可能从你的训练集里的种橙子的农民归纳出榴莲培育家也是一个人。

词嵌入能够达到这种效果,其中一个原因是学习词嵌入的算法会考察非常大的文本集,也许是从网上找的,这样你可以考察很大的数据集,可以是一亿单词甚至达到一百亿。所以大量的只有无标签的文本的训练集,通过考察大量的无标签文本,你可以发现橙子和榴莲相近,农民和培育家相近。因此学习这种词嵌入表示把它们都聚集在一块,通过读取大量的互联网文本发现了橙子和榴莲都是水果。接下来你可以把这个词嵌入应用到你的命名实体识别任务中,尽管你只有一个很小的训练集,也许训练集里有100000个单词甚至更小,这就使得你可以使用迁移学习把你从互联网上免费获得的大量无标签文本中学习到的知识,能够分辨橙子、苹果、榴莲都是水果的知识,然后把这些知识迁移到一个任务中,比如你只有少量标记的训练数据集的命名实体识别任务中。

视频中为了简化,只画了单向的RNN,事实上如果你想用在命名实体识别任务上,你应该用一个双向的RNN而不是这样简单的一个神经网络。

总结一下,这是如何用词嵌入做迁移学习的步骤:

  1. 从大量的文本集中学习词嵌入(一亿到一百亿的单词),或者可以下载网上预训练好的词嵌入模型,
  2. 可以用这些词嵌入模型迁移到新的只有少数标准训练集的任务中。比如说这个300维的词嵌入来表示你的单词,这样做的一个好处就是你可以用更低维度的特征向量代替原来的10000维的one-hot向量。现在你可以用更加紧凑的300维的向量。
  3. 在新任务上训练模型时,你可以自己选择要不要用新的数据调整词嵌入。实际上,只有第二步上有很大的数据集才对词嵌入进行微调。如果你标记的数据集不是很大,通常不会对词嵌入模型进行微调。

当你任务的训练集相对较小时,词嵌入的作用最明显,所以它广泛用于NLP领域。词嵌入在语言模型、机器翻译领域用的少一些,尤其是你做语言模型或者机器翻译任务时,这些任务你有大量的数据。在其它的迁移学习情形中也一样,如果你从某一任务A迁移到某个任务B,只有A中有大量数据而B中数据少时,迁移过程才有用,所以对于很多NLp任务这些都是对的。而对于一些语言模型和机器翻译则不然。
在这里插入图片描述
最后,词嵌入和人脸编码之间有奇妙的关系,对于人脸识别,我们训练一个孪生神经网络结构,这个网络会学习不同人脸的一个128维表示,然后通过比较编码结果来判断两个图片是否是同一个人脸。这个词嵌入的意思和这个差不多。在人脸识别领域,大家喜欢用编码这个词(encoding)来指代向量 f ( x ( i ) ) f(x^{(i)}) f(x(i)) f ( x ( j ) ) f(x^{(j)}) f(x(j)),人脸识别领域和这里的词嵌入有一个不同就是,在人脸识别中我们训练一个网络,任给一个人脸照片,甚至是没有见过的照片,神经网络都会计算出相应的一个编码结果,而我们要做的是学习词嵌入,有一个固定的词汇表,比如10000个单词,我们学习向量 e 1 e_1 e1 e 1 0000 e_10000 e10000,学习一个固定的编码,固定的嵌入,对于每一个词汇表中的单词,这就是人脸识别和我们接下来要讨论的算法的一个不同之处。这里的术语编码和嵌入可以互换,所以刚才讲的差别不是因为术语不一样,这个差别就是人脸识别中的算法未来可能涉及到海量的人脸照片,而自然语言处理有一个固定的词汇表,而像一些没有出现过的我们就记为未知的单词。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值