博客2

自然语言处理中的迁移学习

在facebook上分享
在twitter上分享
分享在linkedin
在whatsapp分享

背景

在当今世界,自然语言处理是一个重要的领域,因为人类生成的内容承载着大量的信息。然而,这些是非结构化数据可能会混乱和模糊,从而使NLP具有挑战性。人类的口语用法和社会环境常常使机器理解语言意图所需的语言结构变得复杂。早期在NLP中遵循的基于规则的方法是僵化的,经常在理解人类语言的细微差别方面存在问题。从这个角度来看,NLP中深度学习的发展已经导致了比早期方法更灵活、更优雅地处理非结构化和模糊数据的算法。这种方法更注重认知,侧重于从几个输入模型的例子中理解演讲的意图,而不是基于规则的解释。

什么是自然语言处理中的迁移学习?

现在想象一下,如果算法有一种方法可以利用它从解决一个任务中获得的知识,并将获得的知识用于解决一个相关但不同的问题。在NLP中,预先训练的语言模型帮助我们做到这一点在深度学习领域,这个想法被称为迁移学习。这些模型使数据科学家能够通过提供现有模型来解决新问题,他们可以利用现有模型来解决目标NLP任务。预先训练的模型已经证明了它在计算机视觉领域的有效性。在image Net等大型图像语料库上训练模型是计算机视觉的一个实践,使模型能够更好地学习曲线、直线等一般图像特征,然后根据具体任务对模型进行微调。由于计算成本参与培训这样一个大数据集,引入前训练模型是一个福音,对于那些想要建立自己的模型准确但速度更快,不想花时间在培训所需的通用功能任务的问题。

资料来源:《潘与杨》(2010)

迁移学习可以应用在哪里?

迁移学习在自然语言处理中的应用主要依赖于三个维度

  1. 如果源和目标设置处理相同的任务
  2. 源域和目标域的性质
  3. 学习任务的顺序

迁移学习被广泛应用于这些NLP任务中,但不限于以下内容:

  • 文本分类

例如:邮件垃圾邮件过滤,基于主题的文档分类,情感分析

  • 单词序列

例如:聊天机器人、POS标签、命名实体识别

  • 文本的意义

例如:主题建模,问题回答,搜索等

  • 序列,序列

例如:机器翻译、摘要、问答系统等

  • 对话系统

例如:聊天机器人

训练前的模型如何帮助这些NLP任务?

预训练模型基本上解决了与模型开发的初始训练相关的深度学习问题。首先,这些语言模型在大的初始数据集上训练,这些数据集有助于捕获语言的复杂性,从而克服了目标任务数据集大到足以训练模型了解语言复杂性的需求。这间接地有助于防止过拟合和更好的泛化性能。其次,由于预先训练的模型已经理解了语言的复杂性,只需要微调就可以对目标任务进行建模,从而减少了求解NLP任务的计算资源和时间。第三,培训这些初始模型所涉及的数据集满足行业质量标准,从而审查质量检查的必要性。该模型还允许您实现相同或更好的性能,即使目标数据集具有少量的标记数据。最后,这些预先训练过的模型大多数都是开源的,行业可以在其基础上进行构建。

它的业务应用有哪些?

考虑到通过预先训练的模型所获得的迁移学习的益处。这些经过培训的模型可以提高绩效的业务领域包括:

  1. 按照法律发现中的特定特性对文档进行分组
  2. 提高查找相关文件或文件的相关信息的结果-自助技术支持
  3. 通过更好的评论情绪分析,改进活动中的产品响应跟踪
  4. 加强客户与聊天机器人的互动
  5. 汇总技术文件或合同
  6. 完善网络内容社区管理

有哪些可用的开源模型和框架

一些开放源代码的模型和框架包括:

  1. 通用语言模型微调
  2. ELMO(语言模型的嵌入)
  3. 双向编码器表示
  4. XLNet
  5. 基于知识集成的增强表示
  6. 二进制分区变压器
  7. T5(文本到文本转换转换器)

上面的列表并不是详尽无遗的,在这个领域有许多发展。根据业务和目标任务的需要,我们总是可以利用这些预先训练过的模型来有效地执行目标NLP任务。

如何将模型应用于目标任务?

让我们看看文本分类任务(如使用通用语言模型微调(ULMFiT)的点击诱饵检测)的应用程序和预训练模型的体系结构。我们可以利用这些数据来解决点击诱饵探测器的问题Kaggle。该数据集由有标签的文章组成,其中每个文章由标签和正文组成。目标任务是预测它是标题党还是文章。ULMFiT由Jeremy Howard和Sebastian Ruder开发,其核心由3层AWD- lstm组成。他们的方法包括三个阶段:

资料来源:Howard and Ruder (2018)
  • 语言模型

在第一阶段,他们在WikiText-103数据集上训练他们的初始语言模型,该数据集是一个大型通用领域语料库,拥有超过1亿个令牌。LM由嵌入层、三层AWD-LSTM和softmax层组成。经过预训练阶段后,该模型可以连续预测下一个单词。在这个阶段,模型的初始层已经根据语言的一般特征(如句子结构)进行了训练。这个LM可以通过fastai库作为预训练模型提供给我们。

  • 语言模型微调

在第二阶段,LM将在目标数据集上进行微调,即在我们的例子中是Clickbait数据集。Clickbait数据集的分布与最初的LM数据集不同。没有标记数据的整个数据集将作为模型的输入。因此,LM的微调将确保与目标数据集有关的细微差别也得到学习。这里的架构类似于最初的LM。这些层将通过带有倾斜三角形学习速率的歧视性微调进行微调。有区别的微调允许我们用不同的学习速率来调整每一层,而不是对模型的所有层使用相同的学习速率。为了使模型参数适应任务特征,模型在训练开始时快速收敛到参数空间的合适区域,然后对其参数进行细化。这导致了学习率的倾斜三角形分布。在这个阶段,最初的层次将具有语言的一般信息,而随后的层次将具有目标的特定特征,如时态的使用等。

  • 分级机微调

在最后的阶段,微调LM的架构被修改为包括两个线性块- ReLU和softmax激活。中间层使用ReLU激活,最后一层使用softmax。每个块使用批处理规范化和dropout。Concat pooling确保最后一个隐藏状态通过隐藏状态的max-pooled和mean-pooled表示进行连接。需要非常仔细地进行微调,以确保LM前训练的好处不会丧失。因此,模型的各层逐渐解冻,并从外部softmax层开始进行微调。这种逐渐解冻和连接池确保模型不会成为灾难性遗忘的牺牲品。在所有的层被解冻和微调后,模型就可以预测点击诱饵了。

结论

NLP的预训练模型无疑是一个不断发展的研究领域,不断改进现有模型和技术。预训练模型目前使用微调作为转移学习和建立新模型的一种方法。探索其他可以优化模型构建过程的方法是研究的一个方向。非英语内容的模式研究也是许多研究者感兴趣的领域。在这些领域的研究肯定会使数据科学家更有效地解决已知的NLP任务,而无需深度学习问题的开销。