作为一名学习大数据的学生,这学期开设了一门学习NLP (Natural Language Processing)的课程。首次接触,对于NLP还是一片茫然。因此对NLP进行了搜索,查阅了许多关于自然语言处理的知识,下面是我对所搜集的NLP资料进行得整合,仅供参考。
这是一篇我无意之中搜索到的一位国外大牛 Jay Alammar 的博客:https://jalammar.github.io/
NLP如何破解转移学习
2018年是处理文本的机器学习模型的拐点(或者更准确地说,是自然语言处理或简称NLP)。我们对如何以最能捕捉潜在意义和关系的方式最好地表达单词和句子的概念性理解正在迅速发展。此外,NLP社区已经提出了非常强大的组件,您可以在自己的模型和管道中自由下载和使用(它被称为NLP的ImageNet时刻,参考多年前类似的发展如何加速计算机视觉中机器学习的发展任务)。
在这个发展的最新里程碑是发布的BERT,事件描述为标志着NLP一个新时代的开始。BERT是一个模型,打破了几个模型可以处理基于语言的任务的记录。在描述该模型的论文发布后不久,该团队还开放了该模型的代码,并提供了已经在大量数据集上预先训练过的模型的下载版本。这是一个重大的发展,因为它使任何人都可以构建一个涉及语言处理的机器学习模型,将这个强大的工具用作一个易于使用的组件 - 节省了培训语言处理模型所需的时间,精力,知识和资源。
示例:句子分类
使用BERT最直接的方法是使用它来分类单个文本。这个模型看起来像这样:
为了训练这样的模型,你主要必须训练分类器,在训练阶段BERT模型发生的变化很小。该训练过程称为微调,并且源于半监督序列学习和ULMFiT。
对于不熟悉该主题的人,既然我们在讨论分类器,那么我们就处于机器学习的监督学习领域。这意味着我们需要一个标记的数据集来训练这样的模型。对于此垃圾邮件分类器示例,标记的数据集将是电子邮件和标签的列表(每封邮件的“垃圾邮件”或“非垃圾邮件”)。
这种用例的其他示例包括:
-
情绪分析
-
事实查证
输入:句子。输出:“索赔”或“不索赔”
更雄心勃勃/未来主义的例子:
输入:索赔句。输出:“真”或“假”
Full Fact是一个为公众利益建立自动事实检查工具的组织。他们的部分管道是一个分类器,可以读取新闻文章并检测声明(将文本分类为“声明”或“不声称”),以后可以对其进行事实检查(现在由人类通过,之后使用ML,希望如此)。
视频:用于自动事实检查的句子嵌入 - Lev Konstantinovskiy。
模型架构
现在您已经了解了如何使用BERT的示例用例,让我们仔细看看它是如何工作的。
本文介绍了BERT的两种型号:
BERT基本上是训练有素的变压器编码器堆栈。这是指导您阅读我之前的文章The Illustrated Transformer的好时机,该文章解释了Transformer模型 - BERT的基本概念以及我们接下来要讨论的概念。
两种BERT模型都有大量的编码器层(本文称之为Transformer Blocks) - Base版本为12个,Large版本为24个。它们还具有更大的前馈网络(分别为768和1024个隐藏单元),以及比初始论文中变压器参考实现中的默认配置更多的关注头(分别为12和16)(6个编码器层,512个隐藏单元,和8个关注头)。
模型输入
第一个输入令牌提供了一个特殊的[CLS]令牌,原因将在后面变得明显。CLS在这里代表分类。
就像变压器的香草编码器一样,BERT采用一系列字作为输入,不断向上流动。每一层都应用自我关注,并通过前馈网络传递其结果,然后将其交给下一个编码器。
在架构方面,直到这一点,这与Transformer相同(除了大小,这只是我们可以设置的配置)。在输出中,我们首先开始看到事情的分歧。
模型输出
每个位置输出大小为hidden_size的向量(BERT Base中的768)。对于我们上面看过的句子分类示例,我们只关注第一个位置的输出(我们将特殊的[CLS]标记传递给)。
如果您有更多标签(例如,如果您是一个电子邮件服务,用“垃圾邮件”,“非垃圾邮件”,“社交”和“促销”标记电子邮件),您只需调整分类器网络以获得更多输出神经元即可然后通过softmax。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。