点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”
作者:Marco Cerliani
编译:ronghuaiyang
正文共:2062 字 10 图
预计阅读时间:6 分钟
使用不同的方式来使用BERT模型。
在NLP中不断的研究产生了各种各样的预训练模型。对于各种任务,例如文本分类、无监督主题建模和问题回答等,不断的在刷新业界最佳。其中,最伟大的发现之一是在神经网络结构中采用了注意力机制。这种技术是所有称为transformers的网络的基础。他们应用注意力机制来提取关于给定单词上下文的信息,然后将其编码到一个学习到的向量中。
作为数据科学家,我们可以调用很多transformers架构,并使用它们对我们的任务进行预测或微调。在这篇文章中,我们喜欢读经典的BERT,但是同样的推理也适用于其他所有的transformer结构。我们使用了siamese结构,这是一个双路BERT,用于多文本输入的分类。
数据
我们从Kaggle上收集数据集。新闻类别数据集:https://www.kaggle.com/rmisra/news-category-dataset包含从HuffPost上获得的2012年至2018年的约20万条新闻标题。我们需要根据两种不同的文本来源对新闻文章进行分类:标题和简介。我们总共有40多种不同类型的新闻。为了简单起见,考虑到工作流的计算时间,我们只使用了8个类的一个子组。
我们不应用任何预处理和数据清洗,我们让BERT表演所有的魔法。我们的工作框架是Tensorflow与Huggingface的transformer库。更详细地说,我们使用了原始的Bert模型transformer,它的输出就是原始的隐藏状态,没有任何特定的头。它可以像Tensorflow模型的子类一样访问,并且可以很容易地在我们的网络架构中进行调优。
单个BERT
作为第一个竞争者,我们引入了单个BERT的结构。它只接收一个文本输入,这是两个文本源拼接的结果。这是正常操作:任何模型都可以接收拼接起来的特征作为输入。对于transformers,这个过程将输入与特殊tokens结合起来。
BERT期望输入数据以特定的格式:有特殊的tokens来标记句子/源文本的开头([CLS])和结尾([SEP])。与此同时,tokenization包括将输入文本拆分为词汇表中可用的tokens列表。对词汇表外的单词进行word-piece的处理,一个单词被逐步分解为子单词,这些子单词是词汇表的一部分。该过程可以通过预先训练好的Huggingface的Tokenizer轻松实现,我们只需要注意填充。
我们最后从源文本的输入中得到了三个矩阵(标记、掩码、序列id)。它们是我们的transformers的输入。在单个BERT的情况下,我们只有一个矩阵的元组。这是因为我们同时将两个文本序列传递给我们的tokenizer,这两个文本序列被自动拼接起来(使用[SEP] token)。
我们的模型结构非常简单:transformer直接与我们在上面构建的矩阵相连接。最后,通过平均池操作减少了transformer的最终隐藏状态。概率分数是由最终的dense层计算出来的。
我们的简单BERT对测试数据的准确率达到83%。性能报告在下面的混淆矩阵中。
双路BERT
我们的第二个结构可以定义为双路BERT,因为它使用了两个不同的transformers。他们有相同的组成,但训练用不同的输入。第一个接收新闻标题,另一个接收简介。输入被编码为两个矩阵元组(token, mask, sequence ids),每个输入一个。对于两个数据源,我们的transformers的最终隐藏状态都使用平均池来聚合。它们被拼接起来,并通过一个全连接层传递。
通过这些设置,我们可以获得测试数据84%的准确度。
SIAMESE BERT
我们最后的模型是一种Siamese的结构。可以这样定义它,因为两个不同的数据源是在同一个可训练的transformer结构中同时传递的。输入矩阵与Siamese BERT的情况相同。对于这两个数据源,transformer的最终隐藏状态是通过平均操作聚合的。产生的连接在一个全连接层中传递,该层将它们组合在一起并产生概率。
我们的siamese结构在我们的测试数据上达到82%的准确度。
总结
在这篇文章中,我们应用BERT结构来执行一个多类分类任务。我们实验的附加价值是使用transformers 以不同的方式处理多个输入源。我们从只有一个源中的所有输入的经典拼接结构开始,并以为模型提供分开的文本输入作为结束。双路BERT和siamese BERT都能够实现良好的性能。由于这个原因,它们可以被认为是经典的单变压器结构的良好替代品。
英文原文:https://towardsdatascience.com/siamese-and-dual-bert-for-multi-text-classification-c6552d435533
请长按或扫描二维码关注本公众号
喜欢的话,请给我个好看吧!
本文分享自微信公众号 - AI公园(AI_Paradise)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/1416903/blog/4427856