【深度学习:开源BERT】 用于自然语言处理的最先进的预训练

news2024/11/20 16:29:55

【深度学习:开源BERT】 用于自然语言处理的最先进的预训练

    • 是什么让 BERT 与众不同?
    • 双向性的优势
    • 使用云 TPU 进行训练
    • BERT 结果
    • 让 BERT 为您所用

自然语言处理 (NLP) 面临的最大挑战之一是训练数据的短缺。由于 NLP 是一个具有许多不同任务的多元化领域,因此大多数特定于任务的数据集仅包含几千或几十万个人工标记的训练样本。然而,基于深度学习的现代 NLP 模型可以从大量数据中获益,当在数百万或数十亿个带注释的训练样本上进行训练时,这些模型会有所改善。为了帮助缩小这一数据差距,研究人员开发了多种技术,用于使用网络上大量未注释的文本(称为预训练)来训练通用语言表示模型。然后,可以对小数据 NLP 任务(如问答和情感分析)对预训练模型进行微调,与从头开始训练这些数据集相比,准确性有了实质性的提高。

本周,我们开源了一种用于 NLP 预训练的新技术,称为 Bidirectional Encoder Representations from Transformers 或 BERT。在此版本中,世界上任何人都可以在大约 30 分钟内在单个 Cloud TPU 上训练自己的先进问答系统(或各种其他模型),或者使用单个 GPU 在几个小时内训练自己的先进问答系统。该版本包括基于 TensorFlow 构建的源代码和许多预训练的语言表示模型。在我们的相关论文中,我们展示了 11 个 NLP 任务的最新结果,包括极具竞争力的斯坦福问答数据集 (SQuAD v1.1)。

是什么让 BERT 与众不同?

BERT 建立在训练前上下文表示的最新工作之上,包括半监督序列学习、生成式预训练、ELMo 和 ULMFit。然而,与这些以前的模型不同,BERT是第一个深度双向、无监督的语言表示,仅使用纯文本语料库(在本例中为维基百科)进行预训练。

为什么这很重要?预训练的表示可以是无上下文的,也可以是上下文的,上下文表示可以是单向的或双向的。word2vec 或 GloVe 等上下文无关模型为词汇表中的每个单词生成单个单词嵌入表示。例如,“bank”一词在“bank account”和“bank of the river”中具有相同的上下文无关表示形式。相反,上下文模型会根据句子中的其他单词生成每个单词的表示形式。例如,在句子“我访问了银行帐户”中,单向上下文模型将基于“我访问了”而不是“帐户”来表示“银行”。然而,BERT 使用其前一个和下一个上下文来表示“银行”——“我访问了…account“——从深度神经网络的最底层开始,使其深度双向。

BERT的神经网络架构与以前最先进的上下文预训练方法相比的可视化如下所示。箭头表示从一层到下一层的信息流。顶部的绿色框表示每个输入词的最终上下文表示:

在这里插入图片描述

BERT 是深度双向的,OpenAI GPT 是单向的,ELMo 是浅层双向的。

双向性的优势

如果双向性如此强大,为什么以前没有做过?要理解原因,请考虑通过预测句子中前面单词的每个单词来有效地训练单向模型。但是,不可能通过简单地将每个单词调整为前一个和下一个单词来训练双向模型,因为这将允许被预测的单词在多层模型中间接地“看到自己”。

为了解决这个问题,我们使用简单的技术,将输入中的一些单词屏蔽掉,然后双向调节每个单词以预测被屏蔽的单词。例如:

在这里插入图片描述
虽然这个想法已经存在很长时间了,但 BERT 是第一次成功地将其用于预训练深度神经网络。

BERT 还通过预训练一个非常简单的任务来学习建模句子之间的关系,该任务可以从任何文本语料库生成:给定两个句子 A 和 B,B 是语料库中 A 之后的实际下一个句子,还是只是一个随机句子?例如:

在这里插入图片描述

使用云 TPU 进行训练

到目前为止我们所描述的一切似乎都相当简单,那么它缺少什么让它工作得这么好呢?云 TPU。云 TPU 使我们能够自由地快速实验、调试和调整我们的模型,这对于我们超越现有的预训练技术至关重要。 Google 研究人员于 2017 年开发的 Transformer 模型架构也为我们奠定了 BERT 成功所需的基础。 Transformer 在我们的开源版本以及tensor2tensor 库中实现。

BERT 结果

为了评估性能,我们将 BERT 与其他最先进的 NLP 系统进行了比较。重要的是,BERT 取得了所有成果,几乎没有对神经网络架构进行任何针对特定任务的更改。在 SQuAD v1.1 上,BERT 达到了 93.2% 的 F1 分数(准确度衡量标准),超过了之前 91.6% 的最先进分数和 91.2% 的人类水平分数:

在这里插入图片描述

BERT 还在极具挑战性的 GLUE 基准测试(一组 9 个不同的自然语言理解 (NLU) 任务)上将最先进的技术提高了 7.6% 的绝对值。在这些任务中,人工标记的训练数据量从 2,500 个样本到 400,000 个样本不等,BERT 大大提高了所有这些任务的最新准确性:

#在这里插入图片描述

让 BERT 为您所用

我们发布的模型可以在几个小时或更短的时间内对各种 NLP 任务进行微调。开源版本还包括运行预训练的代码,尽管我们相信大多数使用 BERT 的 NLP 研究人员永远不需要从头开始预训练自己的模型。我们今天发布的 BERT 模型是纯英语的,但我们希望在不久的将来发布已经过各种语言预训练的模型。

开源 TensorFlow 实现和指向预训练 BERT 模型的指针可在 http://goo.gl/language/bert 中找到。或者,您可以通过 Colab 的笔记本“BERT FineTuning with Cloud TPU”开始使用 BERT。

您还可以阅读我们的论文“BERT:用于语言理解的深度双向变压器的预训练”了解更多详细信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

绿联私有云DX4600升级DX4600 Pro试用体验 | 全方位解读“卷王”NAS的进化史

哈喽小伙伴们好,我是Stark-C~ 想必很多关注数码圈的朋友都知道绿联这个品牌吧?作为一个深耕数码科技领域数十载的国民大品牌,绿联现在可谓是在数码行业全面开花,并且取得的成就大家也是有目共睹。它家的产品基本都是以高性价比著…

详解SpringCloud微服务技术栈:ElasticSearch实践1——RestClient操作索引库与文档

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:ElasticSearch原理精讲、安装、实践 📚订阅专栏:微服务技术全家…

C++ 数论相关题目 表达整数的奇怪方式(中国剩余定理)

给定 2n 个整数 a1,a2,…,an 和 m1,m2,…,mn ,求一个最小的非负整数 x ,满足 ∀i∈[1,n],x≡mi(mod ai) 。 输入格式 第 1 行包含整数 n 。 第 2…n1 行:每 i1 行包含两个整数 ai 和 mi ,数之间用空格隔开。 输出格式 输出最小…

使用 create-react-app 创建 react 应用

一、创建项目并启动 第一步:全局安装:npm install -g create-react-app 第二步:切换到想创建项目的目录,使用命令create-react-app hello-react 第三步:进入项目目录,cd hello-react 第四步:启…

内部类 --java学习笔记

内部类 是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,那么这个类就是内部类当一个类的内部包含了一个整体的事务,且这个事务没必要单独设计时,就可以把…

Java面试题:JMM与锁的理论

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》的第二弹,内容是Java并发编程中关于Java内存模型(Java Memory Model)和锁的基础理论相关的问题。这两块内…

网工必备工具:不懂它,何谈高手之位?

点开之前,你脑子里闪出来的工具是什么?ping?又或是arp、tracert、route……? 今天要给你分享的是非常经典的Linux网络抓包工具Tcpdump。 它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。 Tcpdump 适用…

【语录】岁月

中年 写中年,应该是年少励志三千里 踌躇百步无寸功,转眼高堂已白发 儿女蹒跚学堂中,不如意事常八九,可与人言无二三 可是诸位,不用悲伤,稻盛和夫说, 人生并不是一场物质的盛宴,而是…

12.Golang中类的表示与封装

目录 概述类的表示代码结果 类的封装代码结果 结束 概述 Golang中类的表示与封装 类的表示 代码 注释掉的代码,并不能拿来当赋值或获取值来使用。 package mainimport "fmt"// 类大写则代表,可以被其它包使用 type Hero struct {// 属性方法大…

30岁以就业为目标学前端,快歇着吧;反之50岁都不晚。

Hi,我是贝格前端工场,首先声明声明我们不搞前端培训,有很多老铁在留言中问我关于前端学习的问题,最普遍的一个问题就是30岁以后学前端晚了吗?今天借着此篇文章回答一下。 一、30岁学前端的三种人 首先抛开年龄不说&am…

【计算数组连续值的移动距离】及【计算遥控器按键总次数】

计算数组连续值的移动距离及计算遥控器按键总次数 计算数组连续值的移动距离计算遥控器按键总次数 计算数组连续值的移动距离 /*** 计算数组连续值的移动距离* 给定一个乱序的整数数组,数组中值为1~n,请计算出所有数字移动到比其大1的数字位置的距离和。…

【vue2】路由之 Vue Router

文章目录 一、安装二、基础使用1、简单的示例2、动态路由2.1 定义动态路径参数2.2 获取动态路径的参数2.3 捕获所有路由 3、嵌套路由4、编程式的导航4.1 router.push4.2 router.replace4.3 router.go(n) 5、命名路由6、重定向 三、进阶1、导航守卫1.1 全局前置守卫1.2 全局后置…

1Panel CloudFlare证书申请失败的解决方案

在升级1Panel后,使用 CloudFlare DNS验证时,会提示 [*.biliwind.com] [*.biliwind.com] acme: error presenting token: cloudflare: failed to find zone biliwind.com.: ListZonesContext command failed: Invalid request headers (6003) 为解决此问…

如何在Arxiv上预发表自己的手稿

1. 使用latex编辑好自己的手稿。可以使用latex软件或者overleaf。尽量避免警告,否则会在上传到arxiv时出现意外的错误。 2. https://arxiv.org/登陆并注册arxiv账号 3. 点击 开始新的提交(START NEW SUBMISSION) 4. 主要的问题是参考文献的导…

C++:auto 关键字 范围for

目录 auto 关键字: 起源: auto的使用细则: auto不能推导的场景: 范围for: 范围for的使用条件: C的空指针: 注意: auto 关键字: 起源: 随着程序越…

全角色服务、全场景支撑、全业务应用的新一代智慧教室

新一代智慧教室以“数智化助力高质量人才培养”为核心目标,以AI赋能的智能硬件为基础构建多形态智慧教学环境,以中台为支撑实现数据、设备、系统、业务的互联互通、开放共享,以平台全面覆盖教学应用,采集、汇聚、挖掘、分析课前课…

【周赛】第382场周赛

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 从这一场(第382场周赛)周赛开始记录,目标是尽快达到准确快速AC前三道题,每场比赛…

【服务器GPT+MJ+GPTs】创建部署GPT+MJ+GPTs程序网站

目录 🌺【前言】 🌺【准备】 🌺【宝塔搭建GPT+MJ+GPTs】 🌼1. 给服务器添加端口 🌼2. 安装宝塔 🌼3. 安装Docker 🌼4. 安装ChatGPT程序 🌼5. 程序更新 🌼6. 修改端口 | 密码 🌼7. 绑定域名+申请SSL证书 🌺【前言】 相信大家都对openai的产品ch…

【2024】Docker部署Redis

1.说明: 因为容器实例的运行是有生命周期的,一些redis的备份、日志和配置文件什么的最好还是放在服务器本地。这样当容器删除时,我们也可以保留备份和日志文件。所以先在本地服务器安装redis并配置文件设置。下面是安装步骤: 2.安装步骤 1…

Unity 命令模式(实例详解)

文章目录 示例1:基础命令类结构示例2:旋转对象命令示例3:增加道具命令示例4:切换场景命令示例5:播放音效命令 在Unity中使用命令模式(Command Pattern)是一种常见的设计模式,用于实现…