百面Bert

Q1. Bert与Transformer有什么关系

Bert是基于Transformer架构中的Encoder进行搭建的。
具体来说,Bert的核心组件是几个Encoder layer的堆叠。Encoder layer中,也是两个子层,分别是注意力层和intermediate层(Bert中的叫法,实际就是前馈层)。

注意力层中,有一点不同的是,当Q和K计算了相似度之后,要和一个可训练的position embedding相加。Transformer中的Position embedding是不可训练的。这也导致Bert处理的序列长度是有限的,不能超过训练时的最大长度。
在intermediate层中,是一个线性层+激活函数+输出层。这里的激活函数是GELU激活函数,⾼斯误差线性单元激活函数。

Q2. Bert采用了什么预训练+微调的范式

从2018年的ELMo开始,预训练+微调的范式开始走入NLP领域。ELMo是基于双向的LSTM,在训练数据进行预训练,在下游任务进行微调。
Bert也采用了该范式,一是将模型结构换为了Transformer,二是采用了新的预训练任务。 因为传统的LM预训练,是在无监督数据上进行,即对一段无标注的文本,采用上文预测下文的方式,这是单向建模。虽然有Position embedding,但是模型仍然不能拟合双向的语义关系。

  1. MLM(Masked Language Modeling): 随机对句子中15%的token进行遮蔽,在训练时预测这些被遮蔽的token,即“完形填空”,这样模型就可以学习到双向的语义。
    但是这里有一个问题,Bert在微调时,并没有Mask过程,因此预训练和微调的不一致会影响模型的表现。因此15%的token中,每个token有80%进行遮蔽,10%被随机替换为其他token,10%保持不变。这里保持不变就意味和下游微调任务对齐,随机替换则是希望模型不只关注被预测的token,也要关注其他token,进而对整个句子进行建模。
  2. NSP(Next Sentence Prediction):下一个句子预测,希望模型在句子级别进行建模,完成问答匹配、自然语言推理等任务。核心任务是判断一个句子对是否是连续的上下文。这样的训练语料可以从文本中摘取,并通过随机替换的方式获取负样本。

Input: “I love you”
“Because you are beauty”
Output:“1”

Q3. 下游任务微调

所谓微调,其实和训练时更新模型参数的策略⼀致,只不过在特定的任务、更少的训练数据、更⼩。
的 batch_size 上进⾏训练,更新参数的幅度更⼩。

BERT 设计了更通⽤的输⼊和输出层来适配多任务下的迁移学习。对每⼀个输⼊的⽂本序列,BERT 会
在其⾸部加⼊⼀个特殊 token 。在后续编码中,该 token 代表的即是整句的状态,也就是句级的语义表
征。在进⾏ NSP 预训练时,就使⽤了该 token 对应的特征向量来作为最后分类器的输⼊。

Q4. 预训练任务都有效吗

Bert的变体, 由Facebook开发的RoBERTa,对此进行实验,发现NSP任务并不一定有效,因为其太简单。甚至会影响模型的性能。因此后续去掉了该任务。
Bert的变体,ALBERT,也认为NSP过于简单,不过并没有直接去掉该任务,而是对其进行优化。正样本为连续的两个句子,组成一个句子对。负样本是将正样本中的两个句子先后顺序颠倒。

输⼊:
Sentence A:I love you.
Sentence B: Because you are wonderful.
输出:
1(正样本)
输⼊:
Sentence A:Because you are wonderful.
Sentence B: I love you.
输出:
0(负样本)

Q5. Mask具体是怎么做的

Bert中,是在数据预处理阶段进行Mask,也就是在训练时,Masked的位置已经确定,因为Bert训练了40epoch,其每10个epoch使用一组masked的结果,这样可以使训练数据更丰富。
在后续的变体中,广泛采用了训练时Mask的做法,实验表明,这样做会带来微弱的提升,但是因为这样的工程实验更简洁。

Q6. Tokenizer编码策略

RoBERTa、BERT 和 Transformer ⼀样,都使⽤了 BPE 作为 Tokenizer 的编码策略。BPE,即 Byte Pair
Encoding,字节对编码,是指以⼦词对作为分词的单位。例如,对“Hello World”这句话,可能会切分为“Hel,lo,
Wor,ld”四个⼦词对。⽽对于以字为基本单位的中⽂,⼀般会按照 字节编码进⾏切分。例如,在 UTF-8 编码中,
“我”会被编码为“E68891”,那么在 BPE 中可能就会切分成“E68”,“891”两个字词对。

一般来说,词表越大,性能越好,但是这也会带来embedding参数的增加,因为embedding表的shape为(vocab_size,hidden_size)

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

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

相关文章

Docker Compose与私有仓库部署

目录 一. Docker 重启策略 二. Docker Compose工具的应用 1. 什么是 Docker compose 2. Docker compose 的安装 3. 编辑文件格式及编写注意事项 4. docker-compose的基本用法 三. Harbor私有仓库 1. 什么是Harbor 2. Harbor 的优势 3. Harbor 的构成 四. 部署Harbor…

数字隔离器,如何扛起现代智能家电的电气安全“大旗”

随着现代社会生活节奏的不断加速,人们对于属于自己的休闲时间愈发珍视,而智能家居作为提升人类居家幸福感与舒适度的现代化产物,不仅能有效满足人们对高品质生活的追求,还能推动产业升级与经济增长,引导智能家电设备从…

mybatis3调用瀚高procedure报错(APP)

文章目录 环境文档用途详细信息 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5 文档用途 mybatis3调用瀚高procedure报错(错误信息:调用过程请使用CALL)的解决方案。 详细信息 客户项目中使用…

96道Docker 容器高频题整理(附答案背诵版)

简述什么是 Docker 容器? Docker容器是一个开源的应用容器引擎,它让开发者可以将他们的应用以及依赖包打包到一个可移植的容器中,然后发布到任何安装了Docker引擎的服务器上,包括流行的Linux机器、Windows机器等。Docker容器利用…

成都芯谷金融中心·文化科技园打造文化科技高地

成都芯谷金融中心正式启动运营,标志着双流区集成电路产业生态圈的关键拼图落位。该项目以"文化科技金融"融合发展为核心理念,旨在构筑服务区域实体经济的创新引擎。 核心战略定位与区域价值 产业赋能枢纽:深度聚焦集成电路、新型…

IntelliJ IDEA 加速优化指南

IntelliJ IDEA 加速优化指南 IntelliJ IDEA 是一款功能强大的 IDE,但随着项目规模增大和长期使用,可能会出现性能下降的情况。以下是一些有效的加速优化方法: 1. 基础配置优化 内存分配调整 修改 idea.vmoptions 文件 (位置:H…

基于YOLO的智能车辆检测与记录系统

基于YOLO的智能车辆检测与记录系统 摘要 本报告总结了智能车辆检测系统的开发工作,主要包括车辆数据标注、YOLO模型训练及QT交互系统搭建三部分。通过使用专业标注工具完成车辆目标数据集的标注与预处理,基于YOLO模型构建车辆检测算法并优化训练流程&a…

网络调试的艺术:利用浏览器Network工具优化你的网站

🧭 General(通用信息) General 部分通常包含请求的基本信息,如请求方法、URL、协议版本等 字段名称描述常见值示例Request URL请求的完整地址(包括协议、域名、路径、查询参数)https://example.com/api/d…

Mongodb数据库应用

目录 什么是mongodb 主要特点 MongoDB 概念解析 完整术语列表 MongoDB 安装 MongoDB Shell 安装 MongoDB Shell 验证 MongoDB Shell 数据库管理 查看数据库列表 创建数据库 实例 删除数据库 实例 默认数据库 系统内置数据库 集合管理 查看集合 创建集合 实…

以太网基础与 VLAN 配置实验

以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现 LAN 互连虽然可以解决冲突严重的问题,但仍然不…

开源流程引擎Camunda简介

目录 简单介绍 主要组件与名词介绍 常见名词解释 核心组件介绍 一些思考 与前端的关系 前端逻辑的简化 后端接口的专注 流程引擎的控制作用 数据和状态的管理 监控和管理的集中化 参考资料 简单介绍 Camunda的本质是可以独立运行的一套流程引擎,流程引擎…

从面试题出发,如何设计消息队列

一、引言 在 Java 开发面试的战场上,消息队列相关问题一直是高频考点。面试官们常常抛出这样的问题:“如果让你设计一个消息队列,你会怎么做?” 这可不是在故意刁难,背后有着深层次的考察意图。​ 从实际场景来看&am…

卡萨帝发布AI深度科技:实现从守护生活到守护文明的升级

2025年6月25日,以“AI致远 爱不凡”为主题的卡萨帝思享荟于重庆科学会堂启幕。活动现场,卡萨帝发布“AI深度科技”。同时,搭载AI深度科技的“AI鉴赏家套系”同步上市。 AI浪潮下,卡萨帝品牌不断升级,从“高端家电领导…

FastAPI + PyMySQL 报错:“dict can not be used as parameter”的原因及解决方案

❌ FastAPI PyMySQL 报错 “dict can not be used as parameter” 问题及解决方案 最近在开发一个基于 FastAPI 的碳足迹因子智能匹配系统时,后端保存接口数据到 MySQL 时遇到了如下错误: ❌ 解析失败: dict can not be used as parameter 一、问题背景…

解决 “docker-compose: command not found“ 错误

解决 “docker-compose: command not found” 错误 在 CentOS 7 上看到这个错误,说明系统中未安装 docker-compose。以下是完整的安装和配置步骤: 一、安装 Docker Compose 1. 确保已安装 Docker # 检查 Docker 是否安装 docker --version# 如果未安…

Android11 深休后系统定时唤醒导致网络请求服务器过载

硬件平台:QCS6125 软件平台:Android11 问题:每天的7:00和22:00 服务器会突然收到批量设备的网络请求,导致服务器过载。 通过系统的logcat日志发现了系统在休眠后,每天会有22:00、7:00的唤醒,从而导致这个时…

部署网站需求全满足:Websoft9 多应用托管一站式方案解析

在数字化浪潮中,搭建专业网站已成为企业触达客户的核心通道。然而,从服务器选型到软件环境配置,传统建站模式往往让技术门槛成为中小企业的 “拦路虎”。Websoft9 多应用托管平台通过深度优化的镜像技术,重新定义了 WordPress 建站…

Spring Boot 启动优化实践

本文系统性分析并优化了一个Spring Boot项目启动耗时高达 280 秒的问题。通过识别瓶颈、优化分库分表加载逻辑、异步初始化耗时任务等手段,最终将启动耗时缩短至 159 秒,提升近 50%。文章涵盖启动流程分析、性能热点识别、异步初始化设计等关键技术细节&…

Jenkins执行Jenkinsfile报错

遇到部署的步骤时传输文件到其他服务器,文件传上去了,但是命令都没有执行成功。 写法: 报错了:ERROR:Exception when publishing,exception message [Exec exit status not zero.Status [1]] 原因是因为:cd 引用了环…

Modbus TCP转Profibus DP网接APM810/MCE安科瑞多功能电表通讯案例

Modbus TCP转Profibus DP网接APM810/MCE安科瑞多功能电表通讯案例 在工业自动化和电力监控领域,Modbus TCP与Profibus DP是两种常见的通讯协议,它们各自有着广泛的应用场景和优势。而当需要将这两者进行连接,以实现不同设备间的数据传输和信…