自然语言处理里预训练模型——BERT
BERT,全称Bidirectional Encoder Representation from Transformers,是google在2018年提出的一个预训练语言模型,它的推出,一举刷新了当年多项NLP任务值的新高。前期我在零、自然语言处理开篇-CSDN博客 的符号向量化一文中简单介绍过其原理,今天我将更加详细的介绍下其工作流程。
零、BERT模型架构
当前的语言模型主要分为两种:
一种是自回归(Auto-Regressive)语言模型,Aotoregressive Lanuage Modeling,自回归语言模型:根据前面(或后面)出现的token来预测当前时刻的token,代表模型有ELMO、GTP(transformer中的decode解码器结构)(等,它一般采用生成类任务做预训练,类似于我们写一篇文章,自回归语言模型更擅长做生成类任务(Natural Language Generating,NLG),例如文章生成等。
另一种是自编码(Auto-Encoding)语言模型,Autoencoding Language Modeling,自编码语言模型:通过上下文信息来预测当前被mask的token,代表有BERT、Word2Vec(CBOW)等.它使用MLM做预训练任务,自编码预训模型往往更擅长做判别类任务,或者叫做自然语言理解(Natural Language Understanding,NLU)任务,例如文本分类,NER等。训练过程类似于做完形填空,下面会介绍到。
BERT模型采用的是transformer里的encode编码器的结构,它的模型总体结构如下:

每一个transformer encode结构如下:

一、BERT的训练流程
1.0 BERT的输入
BERT的输入是一个长度为n的输入序列(n表示词组个数,token数),一般是512,通常包含下面三个部分:
(1)Token Embeddings:采用wordpiece对文本进行切割成一个个子词,经过embedding后每一个子词输出为768维的向量 (1, n, 768)。此层的tokenization使用的方法是WordPiece tokenization,将词转换为one hot编码,再经过embedding层,转换成768维向量。
(2)Segment Embeddings:切割句子用的(1, n, 768),相比transformer,这个是新增的。
(3)Position Embeddings:用于标记词在句子中的位置,(1, n, 768),使用的是cos和sin的固定位置标记法。
整个输入是一个1*512*768的张量。

对于输入的句子,将进行以下两个预训练任务。
1.1 BERT主要包含两个训练任务
1、 随机掩码训练任务:
(1)随机地将一句话里的某个单词替换成<mask>,输入到N层的transformer encode编码器里。
(2)将<mask>的隐层状态输入到softmax中进行预测,输出预测的单词结果。
(3)将预测得到的单词结果和原始数据中单词计算交叉熵,更新参数。

通过上面3步,可以学习到“研究生”这个单词单独的语义,又能学习到它的上下文的语义关系。是不是很像完形填空~。
2、下一个句子预测任务
这个任务主要学习句子间的关系,它的训练过程如下:
(1)将数据集中连续两个句子A和B进行拼接(负例的构建就是随机组合句子就行)。
(2)在拼接的句子前端加入<cls>标签,代表句子是否连续,在两个句子间加入<seg>标签,输入到N层的transformer encode里。
(3)将<cls>的隐层状态输入softmax进行预测。
(4)将预测结果和实际结果计算交叉熵,更新参数。

二、BERT应用时的微调方法
BERT微调时,采用少量的标注数据,进行少量轮次的迭代,即可将模型微调为一个特定领域的任务模型,比如句子相似性匹配,句子分类,问答对匹配、序列标注等。

相关文章:
自然语言处理里预训练模型——BERT
BERT,全称Bidirectional Encoder Representation from Transformers,是google在2018年提出的一个预训练语言模型,它的推出,一举刷新了当年多项NLP任务值的新高。前期我在零、自然语言处理开篇-CSDN博客 的符号向量化一文中简单介绍…...
2024年信息技术与计算机工程国际学术会议(ICITCEI 2024)
2024年信息技术与计算机工程国际学术会议(ICITCEI 2024) 2024 International Conference on Information Technology and Computer Engineering ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 大会主题: 信息系统和技术…...
渗透测试修复笔记 - 02 Docker Remote API漏洞
需要保持 Docker 服务运行并且不希望影响其他使用 Docker 部署的服务,同时需要禁止外网访问特定的 Docker API 端口(2375):通过一下命令来看漏洞 docker -H tcp://ip地址:2375 images修改Docker配置以限制访问 修改daemon.json配…...
Spring(创建对象的方式3个)
3、Spring IOC创建对象方式一: 01、使用无参构造方法 //id:唯一标识 class:当前创建的对象的全局限定名 <bean id"us1" class"com.msb.pojo.User"/> 02、使用有参构造 <bean id"us2&…...
【GPT-SOVITS-02】GPT模块解析
说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…...
6个选品建议,改善你的亚马逊现状。
一、市场热点与需求调研 深入研究当前市场趋势,了解消费者需求的变化。使用亚马逊的销售数据、评价、问答等功能,以及第三方市场研究工具,比如店雷达,分析潜在热销产品的特点。注意季节性需求,提前布局相关选品&#…...
SQL中的SYSDATE函数
前言 在SQL语言中,SYSDATE 是一个非常实用且常见的系统内置函数,尤其在Oracle和MySQL数据库中广泛使用。它主要用来获取服务器当前的日期和时间,这对于进行实时数据记录、审计跟踪、有效期计算等场景特别有用。本文将详细解析SYSDATE函数的使…...
Rust的async和await支持多线程运行吗?
Rust的async和await的异步机制并不是仅在单线程下实现的,它们可以在多线程环境中工作,从而利用多核CPU的并行计算优势。然而,异步编程的主要目标之一是避免不必要的线程切换开销,因此,在单线程上下文中,asy…...
P2676 [USACO07DEC] Bookshelf B
[USACO07DEC] Bookshelf B 题目描述 Farmer John 最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了。现在,只有书架的顶上还留有一点空间。 所有 N ( 1 ≤ N ≤ 20 , 000 ) N(1 \le N…...
【数学】第十三届蓝桥杯省赛C++ A组/研究生组《爬树的甲壳虫》(C++)
【题目描述】 有一只甲壳虫想要爬上一棵高度为 n 的树,它一开始位于树根,高度为 0,当它尝试从高度 i−1 爬到高度为 i 的位置时有 Pi 的概率会掉回树根,求它从树根爬到树顶时,经过的时间的期望值是多少。 【输入格式…...
Java毕业设计 基于springboot vue招聘网站 招聘系统
Java毕业设计 基于springboot vue招聘网站 招聘系统 springboot vue招聘网站 招聘系统 功能介绍 用户:登录 个人信息 简历信息 查看招聘信息 企业:登录 企业信息管理 发布招聘信息 职位招聘信息管理 简历信息管理 管理员:注册 登录 管理员…...
Leetcode 1. 两数之和
心路历程: 很简单的题,双层暴力就可以,用双指针的话快一点。暴力时间复杂度O( n 2 n^2 n2),双指针时间复杂度O(nlogn) O(n) O(n) O(nlogn)。 注意的点: 1、题目需要返回原数组的索引,所以排序后还需要…...
【elasticsearch实战】从零开始设计全站搜索引擎
业务需求 最近需要一个全站搜索的功能,我们的站点的特点是数据多源,即有我们本地数据库,也包含了第三方数据源,我们的数据类型除了网页,还包括了各种类型的文档,例如:doc、pdf、excel、ppt等格…...
基于tcp协议的网络通信(基础echo版.多进程版,多线程版,线程池版),telnet命令
目录 基础版 思路 辅助函数 服务端 代码 运行情况 -- telnet ip 端口号 传输的数据为什么没有转换格式 客户端 思路 代码 多进程版 引入 问题 解决 注意点 服务端 代码 运行情况 进程池版(简单介绍) 多线程版 引入 问题解决 注意点 服务端 代码 …...
Ubuntu20系统安装完后没有WIFI
Ubuntu20系统安装完后没有WIFI 查看后发现是缺少网卡,经过查询之后,发现是HRex39/rtl8852be 然后查询了Kernel版本 Check the Kernel Version in Linux $ uname -srm Linux 5.15.0-67-generic x86_64然后进行下载安装 Build(for kernel < 5.18) …...
计算机视觉——目标检测(R-CNN、Fast R-CNN、Faster R-CNN )
前言、相关知识 1.闭集和开集 开集:识别训练集不存在的样本类别。闭集:识别训练集已知的样本类别。 2.多模态信息融合 文本和图像,文本的语义信息映射成词向量,形成词典,嵌入到n维空间。 图片内容信息提取特征&…...
log4j2.xml配置文件不生效
问题 使用springboot配置log4j2,添加了依赖并排除默认的logging依赖,配置了log4j2.xml文件,放在scr目录下,运行可以在控制台输出日志,但不受配置文件影响 解决 配置文件log4j2.xml放在resources目录下生效...
QT信号与槽实现方式
1、第一种实现方式 在QT开发工具UI界面先拖入按钮,然后鼠标右键拖入按钮,点击选中槽,在页面选着需要的信号,然后OK,随即将会跳转到类的.cpp文件,(这种UI代码结合的方式,会自动去绑定…...
Yarn面试重点
文章目录 1. 简述Yarn集群的架构2. Yarn 的任务提交流程是怎样的?3. yarn的资源调度的三种模型 1. 简述Yarn集群的架构 YARN(Yet Another Resource Negotiator)是Hadoop 2.x引入的资源管理器,用于管理Hadoop集群中的资源和作业调…...
高速口光口通信
1.通过transceiver ip 设置好硬件连接配置 2.open example 用自己的模块替换掉tx和rx数据模块 3.大小端问题—— 4.配置gt收发器的rx的k码时候需要设置anybyte便于高效率接收。 5.开发数据产生模块和接收校验模块都需要使用TXUSRCLK2,但是TXUSRCLK线速度/内部数据位宽。——…...
小样本下分位数估计与置信区间构建实战指南
1. 项目概述:为什么小样本下的分位数估计如此重要?在机器学习项目的日常工作中,我们常常会面临一个尴尬的局面:模型训练好了,也跑出了几轮评估结果,比如准确率是92%,93%,91%…...
WechatDecrypt终极指南:3步解锁你的微信聊天记忆
WechatDecrypt终极指南:3步解锁你的微信聊天记忆 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 你是否曾经有过这样的经历?换了新手机,却发现珍贵的微信聊天记录无法完…...
机器学习模型评估避坑指南:过调优与数据泄露的识别与防范
1. 项目概述与核心问题界定在机器学习项目的落地过程中,超参数调优几乎是每个从业者都会经历的环节。我们花费大量时间,尝试各种搜索策略——从网格搜索到贝叶斯优化,目标很明确:让模型在验证集上的指标再好看那么一点点。然而&am…...
Arduino入门教程十三|自制模拟传感器(分压原理详解+光敏夜灯+constrain范围限制)
我整理了一套Arduino 零基础 从入门到高级 完整系统课程,包含视频讲解、全套源码、接线图纸、库文件、ESP32/ESP32-S3 摄像头 & 物联网实战项目,循序渐进,新手也能零基础吃透。需要系统学习可以查看我主页专属课程(零基础保姆级Arduino教程从入门到实战_在线视频教程-C…...
终极AI换脸指南:用roop-unleashed实现专业级人脸替换的完整教程
终极AI换脸指南:用roop-unleashed实现专业级人脸替换的完整教程 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 想要制作令人惊艳的AI换脸视频却…...
基于多保真度机器学习与飞秒激光的光子表面逆向设计实践
1. 项目概述与核心价值在光子学和先进制造领域,我们常常面临一个核心挑战:如何根据一个理想的光学性能目标,比如特定的光谱吸收或发射曲线,反向找到能够实现这一目标的精确物理结构或制造工艺参数。这就是逆向设计的魅力所在。传统…...
随机森林在天文大数据中的应用:高红移类星体高效筛选实战
1. 项目概述:用机器学习在星海中“捞针”在广袤的宇宙中寻找高红移类星体,就像是在一片无垠的星海里打捞一根特定的针。高红移类星体,作为宇宙早期最明亮的天体,是研究宇宙再电离时期、超大质量黑洞早期增长以及大尺度结构形成的绝…...
Seurat分析避坑指南:从PBMC3K实战出发,详解`resolution`、`dims`参数怎么调,结果才靠谱
Seurat单细胞分析实战:如何科学调整resolution与dims参数获得理想分群第一次看到自己单细胞数据的UMAP图时,那种兴奋感至今难忘。但随之而来的困惑也同样深刻——为什么我的细胞分群看起来总是不太对?要么是密密麻麻挤在一起分不开࿰…...
小红书视频下载终极指南:5分钟掌握免费无水印批量下载技巧
小红书视频下载终极指南:5分钟掌握免费无水印批量下载技巧 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接…...
8051单片机端口操作:输入缓冲器与锁存器的区别与应用
1. C51端口输入与锁存器读取的本质区别在8051单片机开发中,端口操作有个容易被忽视但至关重要的细节:当你执行端口读写指令时,处理器实际访问的可能是两个不同的物理寄存器。以P1端口为例:输入缓冲器(Port Input&#…...
