Bert语言大模型基础

一、Bert整体模型架构

基础架构是transformer的encoder部分,bert使用多个encoder堆叠在一起。

主要分为三个部分:1、输入部分  2、注意力机制  3、前馈神经网络

bertbase使用12层encoder堆叠在一起,6个encoder堆叠在一起组成编码端,6个decoder堆叠在一起组成解码端。

对于Bert的encoder部分重点关注输入部分

对于transformer来说,输入包括两部分:

1、input embedding:做词的词向量,比如做词的初始化

2、positional encoding:位置编码,使用的是三角函数正余弦函数去代表他。

Bert中分为了三个部分:

input = token emb + segment emb + position emb

 二、Bert的输入部分

1、input

正常词汇: my dog is cute he likes play ## ing 

特殊词汇:CLS SEP

这两个存在是因为在Bert预训练时有NSP(Next Sentence Prediction)任务存在,这个任务是用于处理两个句子之间的关系

SEP主要是做句子间隔:之前的是一个句子,SEP之后的是另一个句子。

CLS 的输出向量接一个二分类器,去做一个二分类任务(误区:CLS向量输出不能代表整个句子的语义信息) 

2、输入的内容

token embeddings        

对input中的所有词汇,包括正常词汇和特殊词汇,都去做正常的embedding比如随机初始化 

segment embeddings 

由于处理的是两个句子,所以需要对两个句子进行区分,第一个句子使用0来表示,第二个句子使用1来表示;并使用不同的符号来表示。

position embeddings

Bert的输入部分与transformer输入部分很大的不同点:

transformer中使用正余弦函数

Bert使用随机初始化,然后让模型自己去学习出来,整个512的长度,让模型自己去学习出来每个位置应该是什么样子的

三、预训练:MLM+NSP 

MLM(Masked Language Modeling)是指掩码语言模型。这是一种预训练语言模型的方法,旨在通过预测被掩码(或称为遮盖、掩盖)的单词来学习语言的上下文表示。

NSP(Next Sentence Prediction)是一个特定的预训练任务,旨在预测两个句子在原始文本中是否连续出现。

BERT 在预训练的时候使用的是大量的无标注的语料,所以在设计的时候,一定会考虑无监督来做。

无监督目标函数

AR: auto regressive,自回归模型:只能考虑单侧的信息,典型的就是GPT

AE:auto encoding,自编码模型:从损坏的输入数据中预测重建原始数据。可以使用上下文信息。

MLM模型 

1、基本原理

打破了文本,让他文本重建。模型在周围的文本中学习各种信息,来让预测出来的文本无限接近原本的词汇。就像是让模型根据上下文去做完形填空

2、缺点

mask 和mask之间是独立的,但是在实际中不一定是独立的,而是有关系的。

3、模型概率

随机 mask 15% 的单词    ==》  10%替换成其他 10%原封不动 80%替换成马赛克 

模型代码

NSP任务

最重要的一个点是理解样本的构造模式。

NSP样本如下:

1、从训练语料库中取出两个连续的段落作为正样本。两个连续的段落来自同一个文档,并且属于同一个主题,两个连续的段落顺序也不会颠倒。

2、从不同的文档中随机创建一对段落作为负样本。不同的主题进行选取文档。

缺点:主题预测(判断两个段落是不是来自同一个文档)和连贯性预测(判断两个段落是不是顺序关系)合并为一个单项任务。

四、如何在下游任务中微调Bert

分为四部分:

(a):句子对分类任务:文本匹配的任务,把两个句子拼接起来去看是否相似,CLS输出0为相似,输出1为不相似

(b):单个句子分类任务:使用CLS的输出去做一个微调,做一个二分类或者多分类

(c):问答任务

(d):序列标注任务:将所有的token输出做一个softmaax去看属于实体中的哪一个

五、如何提升Bert在下游任务中的表现 

一般都是使用大公司已经训练好的Bert模型(获取谷歌中文Bert),再根据自己的数据进行微调。

将步骤细化为四步:

1、在大量通用语料上训练一个language model (pretrain)----这一步一般不用做,直接使用中文谷歌Bert即可。

2、在相同领域上继续训练language model (domain transfer 领域自适应)

3、在任务相关的小数据上继续训练language model (task transfer)

4、在任务相关数据上做具体任务(fine - tune 微调)

先 domain transfer 再进行 task transfer 最后 fine-tune 性能效果是最好的。

第二步中:如何在相同领域数据中进行 further pre - training 

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

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

参数设置

或者进行数据增强、自蒸馏、外部知识的融入。

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

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

相关文章

Spring Boot中判断轨迹数据是否经过设置的打卡点,且在PGSQL中把点拼接成线,判断某个点是否在线上或在线的50米范围内

问题描述 轨迹数据判断是否经过打卡点,轨迹数据太多,循环判断的话非常消耗内存。解决办法只需要把所有轨迹数据点拼成了一条线,然后只需要循环打卡点即可,打卡点不多,一般不会超过100个,如果多的话&#x…

R可视化:桑基图展示数据层流动

介绍 以桑基图形式展示数据分布情况 加载R包 knitr::opts_chunk$set(message = FALSE, warning = FALSE) library(tidyverse) library(ggalluvial)# rm(list = ls()) options(stringsAsFactors = F) options(future.globals.maxSize = 10000 * 1024^2) 导入数据 metadata…

【计算机毕业设计】大学校园图书角管理系统——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

【Flutter】One or more plugins require a higher Android SDK version.

问题描述 项目里多个组件需要更高版本的Android SDK One or more plugins require a higher Android SDK version.解决方案: 报错提示requires Android SDK version 34 按提示修改android项目app里build.gradle的compileSdkVersion 为34 android {compileSdkVe…

node.js-包

包的概念 包:将模块,代码,其他资料聚合成的一个文件夹 包分类: 1.项目包:主要用于编写项目和业务逻辑的文件夹 2.软件包:封装工具和方法供开发者使用(一般使用npm管理) 1&#…

mysql的DDL语言和DML语言

DDL语言: 操作数据库,表等(创建,删除,修改); 操作数据库 1:查询 show databases 2:创建 创建数据库 create database 数据库名称 创建数据库,如果不存在就创建 crea…

MySQL—一条查询SQL语句的完整执行流程

MySQL—一条查询SQL语句的完整执行流程 表结构和数据如下: 我们分析的sql语句如下: select tb_id,tb_name,tb_address from tb_user where tb_id 66;大体来说,MySQL可以分为Server层和存储引擎层两部分: Server层 包括:连接器、查询缓存、…

使用Java实现动态心形图案

一、引言 在计算机图形学中,动态图案的生成和显示一直是一个令人兴奋的话题。心形图案作为情感表达的一种常见方式,在编程领域也颇受欢迎。本文将介绍如何使用Java编程语言实现动态心形图案,并附上相应的代码片段。 二、心形曲线的数学表达…

如何使用 ArcGIS Pro 快速为黑白地图配色

对于某些拍摄时间比较久远的地图,限于当时的技术水平只有黑白的地图,针对这种情况,我们可以通过现在的地图为该地图进行配色,这里为大家讲解一下操作方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微…

使用大卫的k8s监控面板(k8s+prometheus+grafana)

问题 书接上回,对EKS(AWS云k8s)启用AMP(AWS云Prometheus)监控AMG(AWS云 grafana),上次我们只是配通了EKSAMPAMG的监控路径。这次使用一位大卫老师的grafana的面板,具体地址如下: ht…

汽车IVI中控开发入门及进阶(十五):AUTOSAR

前言: 随着汽车四化的进行,汽车电子系统standard标准化和coperation互操作性变得重要, AUTOSAR(AUTomotive Open System Architecture 汽车开放系统架构)框架已成为汽车行业的基础支柱。 AUTOSAR始自2000年,当时认识到标准化是有必要

Redis入门到通关之Redis数据结构-Set篇

文章目录 ☃️概述☃️数据结构☃️源码☃️其他 🌈 欢迎莅临我的个人主页👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介: 我是请回答1024,一名Java领域深耕多年…

解读币安Megadrop:如何参加第一期BounceBit活动?

币安推出新的代币发行平台 Megadrop,第一期为 BounceBit。 跟 launchpool 相比, 主要不同是 1)锁仓 bnb 有收益的倍数加成 2)做任务有收益加成。 我认为核心目的有两个: 1)更多收益给 BNB 长期持有者&am…

jenkins修改全局安全配置之后登录错误

教训(流泪) 事情是这样的,第一次我需要用单点登录集成jenkins,jenkins可以通过插件的方式支持cas协议,我当时也不很懂,经过我学网上的一顿乱配置,jenkis上不去了,虽然这是公司本地环…

大数据——Zookeeper ZBA协议(四)

Zookeeper ZAB协议 概述 ZAB(Zookeeper Automic Broadcast)是一套专门为Zookeeper设计的用于进行原子广播和崩溃恢复的协议ZAB协议主要包含了两个功能 原子广播:保证数据一致性崩溃恢复:保证集群的高可用 ZAB协议本身是基于2PC算法来进行的设计&#…

记一次 Vscode + Latex 正向/反向搜索忽然失效

遥望大半个月前,完成论文撰写后,这些天虽然多次打开项目,但我真的一个字都没动过,今天想着开始着手修改一下,打开项目发现正向/反向搜索忽然失效了,感觉浑身有蚂蚁在爬,思索再三后找到问题&…

【数学归纳法 反证法】菲蜀定理

裴蜀定理(或贝祖定理,Bzout’s identity)得名于法国数学家艾蒂安裴蜀,说明了对任何整数a、b和它们的最大公约 数d,关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且&…

[测试]ChaosBlade: 丢包、延迟、断网、磁盘、cpu占用、内存占用等资源耗尽故障注入利器--编辑中

目录 ChaosBlade是什么? ChaosBlade可以制造哪些工况/故障? 使用文档 git仓库:chaosblade/README_CN.md at master chaosblade-io/chaosblade GitHub ChaosBlade是什么? ChaosBlade: 一个简单易用且功能强大的混沌实验实施工具 ChaosBlade是阿里巴巴开源的一款遵循混…

[图解]软件开发中的糊涂用语-04-为什么要追究糊涂用语

0 00:00:00,030 --> 00:00:05,620 今天呢,我们来说一个为什么要追究糊涂用语的问题 1 00:00:06,310 --> 00:00:06,548 2 00:00:06,548 --> 00:00:11,077 大家知道我们前些天都发了好几个视频 3 00:00:11,077 --> 00:00:13,461 追究这个糊涂用语 4 00…

如何搭建一个vue2组件库(king-ui-pro)

文章引用图片无法查看,直接查看原文 感兴趣的可以关注或订阅下这个系列,后续会陆续将相关的组件与公共方法进行分享 目前已经完成了的组件有 多行省略pro版,不是简单的多行省略效果 公共方法: 1、图片预览,知乎的图…