使用词嵌入(Using Word Embeddings)

来源:Coursera吴恩达深度学习课程

我们已经了解不同单词的词汇表征(Word Representation),这篇文章将看到我们如何把这种表示方法应用到NLP应用中。

如上图所示,我们用命名实体识别(named entity recognition)的例子,假如有一个句子:“Sally Johnson is an orange farmer.”(Sally Johnson是一个种橙子的农民),你会发现Sally Johnson就是一个人名,所以这里的输出为1。之所以能确定Sally Johnson是一个人名而不是一个公司名,是因为你知道种橙子的农民一定是一个人。

如果用特征化表示方法,将词嵌入向量输入训练好的模型,如果你看到一个新的输入:“Robert Lin is an apple farmer.”(Robert Lin是一个种苹果的农民),因为知道orange和apple很相近,那么你的算法很容易就知道Robert Lin也是一个人。那么对于不常见的词,如这句话:“Robert Lin is a durian cultivator.”(Robert Lin是一个榴莲培育家)怎么办?榴莲(durian)是一种比较稀罕的水果,这种水果在新加坡和其他一些国家流行。如果对于一个命名实体识别任务,你只有一个很小的标记的训练集,训练集里甚至可能没有durian(榴莲)或者cultivator(培育家)这两个词。但是如果你有一个已经学好的词嵌入,它会告诉你durian(榴莲)是水果,就像orange(橙子)一样,并且cultivator(培育家),做培育工作的人其实跟farmer(农民)差不多,那么你就有可能从你的训练集里的“an orange farmer”(种橙子的农民)归纳出“a durian cultivator”(榴莲培育家)也是一个人。

词嵌入能够达到上述效果,因为学习词嵌入的算法会考察非常大的文本集(very large text corpuses),也许是从网上找到的,因此数据集可以是1亿个单词,甚至达到100亿。通过大量无标签文本的训练集,学习这种嵌入表达,可以发现orange(橙子)和durian(榴莲)相近,都是水果,farmer(农民)和cultivator(培育家)相近。尽管你只有一个很小的训练集,也许训练集里有100,000个单词,甚至更小,这就使得你可以使用迁移学习(transfer learning),把从互联网上免费获得的大量的无标签文本中学习到的知识迁移到一个任务中,比如只有少量标记的训练数据集的命名实体识别任务中。这里为了简化Andrew只画了单向的RNN,事实上在命名实体识别任务中应该用一个双向的RNN,而不是这样一个简单的。

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

(1)第一步,先从大量的文本集中学习词嵌入(一个非常大的文本集)或者可以下载网上预训练好的词嵌入模型。

(2)第二步,用这些词嵌入模型把它迁移到你的新的只有少量标注训练集的任务中,比如说用这个300维的词嵌入来表示你的单词。这样做的一个好处就是用更低维度的特征向量代替原来的10000维的one-hot向量,可以用一个300维更加紧凑的向量。尽管one-hot向量很快计算,而学到的用于词嵌入的300维的向量会更加紧凑。

(3)第三步,当你在你新的任务上训练模型时,在你的命名实体识别任务上,只有少量的标记数据集上,你可以自己选择要不要继续微调(fine-tune),用新的数据调整词嵌入。实际中,只有这个第二步中有很大的数据集你才会这样做,如果你标记的数据集不是很大,通常Andrew不会在微调词嵌入上费力气。

当你的任务的训练集相对较小时,词嵌入的作用最明显,所以它广泛用于NLP领域。

词嵌入在语言模型、机器翻译领域用的少一些,尤其是你做语言模型或者机器翻译任务时,这些任务你有大量的数据。

最后,注意词嵌入和人脸编码之间有奇妙的关系。如下图所示。

在之前的学习中,对于人脸识别我们训练了一个Siamese网络结构,这个网络会学习不同人脸的一个128维表示,然后通过比较编码结果来判断两个图片是否是同一个人脸,这个词嵌入的意思和这个差不多。在人脸识别领域一般用编码来指代这些向量f(x^(i))和f(x^(j))。人脸识别和词嵌入有个不同之处就是在人脸识别中我们训练一个网络,任给一张人脸照片,甚至是没有见过的照片,神经网络都会计算出相应的一个编码结果;而学习词嵌入则是有一个固定的词汇表,学习一个固定的编码,每一个词汇表的单词的固定嵌入。这里的术语编码(encoding)和嵌入(embedding)可以互换。区别不是因为术语不一样,而是人脸识别中的算法未来可能涉及到海量的人脸照片,而自然语言处理有一个固定的词汇表,而像一些没有出现过的单词我们就记为未知单词(unknown word)。

总之,这篇文章讲解了如何用词嵌入来实现这种类型的迁移学习,并且通过替换原来的one-hot表示,使用嵌入的向量,算法会泛化的更好,也可以从较少的标记数据中进行学习。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值