场景文本检测识别学习 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.mzph.cn/web/4059.shtml

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

相关文章

微信收款码0.2费率开通

很多人想申请低手续费率的收款码不知从何下手,在参考了大量博客教学之后,终于搞懂了详细流程以及注意事项。在此记录一下。我申请的是一个只需要0.2%费率的微信收款码,申请时间是2022年2月12日。申请之前只需要准备营业执照和法人身份z&#…

【iconv】Linux c++ 中文字符串转十六进制 GBK 编码/内码

文章目录 问题描述c 代码CMakeLists.txt参考链接 问题描述 Linux 系统默认使用的是 UTF-8 编码,并且 c 中没有标准库可以直接将中文字符转为 GBK 编码/内码。因此需要借助 iconv 库来实现。 在实现代码之前,可以在一下在线工具网站进行中文字符到各个编…

​可视化大屏C位图:园区鸟瞰

将园区鸟瞰图作为可视化大屏设计的焦点图有以下几个好处: 提供全局视图:园区鸟瞰图可以展示整个园区的布局和结构,提供全局视图。这对于大型园区或复杂的场所来说尤为重要,用户可以一目了然地了解整个园区的规模、分布和关联关系…

使用新版ESLint,搭配Prettier使用的配置方式

概述 ESLint重大更新(9.0.0版本)后,将不再支持非扁平化配置文件,并且移除了与Prettier冲突的规则,也就是说与Prettier搭配使用,不再需要使用插件“eslint-config-prettier”来处理冲突问题。 注:使用新版的前提条件是Node.js版本必须是18.18.0、20.9.0,或者是>=21.1…

ESP-IDF编译系统详解(1)

接前一篇文章:VSCode ESP-IDF安装与配置全过程 本文内容主要参考: 《ESP32-C3物联网工程开发实战》 —— 乐鑫科技 编著 特此致谢! 前文已经详述了ESP-IDF开发环境的搭建,包括ESP-IDF的下载与安装完整流程,以及VSCo…

怎么排查K8S容器当中的Java程序内存泄露问题

今天早上发现生产线其中的一个服务在凌晨的时候突然重启了,内存突然从1G升到1.8G,CPU使用量从0.1升到了0.28,说明在这个时间点,内存突增达到了限额以上,服务重启了。因为这个服务布署了多节点,这次重启对业…

【springboot整合redis】异常处理

这个问题是在使用springboot整合redis时,创建好工程后,测试时所产生的 报错: org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: NOAUTH A…

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

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

巴特沃斯滤波原理及代码实现(matlab详细过程版)

目录 一、算法原理1、原理概述2、参考文献 二、代码实现三、结果展示 本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、原理概述 巴特沃斯滤波器(Butterworth filt…

SQLite运行时可加载扩展(三十五)

返回:SQLite—系列文章目录 上一篇:SQLite轻量级会话扩展(三十四) 下一篇:SQLite的DBSTAT 虚拟表(三十六) 1. 概述 SQLite 能够在运行时加载扩展(包括新的应用程序定义的 SQL 函数、整理序列、虚拟表和 VFS&…

Mysql-主从复制理解

环境:mysql,主从复制,必须有2个mysql实例,也就是说可以在一台电脑上安装2个msyql,或者2台服务器,一个主服务器,一个从服务器 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的…

Tomcat安装和配置以及多实例部署(附脚本)

TOMCAT详细部署 Tomcat服务器简介核心组件Tomcat 各组件及关系工作流程 Tomcat server.xml 配置详解serverserviceConnectorEngineHostContextValve 阀门 Tomcat部署与安装部署脚本主要目录说明 Tomcat多实例部署扩展和优化 Tomcat 的 catalina.sh 文件以调整 JVM 参数 Tomcat服…

前端工程化Vue使用Node.js设置国内高速npm镜像源(踩坑记录版)

前端工程化Vue使用Node.js设置国内高速npm镜像源(踩坑记录版) 此篇仅为踩坑记录,并未成功更换高速镜像源,实际解决方法见文末跳转链接。 1.自身源镜像 自身镜像源创建Vue项目下载速度感人 2.更改镜像源 2.1 通过命令行配置 前提…

K8s容器部署maven项目

最近在整一整套devops自动化持续集成的东西,一开始就做好了踩坑的准备。 failed to verify certificate: x509: certificate signed by unknown authority 今天在执行kubectl get nodes的时候报的证书验证问题,看了一圈首次搭建k8s的都是高频出现的问题…

泰坦尼克号乘客生存情况预测分析2

泰坦尼克号乘客生存情况预测分析1 泰坦尼克号乘客生存情况预测分析2 泰坦尼克号乘客生存情况预测分析3 泰坦尼克号乘客生存情况预测分析总 背景描述 Titanic数据集在数据分析领域是十分经典的数据集,非常适合刚入门的小伙伴进行学习! 泰坦尼克号轮船的…

基于LM Studio + LLaMA3 建立本地化的ChatGPT

4月19日,Facebook母公司Meta重磅推出了Llama3。即便大家现在对于大厂和巨头频繁迭代AI模型的行为已经见怪不怪,Meta的Llama3仍旧显得与众不同,因为这是迄今最强大的开源AI模型。LLaMA模型通常采用了类似于GPT(由OpenAI开发&#x…

【Qt】error LNK2001: 无法解析的外部符号

参考:Qt/VS LNK2019/LNK2001:无法解析的外部符号_qt lnk2001无法解析的外部符号-CSDN博客 微软官方报错文档-链接器工具错误 LNK2019 __declspec error LNK2001: 无法解析的外部符号 "__declspec(dllimport) 原因 以这种为前缀的基本上跟库相关…

pnpm install报错 Value of “this“ must be of type URLSearchParams

执行pnpm install的时候就报错Value of “this” must be of type URLSearchParams 由于之前执行没有出现过这个问题,最近在使用vue3所以使用了高版本的node,怀疑是node版本的问题。 解决: 检查node版本 node -v当前使用的是20.11.0的 修改…

《ESP8266通信指南》7-Arduino 开发8266的环境配置与示例代码烧录

往期 《ESP8266通信指南》6-创建TCP服务器(AT指令)-CSDN博客 《ESP8266通信指南》5-TCP通信透传模式(AT指令)-CSDN博客 《ESP8266通信指南》4-以Client进行TCP通信(AT指令)-CSDN博客 《ESP8266通信指南》3-常用AT指令详解-826…

elasticsearch 常用语法汇总

文章目录 前言elasticsearch 常用语法汇总1. 创建索引2. 检索索引信息3. 删除索引4. 文档操作4.1. 对blog_new索引指定文档ID新增4.2. 对blog_new索引不指定文档ID新增,随机文档ID:4.3. 获取文档4.4. 更新文档4.5. 删除文档 5. 查询5.1. 匹配查询5.2. 范围查询5.3. …