Advertisement

bert 是单标签还是多标签 的分类_BERT多标签分类

阅读量:

在过去的一年中,深度神经网络引领了自然语言处理领域的新纪元。 基于预训练模型的研究已经推动了许多NLP任务取得了显著的进步。 一些重要里程碑包括ELMo、ULMFiT和OpenAI Transformer。 这些方法使得我们能够在大量数据集(如维基百科全文)上进行无监督语言模型的预训练,并在下游任务中微调这些预训练好的模型。 今年这一领域最具吸引力的是BERT的发布——一种基于多语言Transformer架构的设计。 该模型在多种NLP任务中表现卓越,并且还预训练了两个无监督的任务:掩模语言建模和下一个句子预测。 这使得我们可以利用经过微调后的BERT模型来解决特定的任务。

该系统将借助Kaggle提供的垃圾评论分类挑战进行评估BERT在多标签文本分类任务中的性能。

我们从哪里开始?

Google Research近期推出了BERT基于张量计算引擎的技术实现,并提供了一系列预训练好的模型集合。

BERT-Base, Uncased: 12层, 768个隐层, 12-heads, 110M 个参数

BERT-Large, Uncased: 24层, 1024个隐层, 16-heads, 340M 个参数

BERT-Base, Cased: 12层, 768个隐层, 12-heads , 110M 个参数

BERT-Large, Cased: 24层, 1024个隐层, 16-heads, 340M 个参数

BERT基础版本(最新版建议使用)涵盖...原样保留

Chinese BERT-Base is designed for both Simplified and Traditional Chinese versions. The model consists of twelve layers with a total of seven hundred sixty-eight potential units per layer. It employs twelve attention heads to process information effectively. The model contains a total of one hundred ten million parameters.

采用较小规模的BERT基础模型作为无框架架构完成任务。该模型包含12个层结构,并将所有输入文本转化为小写字母进行处理。

我们采用HuggingFace公司推出的高质量PyTorch实现BERT模型,并可通过以下链接获取完整代码:https://github.com/huggingface/pytorch-pretrained-BERT。我们已成功利用该预训练脚本库将该模型的TensorFlow预训练权重转换为PyTorch模型参数。

我们的实现主要源自BERT原始实现中所包含的run\_classify示例。

数据准备

我们在类InputExample 准备数据:

text_a: 评论内容

text_b:未用到

labels: 训练数据对应为标签,测试数据为空

分词

BERT-Base是一个无监督学习模型,并基于大约3万个不同的词汇构建而成。在分词过程中,系统会将输入文本划分为词汇表中可用的标记序列。为了应对词汇表中未包含的新单词挑战,BERT引入了一种称为"基于Byte Pair Encoding(BPE)的WordPiece标记化技术"来解决这一问题。该方法通过将未知词汇分解为更小的部分子词,并将每个未知词替换为其对应的子词序列来进行表示.值得注意的是,这些子词本身就是词汇表中的成员,因此我们已经学习了其上下文信息.这样一来,未知词本身的上下文就被限制为子词上下文组合的形式.有关此方法的具体实现及其优势,请参考使用子字词单位处理稀有单词的神经机器翻译模型的相关研究

训练

我们设计了一个与原始BERT架构相同的训练循环结构,并按照以下参数进行预训练:批次大小为32、序列长度设定为512以及学习率维持在3 \times 10^{-5}水平。

我们有可能利用多块GPU进行训练。 该Pytorch模型被封装到DataParallel模块中进行并行计算。 这样一来,在现有的多块GPU配置下就能实现高效的并行训练过程。

受限于特定的技术限制, 我们未能采用半精度浮点运算技术. 二进制交叉熵损失函数不具备支持半精度浮点运算的能力. 该特性不会对最终结果产生显著影响, 其训练时长可能有所延长.

评估指标

我们调整了精度度量函数以包括阈值,默认设置为0.5。

对于多标签分类问题而言,在性能评价方面更为关键的是基于受试者工作特征曲线(Receiver Operating Characteristic Area Under the Curve, ROC-AUC)这一指标。这也是Kaggle比赛中常用的评估标准之一。我们通过逐一计算各个标签对应的ROC-AUC值来量化模型表现,并对单个标签进行评估时采用微观平均方法以获得更精确的结果

我们进行了一些实验,只有一些变化,但更多的实验得到了类似的结果。

实验结果

训练损失:0.022,验证损失:0.018,验证准确度:99.31%

各个标签的ROC-AUC分数:

toxic: 0.9988

severe-toxic: 0.9935

obscene: 0.9988

threat: 0.9989

insult: 0.9975

identity_hate: 0.9988

Micro ROC-AUC: 0.9987

全部评论 (0)

还没有任何评论哟~