大语言模型-Bert-Bidirectional Encoder Representation from Transformers

一、背景信息:

Bert是2018年10月由Google AI研究院提出的一种预训练模型。
主要用于自然语言处理(NLP)任务,特别是机器阅读理、文本分类、序列标注等任务。
BERT的网络架构使用的是多层Transformer结构,有效的解决了长期依赖问题。

二、整体结构:

BERT由多个Transformer Encoder一层一层地堆叠起来。
BERT全名叫做Bidirectional Encoder Representation from Transformers,下图中用Trm表示Transformer中的Encoder模块。Encoder中在编码一个token的时候会同时利用了其上下文的token,即为Bidirectional双向的体现。

在这里插入图片描述

三、Bert 的输入

Bert 的输入向量,由x的三种向量求和而成,三种向量分别为x的词向量、句子分类向量、位置向量。
其中
词向量Token Embeddings,第一个词是[CLS]标志,通常会用在分类任务中;[SEP]标志分句符号,用于断开输入语料中的两个句子或者表示句子的结束。
句子分类向量Segment Embeddings,用来区别两种句子,有两种情况;问答等任务全部所有token全为0,其余任务第一句句所有token为0第二句所有为1。
位置向量Position Embeddings,这里的位置向量为可学习的绝对位置编码,优点是可以学习到不同位置的不同编码,而不是固定的编码。因为位置编码的维度是固定的,需要设定最大长度,不能预测超过长度的句子。
在这里插入图片描述

四、Bert训练

BERT的训练包含预训练fine-tune两个阶段。

Bert预训练:

Bert预训练(Pre-training)任务是由MLM和NSP两个自监督任务组成。

MLM:

MLM随机在输入语料上Mask掉一些词,并通过上下文预测该词。其中15%的WordPiece Token会被随机Mask掉。

  • 80%的时候会直接替换为[Mask]
  • 10%的时候将其替换为其它任意单词
  • 10%的时候会保留原始Token。
1、若句子中的某个Token 100%都会被mask掉,那么在fine-tuning的时候模型就会有一些没有见过的单词。
2、加入随机Token的原因是因为Transformer要保持对每个输入token的分布式表征。
3、因为一个单词被随机替换掉的概率只有15%*10% =1.5%,单词带来的负面影响可以忽略不计。
4、每次只预测15%的单词,因此模型收敛的比较慢。
# 优点:
# 10%的概率用任意词替换赋予Bert一定文本纠错能力;
# 10%的概率保留原始Token,缓解了finetune时与预训练时的输入不匹配。
# 缺点:
# Mask汉字割裂了连续汉字之间的相关性
NSP:

Next Sentence Prediction(NSP)任务判断句子B是否是句子A的下文。如果是的话输出’IsNext‘,否则输出’NotNext‘。

Bert的微调

基于Bert模型的微调应用近些年来,已经越来越丰富了,下面介绍三种具有代表性的简单版本的微调应用。当然如今的bert微调应用是不仅仅只有下面这零星的几个例子。

1、单文本分类

在需要进行分类的文本的开头和结尾分别加上CLS和SEP标记

[CLS] 文本 [SEP]

Bert模型输出的[CLS]标记的向量,表示整个文本序列的语义信息。
文本分类微调需要新增一个全连接层,将[CLS]标记的向量输入到全连接层,输出各类别的概率分布。

2、问答任务

从给定的上下文中找到问题的答案。输入包含上下文和问题两部分

[CLS] 上下文 [SEP] 问题 [SEP]

Bert模型的顶部添加两个分类层,分别用于预测答案的起始位置和终止位置。

3、信息抽取

对句子中语义连贯的词汇或短语逐个字的标注。
Bert模型的最后一层输出每个token的表示向量。通常在Bert模型顶部添加一个分类器,用于预测每个token是否是命名实体的token。例如:TPLinker

在这里插入图片描述

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

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

相关文章

如何用JavaScript实现视频观看时间追踪

在网页开发中,跟踪用户与多媒体内容(如视频)的互动是一项常见需求。无论是教育平台、数据分析,还是用户参与度统计,监控用户如何观看视频内容都能提供宝贵的见解。这篇文章将探索如何使用JavaScript实现视频播放时长的…

DC系列靶场---DC 2靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sV -p- -sC -T4 172.30.1.141 域名解析 echo 172.30.1.141 dc-2 >> /etc/hosts 目录枚举 gobuster dir -u http://172.30.1.141 -w work/lab/CTF/ATT_CK_01/SecLists-master/Discovery/Web-Content/big.txt -x .php,.rar,.html,.zip -t 20 -b…

【ELK】window下ELK的安装与部署

ELK的安装与部署 1. 下载2. 配置&启动2.1 elasticsarch2.1.1 生成证书2.1.2 生成秘钥2.1.3 将凭证迁移到指定目录2.1.4 改配置2.1.5 启动2.1.6 访问测试2.1.7 生成kibana账号 2.2 kibana2.2.1 改配置2.2.2 启动2.2.3 访问测试 2.3 logstash2.3.1 改配置2.3.2 启动 2.4 file…

ElMessage自动引入,样式缺失和ts esline 报错问题解决

一. 环境 "unplugin-auto-import": "^0.17.6", "vue": "^3.3.8", "vite": "^5.0.0", "typescript": "^5.2.2",二. ElMessage样式缺失问题. 以下有两种解决方法 方法一: 配置了自动引用后…

移动UI:运动风格具备什么特征,如何识别。

在移动UI设计中,具备以下特征可以归为运动风格: 1. 流畅的动画效果: 运动风格的UI设计通常会运用流畅的动画效果,例如过渡动画、元素的缓动效果等,以增强用户体验和吸引用户的注意力。 2. 动态的交互设计&#xff1a…

八股文之java基础

jdk9中对字符串进行了一个什么优化? jdk9之前 字符串的拼接通常都是使用进行拼接 但是的实现我们是基于stringbuilder进行的 这个过程通常比较低效 包含了创建stringbuilder对象 通过append方法去将stringbuilder对象进行拼接 最后使用tostring方法去转换成最终的…

python+onlyoffice+vue3项目实战20240722笔记,环境搭建和前后端基础代码

开发后端 先创建data目录,然后在data目录下创建一个test.docx测试文档。 后端代码: import json import req import api from api import middleware, PlainTextResponseasync def doc_callback(request):data = await api.req.get_json(request)print("callback ==…

PingCAP 王琦智:下一代 RAG,tidb.ai 使用知识图谱增强 RAG 能力

导读 随着 ChatGPT 的流行,LLMs(大语言模型)再次进入人们的视野。然而,在处理特定领域查询时,大模型生成的内容往往存在信息滞后和准确性不足的问题。如何让 RAG 和向量搜索技术在实际应用中更好地满足企业需求&#…

java之利用二维数组来计算年利润和每个季度的营业额

public class TwodimensionDemo2 {public static void main(String[] args) {//创建二维数组来存储数据int [][]yearArrArr{{22,66,44},{77,33,88},{25,45,65},{11,66,99}};int yearSum0;//遍历二维数组&#xff0c;得到每一个一维数组并求和for (int i 0; i < yearArrArr.…

Nginx 怎样处理请求的重试机制?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 Nginx 怎样处理请求的重试机制&#xff1f;一、为何需要重试机制&#xff1f;二、Nginx 中的重试机制原理三、Nginx 重试机制的配置参数四、Nginx 重试机制的实际…

新手小白的pytorch学习第十弹----多类别分类问题模型以及九、十弹的练习

目录 1 多类别分类模型1.1 创建数据1.2 创建模型1.3 模型传出的数据1.4 损失函数和优化器1.5 训练和测试1.6 衡量模型性能的指标 2 练习Exercise 之前我们已经学习了 二分类问题&#xff0c;二分类就像抛硬币正面和反面&#xff0c;只有两种情况。 这里我们要探讨一个 多类别…

LeetCode 中有关数组的题目(JAVA代码实现)

1.两数之和 作为力扣的第一题&#xff0c;我估计很多新手在这里就被劝退了&#xff0c;但其实这道题不难&#xff0c;我们用map存储我们找到的目标整数&#xff0c;当循环结束之后&#xff0c;如果找到&#xff0c;就返回找到的两个整数的数组&#xff0c;如果没找到&#xff0…

pycharm创建新python环境(切换版本)详细图解版——最简单的方法实现python环境切换

先按操作&#xff0c;进行python版本的切换 下面这种方式是切换你本地已经下载了的python环境 我比较推荐下面这种方法&#xff0c;前提是你已经安装了anaconda 在这里&#xff0c;你可以创建2.7到3.10任意版本的虚拟环境 选择了创建好的环境后&#xff0c;如果对你所需要的…

鸿蒙仓颉语言【模块module】

module 模块 模块配置文件&#xff0c;这里指项目的modules.json 文件&#xff0c;用于描述代码项目的基础元属性。 {"name": "file name", //当前项目的名称"description": "项目描述", //项目描述"version": "1.0…

【数据脱敏】⭐️SpringBoot 整合 Jackson 实现隐私数据加密

目录 &#x1f378;前言 &#x1f37b;一、Jackson 序列化库 &#x1f37a;二、方案实践 2.1 环境准备 2.2 依赖引入 2.3 代码编写 &#x1f49e;️三、接口测试 &#x1f379;四、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;最近也是很忙啊&#xff0c;上次的文章…

好玩新游:辛特堡传说中文免费下载,Dungeons of Hinterberg 游戏分享

在游戏中&#xff0c;你将扮演Luisa&#xff0c;一个被现实生活拖得疲惫不堪的法律实习生。她决定暂时远离快节奏的公司生活&#xff0c;踏上征服辛特堡地下城的旅程…她会在第一天就被击退&#xff0c;还是能成为顶级猎魔人呢&#xff1f;只有一个办法可以找到答案... 体验刺激…

Go语言os包全攻略:文件、目录、环境变量与进程管理

Go语言os包全攻略&#xff1a;文件、目录、环境变量与进程管理 简介文件操作文件创建与删除文件创建文件删除 文件读写操作基本的文件读写操作使用缓冲区的文件读写 文件信息获取与修改文件路径操作获取绝对路径路径分割与合并 目录操作目录创建与删除目录创建目录删除 目录遍历…

Spring AI (三) 提示词对象Prompt

3.提示词对象Prompt 3.1.Prompt Prompt类的作用是创建结构化提示词, 实现了ModelRequest<List<Message>>接口 Prompt(String contents)&#xff1a;创建一个包含指定内容的Prompt对象。 Prompt(String contents, ChatOptions modelOptions)&#xff1a;创建一个…

AndroidStudio 编辑xml布局文件卡死问题解决

之前项目编写的都是正常&#xff0c;升级AndroidStudio后编辑布局文件就卡死&#xff0c;还以为是AndroidStudio文件。 其实不然&#xff0c;我给整个项目增加了版权声明。所以全部跟新后&#xff0c;布局文件也增加了版权声明。估计AndroidStudio在 解析布局文件时候因为有版…

【Redis】主从复制分析-基础

1 主从节点运行数据的存储 在主从复制中, 对于主节点, 从节点就是自身的一个客户端, 所以和普通的客户端一样, 会被组织为一个 client 的结构体。 typedef struct client {// 省略 } client;同时无论是从节点, 还是主节点, 在运行中的数据都存放在一个 redisServer 的结构体中…