场景文本检测识别学习 day07(BERT论文精读)

BERT

  • 在CV领域,可以通过训练一个大的CNN模型作为预训练模型,来帮助其他任务提高各自模型的性能,但是在NLP领域,没有这样的模型,而BERT的提出,解决了这个问题
  • BERT和GPT、ELMO的区别:
    1. BERT是用来预训练深双向的表示,并且使用没有标号的数据,同时上下文信息是左右都可以用来推测。而训练好的BERT只需要增加一个输出层就可以在很多NLP的任务上得到不错的结果,同时不需要对模型进行很多针对下游任务的改动
    2. GPT使用了新架构Transformer,但是只能从单向(左侧)的上下文信息来推测,ELMO虽然可以双向,但是架构比较老–RNN,则在用到下游的任务时,需要对模型进行针对任务的改动
  • 语言模型过去只有单向,没有双向,而在预训练的任务中,双向应该可以更好的表示特征,因此为了解决这个问题,BERT提出了双向表征,这是通过带掩码的语言模型来实现的,即给定一个句子,挖掉其中的一个词,然后根据词的左右两边的上下文来预测该位置的词是什么
  • 但这样来说,BERT模型就不是预测未来的语言模型,而是类似完形填空的语言模型
  • 由于BERT的数据量很大,所以直接按照空格来切词,那么生成的词典大小会特别大(百万级别),会占用很多学习参数来生成词典。因此BERT切词策略为WordPiece:将出现频率不高的词切开,观察它的子序列的出现频率,如果频率很高那么保留这个子序列,作为词根就可以了,最后的词典大小为30000左右。
    在这里插入图片描述
  • 由于Transformer的输入为一个序列(一个句子或两个句子):编码器和解码器都有输入,因此Transformer可以处理需要一个输入句子的下游任务,也可以处理需要两个输入句子的下游任务
  • 但是BERT只有一个编码器,所以它想解决需要两个输入句子的下游任务,就需要将两个输入句子变成一个序列。同时在一个序列中判断这些词分别是哪个输入句子,是通过一个段嵌入来实现,并且在两个句子之间通过 [SEP] 来区分
  • BERT的输入序列的第一个词为 [CLS],并用这个词的输出作为整个序列的输出(因为有自注意力层,所以这个词可以看作拥有整个序列的信息),位置嵌入的大小为序列中最长词元的长度
  • 不同于Transformer,而BERT的位置嵌入和哪一个句子的嵌入,都是通过学习得来的
  • 综上:进入BERT的序列嵌入为:词元本身的嵌入 + 词元在哪一个句子的嵌入 + 位置嵌入
    在这里插入图片描述
  • BERT流程:
    1. 将一个输入序列转换为词嵌入,并加上 [CLS]、[SEP]、位置编码,作为BERT的输入
    2. 输入经过很多个transformer encoder块后,在最后一个encoder块得到整个输入序列的BERT输出表示
    3. 在BERT后,添加额外的输出层来得到下游任务的具体结果
  • BERT模型主要解决两种问题:MLM:完形填空,随机选择一些单词并用[MASK]来替换它们,模型的任务是预测被替换的单词。NSP:预测一个句子是否是另一个句子的下一句
  • 由于Transformer采用的编码器-解码器架构,输入序列是分成两部分,分别输入到编码器和解码器的,所以一个注意力层不能同时拿到完整的输入序列。但是BERT是编码器架构,输入序列是完整的输入到编码器的,所以一个注意力层可以同时看到完整的输入序列,但是因此BERT做机器翻译也就不是很好做了

Pre-training

  • 通过在一个大数据集上预训练一个模型,将这个模型应用在其他任务上,并使在其他数据集上训练的其他模型性能有提高
  • 在BERT中,是将BERT模型在一个没有标号的大数据集上预训练,然后在多个下游任务中都初始化一个新的BERT模型(权重参数使用上一步预训练好的),之后对模型进行微调参数,得到一个适配该下游任务的BERT模型
  • 使用预训练模型来做特征表示的时候,有以下两种策略:
    1. 基于特征:对于每一个下游任务,都要构建一个新的模型,并将在预训练模型中训练好的表示(作为额外特征)和输入一起输入进新的模型中,由于额外特征意见有了比较好的表示,所以新模型训练起来比较容易
    2. 基于微调:对于每一个下游任务,将预训练好的模型直接放进下游任务模型中,并根据下游任务的数据集,稍微修改(微调)模型的参数

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

翻译《The Old New Thing》 - Why .shared sections are a security hole

Why .shared sections are a security hole - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20040804-00/?p38253 Raymond Chen 2004年08月04日 许多人会推荐使用共享数据节作为在应用程序的多个实例之间共享数据的一种方式。这听起来是个好…

走向大规模应用之前,DePIN 如何突破技术、数据与市场之网

近期,随着分布式物理基础设施网络(DePIN)的快速演变,一个旨在利用区块链技术彻底改造传统基础设施模型的新兴生态系统正在逐渐浮现。2024 年 4 月,以 peaq 为代表的 DePIN 项目成功筹集了 1500 万美元用于生态系统的扩…

通过 API从 0 到 1 构建 本地 GPTs——1.构建Builder‘s Prompt

目的:帮助小白用户生成结构化 prompt 功能清单 搭建本地 gpts 能力,构建本地企业知识库助手Builder’s Prompt -对话引导构建 prompt 示例,生成助手信息function_call的用法prompt 示例 GPTs 的 Create 能力 用于引导用户构建结构化的 pr…

深度学习的瓶颈是什么!

深度学习主要的瓶颈: 数据依赖与标注问题:深度学习模型通常需要大量的标注数据来进行训练。然而,获取大量的标注数据不仅成本高昂,而且在某些领域(如医疗、金融等)中可能难以获取足够的标注数据。此外&…

python-excel自动化-openpyxl

openpyxl学习笔记 创建或打开表格存储和遍历数据设置单元格风格过滤器和排序更改工作表的背景颜色合并单元格冻结窗口数字格式公式图像图表条形图折线图散点图 创建或打开表格 # 创建 import datetime from openpyxl import Workbook # 实例化 wb Workbook() # 激活 work…

四:物联网ARM开发

一:ARM体系结构概述 1:控制外设led灯还有一些按键这些就要用到gpio,采集传感器的数据需要adc进行转化数据格式,特殊的外设和传感器是通过特殊的协议接口去进行连接的比如一些轴传感器和主控器的连接是通过spi,IIC 控制…

Check the `candidate.safety_ratings` to see if the respoe was blocked.

ValueError:“response.text”快速访问器仅适用于简单(单“部分”)文本响应。此响应不是简单的文本。请改用“result.parts”访问器或完整的“result.candidates[index].content.parts”查找。期号 #170 谷歌-双子座/生成-人工智能-python Gi…

JavaScript 日期对象

在 JavaScript 中,你可以使用 Date 对象来处理日期和时间。以下是一些常见的 Date 对象的使用方法: 1、创建日期对象: // 创建一个表示当前日期和时间的 Date 对象 let currentDate new Date();// 创建一个特定日期和时间的 Date 对象 let…

GPB | RegVar:基于深度神经网络的非编码区突变功能预测新方法

Genomics, Proteomics & Bioinformatics (GPB)发表了由军事医学研究院辐射医学研究所张成岗研究员、周钢桥研究员和卢一鸣副研究员团队完成的题为“RegVar: Tissue-specific Prioritization of Noncoding Regulatory Variants”的方法文章。我们的“…

数据结构 - 栈

目录 一. 栈的概念 二. 栈的结构 三. 栈的实现 1. 实现栈的两种方式 链表实现栈 顺序表实现栈 选择依据 栈的创建 栈的初始化 栈的销毁 入栈 出栈 获取栈顶元素 判断栈是否为空 获取栈中有效数据的个数 一. 栈的概念 栈(Stack)是一种重要…

VScode Failed to parse remote port from server output

在使用VScode 在连接AutoDL 过程中一直连接不上,显示 Failed to parse remote port from server output 在网上查了很多资料,貌似的没啥用。和我有相同 error 的可以尝试修改setting.json 文件。 添加这条命令(我的json文件里面没有&#…

共享购:融合社交分享与消费返利的创新电商模式

共享购电商模式是一种独特的商业模式,巧妙地将社交分享与消费返利结合,让消费者在购物的同时,也能通过平台资产奖励实现价值的双重增长。该平台资产体系主要由共享值和共享积分两大要素构成,共同构建了一个充满活力的电商生态系统…

区块链技术与应用学习笔记(8-9节)——北大肖臻课程

目录 8.挖矿 对于全节点和轻节点思考问题? ①全节点在比特币的主要作用? ②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块,重新开始挖矿。节点这么做…

vivado 使用“链路 (Links)”窗口查看和更改链路设置

使用“链路 (Links) ”窗口查看和更改链路设置 创建链路后 , 就会将其添加到“ Links ”视图 ( 请参阅下图 ) 中 , 该视图是更改链路设置和查看状态的主要方法 , 也是最佳方法。 “ Links ”窗口中的每一行都对应 1 …

pymilvus创建多向量

pymilvus创建多向量 从 Milvus 2.4 开始,引入了多向量支持和混合搜索框架,单个collection可以支持10个向量字段。不同的向量字段可以表示不同的方面、不同的embedding模型甚至表征同一实体的不同数据模态。该功能在综合搜索场景中特别有用,例…

python学习笔记----python基础语法(二)

一、字面量 在 Python 中,字面量 是一种直接在代码中表示其自身值的数据。字面量用于创建值,并且可以直接被 Python 的解释器识别和处理。不同类型的数据有不同的字面量形式。下面是一些常见的字面量类型: 二、注释 注释:在程序…

[Android14] SystemUI的启动

1. 什么是System UI SystemUI是Android系统级应用,负责反馈系统及应用状态并与用户保持大量的交互。业务主要涉及的组成部分包括状态栏(Status Bar),通知栏(Notification Panel),锁屏(Keyguard),控制中心(Quick Setting)&#xff…

Babylon.js和Three.js的区别

Babylon.js和Three.js都是基于WebGL的3D图形库,它们使得开发者能够在网页上创建和展示3D内容。尽管它们的目标相似,但在设计理念、功能集、性能和社区支持等方面存在一些差异。北京木奇移动技术有限公司,专业的软件外包开发公司,欢…

SpringCloud引入SpringBoot Admin

Spring Boot Admin可以监控和管理Spring Boot&#xff0c;能够将 Actuator 中的信息进行界面化的展示&#xff0c;也可以监控所有 Spring Boot 应用的健康状况&#xff0c;提供警报功能。 1. 创建SpringBoot工程 2. 引入相关依赖 <dependency><groupId>com.alib…

MinIO分布式文件系统介绍

1、不同存储方式的对比&#xff1a; 2、 分布式文件系统对比 3、MinIO的特点 MinIO特点 数据保护&#xff1a;Minio使用Minio Erasure Code&#xff08;纠删码&#xff09;来防止硬件故障。即便损坏一半以上的driver&#xff0c;但是仍然可以从中恢复。 高性能&#xff1a;作…