找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 56|回复: 0

开源 BERT:最先进的自然语言处理预训练

[复制链接]

545

主题

0

回帖

1677

积分

金牌会员

积分
1677
发表于 2024-12-5 09:12:03 | 显示全部楼层 |阅读模式
自然语言处理(NLP) 面临的最大挑战之一是训练数据的短缺。由于 NLP 是一个多元化领域,具有许多不同的任务,因此大多数特定于任务的数据集仅包含几千或几十万个人工标记的训练示例。然而,现代基于深度学习的 NLP 模型可以从更大量的数据中受益,在使用数百万或数十亿个带注释的训练示例进行训练时,模型会得到改进。为了帮助弥补数据方面的差距,研究人员开发了各种技术,使用网络上大量未注释的文本 (称为预训练) 来训练通用语言表示模型。然后可以对预训练的模型进行小数据 NLP 任务(如问答和情感分析)的微调,与从头开始使用这些数据集进行训练相比,准确率有显著提高。
本周,我们开源了一项新的NLP 预训练技术,称为双向编码器表示(BERT)。借助此版本,世界上任何人都可以在单个Cloud TPU上花大约 30 分钟训练自己的最新问答系统(或各种其他模型),或者使用单个 GPU 在几个小时内训练自己的最新问答系统(或各种其他模型)。此版本包括基于TensorFlow构建的源代码和许多预训练的语言表示模型。在我们的相关论文中,我们展示了 11 个 NLP 任务的最新结果,包括极具竞争力的斯坦福问答数据集(SQuAD v1.1)。
BERT 有何不同?
BERT 建立在预训练上下文表征的最新研究基础之上——包括半监督序列学习、生成预训练、ELMo和ULMFit。然而,与这些先前的模型不同,BERT 是第一个深度双向、无监督的语言表征,仅使用纯文本语料库(在本例中为Wikipedia)进行预训练。
为什么这很重要?预训练的表示可以是上下文无关的,也可以是上下文相关的,而上下文表示可以是单向的,也可以是双向的。上下文无关模型(例如word2vec或GloVe)为词汇表中的每个单词生成单个词嵌入表示。例如,单词“ bank ”在“银行账户”和“河岸”中具有相同的上下文无关表示。相反,上下文模型会根据句子中的其他单词生成每个单词的表示。例如,在句子“我访问了银行账户”中,单向上下文模型会根据“我访问了”而不是“账户”来表示“银行” 。然而,BERT从深度神经网络的最底层开始使用它的前一个和下一个上下文——“我访问了...账户”来表示“银行”,使其成为深度双向的。
下图是 BERT 神经网络架构与之前最先进的上下文预训练方法的可视化对比。箭头表示信息从一层流向下一层。顶部的绿色框表示每个输入词的最终上下文化表示:
BERT是深度双向的,OpenAI GPT是单向的,ELMo是浅层双向的。
双向性的优势
如果双向性如此强大,为什么以前没有人这样做过?要理解原因,请考虑一下单向模型通过根据句子中的前几个单词预测每个单词来有效地训练。但是,不可能通过简单地根据每个单词的前一个和下一个单词来训练双向模型,因为这将允许被预测的单词在多层模型中间接“看到自己”。
为了解决这个问题,我们使用了一种简单的技术,即屏蔽输入中的一些单词,然后双向调节每个单词以预测被屏蔽的单词。例如:
虽然这个想法已经存在很长时间了,但 BERT 是第一次成功用于预训练深度神经网络。
BERT 还通过对可以从任何文本语料库生成的非常简单的任务进行预训练来学习对句子之间的关系进行建模:给定两个句子A和B,B是语料库中A之后的实际下一个句子,还是只是一个随机的句子?例如:
使用 Cloud TPU 进行训练
到目前为止,我们所描述的一切似乎都相当简单,那么让它如此出色的原因是什么呢?云 TPU。云 TPU 让我们能够自由地快速试验、调试和调整我们的模型,这对于让我们超越现有的预训练技术至关重要。谷歌研究人员于 2017 年开发的Transformer 模型架构也为我们提供了使 BERT 成功所需的基础。Transformer 在我们的开源版本以及tensor2tensor 库中实现。
BERT 的结果
为了评估性能,我们将 BERT 与其他最先进的 NLP 系统进行了比较。重要的是,BERT 几乎无需对神经网络架构进行任何特定任务的更改即可实现所有结果。在SQuAD v1.1上,BERT 的 F1 得分(准确度衡量标准)达到 93.2%,超过了之前最先进的 91.6% 的得分和人类水平的 91.2% 的得分:
BERT 还在极具挑战性的GLUE 基准 上将最佳表现提高了 7.6% ,GLUE 基准是一组 9 种不同的自然语言理解 (NLU) 任务。这些任务中人工标记的训练数据量从 2,500 个示例到 400,000 个示例不等,BERT在所有任务上都显著提高了最佳准确率:
让 BERT 为您服务
我们发布的模型可以在几个小时甚至更短的时间内针对各种 NLP 任务进行微调。开源版本还包含用于运行预训练的代码,尽管我们相信大多数使用 BERT 的 NLP 研究人员永远不需要从头开始预训练自己的模型。我们今天发布的 BERT 模型仅适用于英语,但我们希望在不久的将来发布已针对多种语言进行预训练的模型。
开源 TensorFlow 实现和预训练 BERT 模型的指针可在http://goo.gl/language/bert找到。或者,您可以通过Colab使用笔记本“使用 Cloud TPU 进行 BERT FineTuning ”开始使用 BERT 。
您还可以阅读我们的论文“ BERT:用于语言理解的深度双向变压器的预训练”以了解更多详细信息。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|绿色天空实验室

GMT+8, 2024-12-27 07:48 , Processed in 0.083036 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表