神经网络算法 - 一文搞懂BERT(基于Transformer的双向编码器)

news2024/9/30 23:28:57

本文将从BERT的本质、BERT的原理、BERT的应用三个方面,带您一文搞懂Bidirectional Encoder Representations from Transformers | BERT。

Google BERT

**__**一、**_**_BERT_**的本质_****__**

BERT架构 一种基于多层Transformer编码器的预训练语言模型,通过结合Tokenization、多种Embeddings和特定任务的输出层,能够捕捉文本的双向上下文信息,并在各种自然语言处理任务中表现出色。

BERT架构

BERT模型的输入: 通过结合Token Embeddings、Segment Embeddings和Position Embeddings三种嵌入方式,BERT等模型能够全面捕获文本的语义和上下文信息,为各类自然语言处理任务提供强大的基础表示能力。

  • Token Embeddings:

  • 在BERT中,输入文本首先被分割成Token序列(单词、子词等),每个Token都会被映射到一个高维向量空间,形成Token Embeddings。这些嵌入捕获了Token的语义信息,是模型理解文本的基础。

  • Token Embeddings是通过在大规模语料库上进行无监督预训练得到的,这使得BERT能够理解和处理各种复杂的语言现象和语义关系。

Token Embeddings

  • Segment Embeddings:

  • 为了处理像问答这样的任务,BERT引入了Segment Embeddings来区分两个不同但相关的句子(例如问题和答案)。这些嵌入帮助模型理解句子间的关系和边界。

  • 在文本分类任务中,Segment Embeddings的作用可能不那么明显,因为输入通常是一个连续的文本段落。然而,它们仍然可以用于区分不同部分的文本,特别是在处理长文档或多个句子时。

Segment Embeddings

  • Position Embeddings:

  • 由于Transformer结构本身不具备处理序列顺序的能力,BERT引入了Position Embeddings来捕获文本中Token的位置信息。

  • 这些嵌入确保模型能够区分不同位置的相同Token,例如区分“hello,world”和“world,hello”中的“hello”和“world”。

Position Embeddings

Position Embeddings与Token Embeddings和Segment Embeddings相加,形成最终的输入嵌入,这些嵌入随后被送入[Transformer]编码器进行处理。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈


_**二、**_**__****_BERT_****__**_**_**_**_**_****_的原理_****_**_**_**_**_

BERT的工作原理是通过在大规模未标注数据上执行预训练任务(如Masked Language Model来捕获文本中词汇的双向上下文关系,以及Next Sentence Prediction来理解句子间的逻辑关系),再将预训练的模型针对特定任务进行Fine tuning,从而在各种自然语言处理任务中实现高性能。

BERT工作原理

模型的预训练任务****:在大量未标注数据上进行自我学习的过程,通过这些任务,模型能够学习到语言的内在规律和模式,从而为其在后续的具体任务(如文本分类、问答等)中提供有力的支持。以下是两个核心的预训练任务:****

无监督预训练

  • Masked Language Model (MLM)

  • 任务描述:在输入的文本中,随机地遮盖或替换一部分词汇,并要求模型预测这些被遮盖或替换的词汇的原始内容。

  • 目的:使模型能够利用双向的上下文信息来预测被遮盖的词汇,从而学习到更深层次的语义表示。

  • 实现方式:在预训练阶段,BERT随机选择文本中15%的Token进行遮盖,其中80%的时间用[MASK]标记替换,10%的时间用随机词汇替换,剩下的10%保持不变。这种遮盖策略被称为动态遮盖,因为它在每次输入时都会随机改变遮盖的位置和词汇。

Masked Language Model (MLM)

  • Next Sentence Prediction (NSP)

  • 任务描述:给定一对句子,判断第二个句子是否是第一个句子的后续句子。

  • 目的:使模型能够理解句子间的逻辑关系,如连贯性、因果关系等,从而提高其在处理长文档或复杂文本时的能力。

  • 实现方式:在预训练阶段,BERT构造了一个二分类任务,其中50%的时间B是A的真正后续句子(标签为“IsNext”),另外50%的时间B是从语料库中随机选择的句子(标签为“NotNext”)。模型通过最后一层Transformer输出的[CLS]标记的嵌入来进行预测。

Next Sentence Prediction (NSP)

模型Fine tuning******:BERT的fine-tuning过程是针对特定任务对预训练模型进行调整的过程,使其能够更好地适应和解决具体任务。根据任务类型的不同,对BERT模型的修改也会有所不同,但通常这些修改都相对简单,往往只需要在模型的输出部分加上一层或多层神经网络。******

模型Fine tuning

  • 任务类型:根据具体任务的不同,BERT的fine-tuning可以分为以下几种类型:

  • 句子对分类任务(Sentence Pair Classification):这种任务需要判断两个句子之间的关系,如文本蕴含、问答匹配等。在fine-tuning时,将两个句子一起输入模型,并取第一个token([CLS])的输出表示作为整个句子对的表示,然后将其输入到一个额外的softmax层进行分类。

  • 单句分类任务(Single Sentence Classification):这种任务需要对单个句子进行分类,如情感分析、文本分类等。在fine-tuning时,将单个句子输入模型,并同样取第一个token([CLS])的输出表示进行分类。

  • 问答任务(Question Answering):这种任务需要模型从给定的文本中找出问题的答案。在fine-tuning时,将问题和答案一起输入模型,并取答案部分在模型输出中的起始和结束位置作为答案的预测。

  • 序列标注任务(Sequence Tagging,如命名实体识别NER):这种任务需要对输入序列中的每个token进行分类,如识别文本中的实体、词性标注等。在fine-tuning时,取所有token在最后一层Transformer的输出,然后将其输入到一个额外的softmax层进行逐token的分类。

  • 模型修改:在进行fine-tuning时,对BERT模型的修改通常包括以下几个方面:

  • 输入处理:根据任务类型的不同,对输入数据进行相应的处理,如将句子对拼接在一起、添加特殊标记等。

  • 输出层:在BERT模型的输出部分添加一层或多层神经网络,用于将模型的输出转换为任务所需的格式。对于分类任务,通常添加一个softmax层进行概率分布的计算;对于序列标注任务,则逐token进行分类。

  • 损失函数:根据任务类型选择合适的损失函数,如交叉熵损失函数用于分类任务、平方差损失函数用于回归任务等。

_**三、**_**__****_BERT的应用_****__**_****_

Question Answer(QA,问答系统)******:******BERT在问答系统(QA)中的应用通常涉及两个阶段:检索阶段和问答判断阶段。

Question Answer(QA,问答系统)

  • 一、检索阶段

  • 文档处理:

  • 切割:将长文档切割成较短的段落或句子(Passage),这些片段更容易处理和索引。

  • 建立索引:利用倒排索引技术,为每个切割后的片段(Passage)建立索引,以便快速查询。

  • 检索模型:

  • BM25模型:使用BM25或类似的检索函数(如BM25+RM3)计算问句与每个候选段落或句子的相关性得分。

  • 候选选择:根据得分选择Top K个最相关的候选段落或句子。

  • 二、问答判断阶段

  • 模型准备:

  • Fine-tuning数据:选择适当的问答数据集(如SQuAD)或任务数据进行BERT模型的fine-tuning。

  • 模型结构:在BERT模型的基础上,添加必要的输出层以适应问答任务,如分类层或起始/终止位置预测层。

  • 问答处理:

  • 输入构建:将用户问句和每个候选段落或句子组合成BERT模型的输入格式。

  • 模型预测:使用fine-tuned BERT模型对每个输入进行预测,判断候选段落或句子是否包含正确答案,或者预测答案的精确位置。

  • 答案选择:

  • 评分机制:根据BERT模型的预测结果,为每个候选段落或句子分配得分。

  • 最终答案:选择得分最高的候选段落或句子作为最终答案。

聊天机器人: BERT在聊天机器人中的应用主要涉及两个方面:用户意图分类和槽位填充(对于单轮对话),以及多轮对话中的上下文信息利用。

聊天机器人

  • 一、BERT在单轮对话中的应用

  • 用户意图分类:

  • 输入:将用户的话语作为BERT模型的输入。

  • 模型结构:在BERT模型的基础上添加分类层,用于将用户意图分类到不同的服务类型中。

  • 训练:使用带有意图标签的用户话语数据集进行fine-tuning,使模型能够准确识别用户意图。

  • 任务描述:从用户的话语中解析出用户的意图,如订餐、点歌等。

  • BERT应用:

  • 槽位填充:

  • 输入:将用户的话语以及预定义的槽位作为BERT模型的输入。

  • 模型结构:采用序列标注的方式,对每个输入token进行槽位标签的预测。

  • 训练:使用带有槽位标签的用户话语数据集进行fine-tuning,使模型能够准确填充槽位信息。

  • 任务描述:根据用户意图抽取关键元素,如订机票时的出发地、目的地等。

  • BERT应用:

  • 二、BERT在多轮对话中的应用

  • 上下文信息利用:

  • 输入:将当前用户话语以及历史对话内容作为BERT模型的输入。

  • 模型结构:可以采用多种策略来融入历史信息,如将历史对话与当前用户话语拼接、使用历史对话的嵌入表示等。

  • 训练:使用多轮对话数据集进行fine-tuning,使模型能够正确理解和利用上下文信息来生成应答。

  • 任务描述:在多轮对话中,利用历史交互信息来改进模型的应答。

  • BERT应用:

  • 模型改进:

  • 增加模型容量:通过增加BERT模型的层数或隐藏单元数来捕捉更多的上下文信息。

  • 引入注意力机制:使用注意力机制来加权历史信息的重要性,使模型能够关注与当前应答最相关的部分。

  • 记忆网络:结合记忆网络来存储和检索历史信息,以便在需要时提供给模型进行应答生成。

  • 关键问题:如何有效融入更多的历史信息,并在上下文中正确地使用这些信息。

  • 改进策略:

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

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

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

相关文章

贪心算法-最大容量问题

最大容量问题的贪心解法 目录 最大容量问题的贪心解法问题描述问题分析贪心策略代码实现(C)总结C学习资源 问题描述 给定一个数组ht,其中的每个元素代表一个垂直隔板的高度。我们可以通过任意两个隔板以及它们之间的空间来组成一个容器。容器…

PostgreSQL16.1(Linux版本离线下载)

1、将数据库压缩包和对应的依赖包上传到对应的目录下。 2、解压数据库文件。 3、解压libicu依赖文件,有两个看对应的版本能装上去即可。 4、进入解压数据库文件的该目录后执行此命令: ./configure --prefix=/usr/local/pgsql 5、输入“make && make install”命令,…

SQL-DCL-数据控制语言

一、 DCL-管理用户 二、DCL-权限控制 一、 DCL-管理用户,主要是DBA数据库管理员使用,开发使用较少 # 1、查询用户 use mysql; show tables; desc user; select * from user; # host为主机地址, 主机地址和用户名确定唯一性# 2、创建用户 create user itcastlocalh…

有哪些好用的文献翻译器推荐?中英文文献翻译软件一览

在平时的生活中,我常常需要阅读一些中英文的文献资料。面对那些生涩难懂的专业术语和复杂的句式结构,我时常感到头疼。 幸运的是,有了中英文文献翻译软件,我的阅读之旅变得轻松了许多。这些软件就像是我的语言助手,帮…

<数据集>航拍牧场奶牛识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:1805张 标注数量(xml文件个数):1805 标注数量(txt文件个数):1805 标注类别数:1 标注类别名称:[cow] 序号类别名称图片数框数1cow1805141337 使用标注工具&#xff…

黑神话悟空无法登录服务器怎么办

黑神话悟空游戏在登录的时候会遇到无法登录服务器的问题,玩家可以采用一些有效的方法进行解决,其中最主要的措施就是优化网络环境和减少网络干扰。Rak小编为您整理黑神话悟空无法登录服务器如何解决的步骤及注意事项。 优化网络环境 1、当游戏无法登录服…

Android Compose 下拉选择框 ExposedDropdownMenu下拉选择

/*** author 创建人&#xff1a;蒙石瑞* date 创建时间&#xff1a;2024/8/23 10:57* Description 创建内容&#xff1a;下拉选择框*/ OptIn(ExperimentalMaterial3Api::class) Composable fun CustomExposedDropdownMenu(options: List<out DropdownMenuDes>,l…

LLM大模型GPT4o

看图&#xff01; 看图&#xff01; 预训练与微调是现代深度学习模型&#xff0c;特别是自然语言处理模型&#xff0c;常用的两个阶段。 预训练&#xff1a; 在这个阶段&#xff0c;模型在大量的广泛文本数据上进行训练&#xff0c;学习语言的基本结构、语法、词汇和上下文关…

解决使用uniapp时,uni.switchTab跳转标签页面不刷新的问题

我们在使用uni.switchTab跳转到标签页面时&#xff0c;并不会触发这个标签页面的onLoad方法。这是因为在 uni-app中&#xff0c;uni.switchTab用于跳转到指定的标签&#xff08;tab&#xff09;页面。由于标签页面是单实例的&#xff0c;即无论何时切换到该标签页面&#xff0c…

Java二十三种设计模式-解释器模式(23/23)

本文深入探讨了解释器模式&#xff0c;这是一种行为设计模式&#xff0c;用于构建和解释执行自定义语言&#xff0c;提供了实现方法、优点、缺点、与其他模式的比较、最佳实践和替代方案的全面分析&#xff0c;帮助开发者在实际应用中做出明智的设计选择。 解释器模式&#xff…

uniapp(微信小程序如何使用单选框、复选框)

一、先看效果 二、数据结构 说明&#xff1a;selected用来记录每次用户选择的值&#xff0c;当是单选的时候属性中的selected属性需要设置成字符串&#xff0c;当是复选框的时候&#xff0c;此时选择的是数组&#xff0c;selected属性应设置为数组。type用来区分当前是单选还是…

《爬虫+大模型》到底有没有搞头?

最近在学习大模型&#xff0c;之前我是干过一段时间爬虫&#xff0c;在学习大模型的过程中&#xff0c;突发奇想能不能把大模型的能力结合爬虫&#xff0c;搞个AI爬虫玩一玩。 说干就干&#xff0c;先测试一下大模型的数据提取能力 <table width"100%" class&qu…

增强管道数据流转(EPDR)技术的设计局限和替代

在前文中&#xff0c;我们介绍了EPDR技术的起源&#xff0c;以及使用该技术驱动的业余软件无线电平台专栏。已有玩家通过踩坑证明&#xff0c;进程管道交换数据时间延迟大&#xff0c;构造时间敏感系统难。除非采用传统的紧耦合设计及更大的颗粒度&#xff0c;否则很难在期望的…

云计算实训34——docker环境配置、镜像基本操作、容器基本操作、设置远程连接管理

一、配置docker环境 写入模块 [rootdocker ~]# cat << EOF | tee /etc/modules-load.d/k8s.conf > overlay > br_netfilter > EOF 加载模块 #内核模块 [rootdocker ~]# modprobe overlay #桥接模块 [rootdocker ~]# modprobe br_netfilter #查看所添加的模…

物联网安装调试员:振兴杯全国青年职业技能大赛背后的人才培养

一、物联网安装调试员职业概述 1.1 职业定义 物联网安装调试员是信息时代下新兴的职业之一&#xff0c;他们利用先进的检测仪器和专用工具&#xff0c;负责物联网产品的安装、配置和调试工作。这项工作的核心是确保物联网设备能够高效、稳定地运行&#xff0c;实现数据的互联…

【精选】基于数据可视化的智慧社区内网平台

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

简单的jar包重打包Failed to get nested archive for entry 报错处理

简单的jar包重打包Failed to get nested archive for entry 报错处理 1. 需求 公司有一个后端项目&#xff0c;项目已经打好了jar包&#xff0c;现在我们发现jar包依赖的子包有问题&#xff0c;其中的一个mybatis xml文件查询数据不正确&#xff0c;我们需要替换项目&#xf…

使用Blender进行3D建模—基础操作笔记

Blender 3D 建模&#x1f680; 在博0阶段&#xff0c;目前已经完成立创EDA的PCB绘制的基础学习&#xff0c;树莓派的系统安装远程控制能学习&#xff0c;加上我本硕阶段学习的单片机和深度学习人工智能算法的知识&#xff0c;这里打算补上一块比较重要的能力拼图&#xff0c;就…

集团数字化转型方案(八)

集团数字化转型方案是一项全面而系统的工程&#xff0c;旨在通过构建基于云计算、大数据、人工智能等现代信息技术的企业级数字化平台&#xff0c;对传统的组织结构、业务流程、管理模式实现根本性革新。方案将围绕数据驱动的决策机制、智能化业务流程、数字化的客户体验、平台…

编程实现基于信息熵/基尼指数划分选择的决策树算法

编程实现基于信息熵/基尼指数划分选择的决策树算法 手动建立一个csv文件 #csv的内容为 Idx,color,root,knocks,texture,navel,touch,density,sugar_ratio,label 1,dark_green,curl_up,little_heavily,distinct,sinking,hard_smooth,0.697,0.46,1 2,black,curl_up,heavily,disti…