场景文本检测识别学习 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. 基于微调:对于每一个下游任务,将预训练好的模型直接放进下游任务模型中,并根据下游任务的数据集,稍微修改(微调)模型的参数

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序:11.本地生活小程序制作

开发工具: 微信开发者工具apifox进行创先Mock 项目初始化 新建小程序项目输入ID选择不使用云开发,js传统模版在project.private.config中setting配置项中配置checkinalidKey:false 梳理项目结构 因为该项目有三个tabbar所以我们要创建三…

springboot拦载器

1、拦载器 package com.Interceptor;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.security.auth.login.Log…

Linux基本指令(3)

目录 时间相关的指令: 1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加好后接数个标记,其中常用的标记列表如下: 2.在设定时间方面: 3.时间戳: Cal指令: find指令&a…

部署YUM仓库和NFS共享存储服务

目录 1. YUM仓库服务 1.1 YUM概述 1.2 准备安装源 1.3 yum在线源替换方法 2.制作YUM源 2.1制作ftp源 3.yum软件包的下载方式 4.NFS共享存储服务 4.1 NFS 4.2 NFS网络文件系统 4.3 NFS配置 1. YUM仓库服务 1.1 YUM概述 yum是一个基于RPM包(是Red-Ha…

Java包装类,128陷阱

包装类 基本数据类型都有自己对应的包装类,因为Java本质是面向对象编程的,一切的内容在Java看来都是对象 但是基本数据类型没有类,也没有对象,这样就有了矛盾 所以诞生了基本类型的包装类 基本数据类型: byte,short,…

K8S哲学 - probe 探针

探针分类: liveness probe readiness probe startup probe Liveness Probe:用于检查容器是否还在运行。如果 Liveness Probe 失败,Kubernetes 会杀死容器,然后根据你的重启策略来决定是否重新启动容器。常见的做法是使用与 Readin…

Mysql 、Redis 数据双写一致性 更新策略与应用

零、important point 1. 缓存双写一致性问题 2. java实现逻辑&#xff08;对于 QPS < 1000 可以使用&#xff09; public class UserService {public static final String CACHE_KEY_USER "user:";Resourceprivate UserMapper userMapper;Resourceprivate Re…

如何申请免费SSL证书,把网站升级成HTTPS

HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;是一种用于安全数据传输的网络协议&#xff0c;它可以有效地保护网站和用户之间的通信安全。然而&#xff0c;要使一个网站从HTTP升级到HTTPS&#xff0c;就需要一个SSL证书。那么&#xff0c;如何申请免费的…

Transformer模型详解01-Word Embedding

文章目录 前言Transformer 整体结构Transformer 的输入单词 Embedding原理CBOW 模型one-hot构建 CBOW 训练数据集构建 CBOW 神经网络训练 CBOW 神经网络 Skip-gram 模型one-hot构建 Skip-gram训练数据集训练 Skip-gram神经网络 Word2Vec实例数据训练保存和加载 前言 Transform…

STM32使用PWM控制舵机

STM32使用PWM控制舵机 1、舵机的控制原理 舵机是一种位置伺服驱动器&#xff0c;是一种带有输出轴的小装置。当我们向伺服器发送一个控制信号时&#xff0c;输出轴就可以转到特定的位置。只要控制信号持续不变&#xff0c;伺服机构就会保持相对的角度位置不变。如果控制信号发…

虹科Pico汽车示波器 | 免拆诊断案例 | 2006 款林肯领航员车发动机怠速抖动

故障现象 一辆2006款林肯领航员车&#xff0c;搭载5.4 L发动机&#xff0c;累计行驶里程约为26万km。该车因发动机怠速抖动故障进厂维修&#xff0c;维修人员更换了火花塞、点火线圈及凸轮轴位置传感器&#xff0c;清洗了积炭和喷油器&#xff0c;故障依旧&#xff0c;于是向笔…

02_c/c++开源库ZeroMQ

1.安装 C库 libzmq sudo apt install libzmq3-dev 实例: https://zeromq.org/get-started/?languagec&librarylibzmq# 编译依赖: pkg-config --cflags --libs libzmq or cat /usr/lib/x86_64-linux-gnu/pkgconfig/libzmq.pc -isystem /usr/include/mit-krb5 -I/usr/in…

Mybatis-Plus学习:快速入门、核心功能、扩展功能、插件功能

文章目录 MybatisPlus快速入门快速开始常见注解常见配置 核心功能条件构造器&#xff08;Wrapper&#xff09;自定义SQLService接口基本用法基础业务接口复杂业务接口Lamda查询Lamda更新批量新增 扩展功能代码生成代码生成器快速开发插件 静态工具逻辑删除枚举处理器JSON处理器…

一例MFC文件夹病毒的分析

概述 这是一个MFC写的文件夹病毒&#xff0c;通过感染USB设备传播&#xff0c;感染后&#xff0c;会向c2(fecure.info:443)请求指令来执行。 样本的基本信息 Verified: Unsigned Link date: 19:52 2007/7/5 MachineType: 32-bit MD5: 4B463901E5858ADA9FED28FC5…

在idea中连接mysql

IDE&#xff08;集成开发环境&#xff09;是一种软件应用程序&#xff0c;它为开发者提供编程语言的开发环境&#xff0c;通常集成了编码、编译、调试和运行程序的多种功能。一个好的IDE可以大幅提高开发效率&#xff0c;尤其是在进行大型项目开发时。IDE通常包括以下几个核心组…

AI系列:大语言模型的RAG(检索增强生成)技术(上)

前言 大型语言模型&#xff08;LLM&#xff09;虽然在生成文本方面表现出色&#xff0c;但仍然存在一些局限性&#xff1a;数据是静态的&#xff0c;而且缺乏垂直细分领域的知识。为了克服这些限制&#xff0c;有时候会进行进一步的模型训练和微调。在实际应用中&#xff0c;我…

leetcode 221 最大正方形面积

示例 3&#xff1a; 输入&#xff1a;matrix [["0"]] 输出&#xff1a;0 # 最大正方形面积 def max_square(matrix):m len(matrix)n len(matrix[0])if m 0 or n 0::return Nonemax_side 1dp [[0] * (n 1) for _ in range(m 1)]for i in range(1, m 1):fo…

Linux进程——进程的概念(PCB的理解)

前言&#xff1a;在了解完冯诺依曼体系结构和操作系统之后&#xff0c;我们进入了Linux的下一篇章Linux进程&#xff0c;但在学习Linux进程之前&#xff0c;一定要阅读理解上一篇内容&#xff0c;理解“先描述&#xff0c;再组织”才能更好的理解进程的含义。 Linux进程学习基…

Unity 数字字符串逗号千分位

使用InputField时处理输入的数字型字符串千分位自动添加逗号&#xff0c;且自动保留两位有效数字 输入&#xff1a;123 输出&#xff1a;123.00 输入&#xff1a;12345 输出&#xff1a;12,345.00 代码非常简单 using UnityEngine; using TMPro;public class …

Elcomsoft iOS Forensics Toolkit: iPhone/iPad/iPod 设备取证工具包

天津鸿萌科贸发展有限公司是 ElcomSoft 系列取证软件的授权代理商。 Elcomsoft iOS Forensics Toolkit 软件工具包适用于取证工作&#xff0c;对 iPhone、iPad 和 iPod Touch 设备执行完整文件系统和逻辑数据采集。对设备文件系统制作镜像&#xff0c;提取设备机密&#xff08…