Bert学习笔记(简单入门版)

news2024/11/19 15:27:13

目 录

一、基础架构

二、输入部分

三、预训练:MLM+NSP

3.1 MLM:掩码语言模型

3.1.1 mask模型缺点

3.1.2 mask的概率问题

3.1.3 mask代码实践

3.2 NSP

四、如何微调Bert

五、如何提升BERT下游任务表现

5.1 一般做法

5.2 如何在相同领域数据中进行further pre-training

5.3 参数设置Trick

六、如何在脱敏数据中使用Bert等预训练模型


一、基础架构

基础架构为Transformer的Encoder:
具体解释可参考简单易懂的Transformer学习笔记_十七季的博客-CSDN博客

Base bert -12层Encoder堆叠。
 

其中位置编码部分与Trm的positional encoding不同,具体在下面进行解释。

二、输入部分

Input=token \space emb +segment \space emb+position \space emb

CLS向量不能代表整个句子的语义信息

区分句子:上图中第一个句子E_A=0, 第二个句子E_B=1

位置信息:TRM正余弦;Bert随机初始化,模型自学习

三、预训练:MLM+NSP

3.1 MLM:掩码语言模型

没有标签,无监督。

AR:自回归模型,只能考虑单侧信息;GPT
AE:自编码模型,从损坏的输入数据中预测重建原始数据,可以使用上下文信息;Bert

Eg:

3.1.1 mask模型缺点
 

认为两个mask之间是独立的(但实际未必独立)

3.1.2 mask的概率问题
 

3.1.3 mask代码实践

3.2 NSP

NSP样本如下:

  1. 从训练语料库中取出两个连续的段落作为正样本

  2. 从不同的文档中随机创建一对段落作为负样本

缺点:

主题预测(是否属于同一个文档)和连贯性预测合并为一个单项任务

四、如何微调Bert

对输出Softmax

五、如何提升BERT下游任务表现

5.1 一般做法

1.获取谷歌中文Bert

2.基于任务数据进行微调

以微博文本情感分析为例:

  1. 在大量通用语料上训练一个LM(Pretrain);——中文谷歌BERT

  2. 在相同领域上继续训练LM(Domain transfer);——在大量微博文本上继续训练这个BERT

  3. 在任务相关的小数据上继续训训练LM(Task transfer); ——在微博情感文本上(有的文本不属于情感分析的范畴)

  4. 在任务相关数据上做具体任务(Fine-tune)。-

先Domain transfer再进行Task transfer最后Fine-tune性能是最好的

5.2 如何在相同领域数据中进行further pre-training

  1. 动态mask: 每次epoch去训练的时候mask,而不是一直使用同一个。

  2. n-gram mask: 比如ERNIE和SpanBerti都是类似于做了实体词的mask

5.3 参数设置Trick

Batch size:16,32——影响不太大
earning rate(Adam):5e^{-5},3e^{-5},2e^{-5}——尽可能小一点避免灾难性遗忘
Number of epochs:3,4
Weighted decay修改后的adam,使用warmup, 搭配线性衰减

数据增强/自蒸馏/外部知识的融入

六、如何在脱敏数据中使用Bert等预训练模型

对于脱敏语料使用BERT,一般可以分为两种:

  1. 直接从零开始基于语料训练一个新的BERT出来使用;

  2. 按照词频,把脱敏数字对照到中文或者其他语言【假如我们使用中文】,使用 中文BERT做初始化,然后基于新的中文语料训练BERT。

参考资料
BERT从零详细解读,看不懂来打我_哔哩哔哩_bilibili

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

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

相关文章

C_11微机原理

一、单项选择题(本大题共 15 小题,每小题 3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。) .EXE 文件产生在()之后。 A.汇编 B. 编辑 C.用软件转换 D.连接 2,十进制-61的8位二进…

Dynamsoft Barcode Reader新框架将医疗视觉提升到新水平

Dynamsoft Vision 框架将医疗保健领域的计算机视觉提升到新的水平 引入图像捕获、内容理解、结果解析和交互式工作流程的聚合 SDK,以简化复杂的流程。 温哥华 – 2023 年 7 月 17 日 – Dynamsoft™ 发布了 Dynamsoft Barcode Reader SDK C Edition v10.0.0。更新…

Redis篇---第七篇

系列文章目录 文章目录 系列文章目录前言一、是否使用过 Redis Cluster 集群,集群的原理是什么?二、 Redis Cluster 集群方案什么情况下会导致整个集群不可用?三、Redis 集群架构模式有哪几种?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…

【算法挨揍日记】day31——673. 最长递增子序列的个数、646. 最长数对链

673. 最长递增子序列的个数 673. 最长递增子序列的个数 题目解析: 给定一个未排序的整数数组 nums , 返回最长递增子序列的个数 。 注意 这个数列必须是 严格 递增的。 解题思路: 算法思路: 1. 状态表⽰: 先尝试…

后端技术知识点内容-全部内容-面试宝典-后端面试知识点

文章目录 -2 flink-1 linux of viewlinux查看占用cup最高的10个进程的命令; 〇、分布式锁 & 分布式事务0-1分布式锁--包含CAP理论模型概述分布式锁:分布式锁应该具备哪些条件:分布式锁的业务场景: 分布式锁的实现方式有&#…

【linux】补充:高效处理文本的命令学习(tr、uniq、sort、cut)

目录 一、tr——转换、压缩、删除 1、tr -s “分隔符” (指定压缩连续的内容) 2、tr -d 想要删除的东西 ​编辑 3、tr -t 内容1 内容2 将内容1全部转换为内容2(字符数需要一一对应) 二、cut——快速剪裁命令 三、uniq——去…

【算法挨揍日记】day30——300. 最长递增子序列、376. 摆动序列

300. 最长递增子序列 300. 最长递增子序列 题目解析: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如&#…

《2020年最新面经》—字节跳动Java社招面试题

文章目录 前言:一面:01、Java基础知识答疑,简单概述一下?02、倒排索引了解吗?使用Java语言怎么实现倒排?03、详细讲解一下redis里面的哈希表,常用的Redis哈希表命名有哪些,举例说明其…

酷柚易汛ERP - 盘点操作指南

1、应用场景 盘点功能是定期或临期对库存货物进行清点,使账面记录与实际库存相符合,从而随时掌握货物盈亏状态。 2、主要操作 2.1 盘点商品查询 打开【仓库】-【盘点】新增盘点单,筛选需要盘点的日期范围、库存及相应商品 2.2 录入盘点数…

MongoDB之索引和聚合

文章目录 一、索引1、说明2、原理3、相关操作3.1、创建索引3.2、查看集合索引3.3、查看集合索引大小3.4、删除集合所有索引(不包含_id索引)3.5、删除集合指定索引 4、复合索引 二、聚合1、说明2、使用 总结 一、索引 1、说明 索引通常能够极大的提高查…

小美的树上染色

美团2024届秋招笔试第一场编程真题 先提一个小知识:题目中凡是提到树结构都要使用图的存储方式,只有二叉树例外。 分析:在树结构中,孩子和父节点是相邻节点,而父节点可能有多个孩子节点。在染色的过程中,…

Ubuntu20.04 安装微信 【wine方式安装】推荐

安装步骤: 第一步:安装 WineHQ 安装包 先安装wine,根据官网指导安装即可。下载 - WineHQ Wikihttps://wiki.winehq.org/Download_zhcn 如果您之前安装过来自其他仓库的 Wine 安装包,请在尝试安装 WineHQ 安装包之前删除它及依赖它的所有安装包(如:wine-mono、wine-gec…

PostgreSQL 难搞的事系列 --- vacuum 的由来与PG16的命令的改进 (1)

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友…

《向量数据库指南》——什么是 向量数据库Milvus Cloud的Range Search?

Range Search 功能诞生于社区。 某天,一位做系统推荐的用户在社区提出了需求,希望 Milvus Cloud 能提供一个新功能,可以返回向量距离在一定范围之内的结果。而这不是个例,开发者在做相似性查询时,经常需要对结果做二次过滤。 为了帮助用户解决这一问题,Milvus Cl…

redis安装(Windows和linux)

如何实现Redis安装与使用的详细教程 Redis 简介 Redis是一个使用C语言编写的开源、高性能、非关系型的键值对存储数据库。它支持多种数据结构,包括字符串、列表、集合、有序集合、哈希表等。Redis的内存操作能力极强,其读写性能非常优秀,且…

英飞凌(Infineon)平台嵌入式开发基础

本篇文章介绍了基于英飞凌平台进行嵌入式开发的一些基础知识,首先介绍了涉及芯片的信息和常见的开发环境,把生硬的主体名称先分类并抛出来;然后着重介绍了英飞凌官网提供的开发资源,包括不限于开发环境,代码示例&#…

Spring学习②__IOC分析

目录 IOC控制反转IOCIOC理论案例IOC的思想(注入)IOC底层什么是 IOCIOC 底层原理 总结 IOC 控制反转IOC ①控制反转,把对象创建和对象之间的调用过程,交给Spring进行 ②使用IOC目的:为了耦合度降低 IOC理论案例 控制…

深度学习中对抗生成网络GAN背后的数学原理

引言 GAN的风暴席卷了整个深度学习圈子,任何任务似乎套上GAN的壳子,立马就变得高大上了起来。那么,GAN究竟是什么呢? GAN的主要应用目标: 生成式任务(生成、重建、超分辨率、风格迁移、补全、上采样等&a…

判断序列值是否单调递增 PandasSeries中的方法:is_monotonic_increasing

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断序列值是否单调递增 PandasSeries中的方法: is_monotonic_increasing 选择题 请问下列程序运行的的结果是: import pandas as pd s1 pd.Series([1, 2, 5]) prin…

linux如何使用Xshell远程连接

简介:本文的一切条件基于redhat的linux操作系统。 1、创建虚拟机: 如有需要,请转至【linux基础】在VMware上安装RHEL9详细教程_融社的博客-CSDN博客 (如若侵权,该篇立删) 2、使用命令查看网段信息 打…