深度学习经典模型之BERT(上)

BERT(Bidirectional Encoder Representations from Transformers)是一个双向transformer编码器的言表示模型。来自论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 。由Google公司的研发,BERT的出现使得我们能够在一个大的数据集上面训练好一个比较深的神经网络,简化了NLP任务的训练,又提升了它的性能,使得自然语言处理有了质的飞跃。

基本信息

论文Pre-training of Deep Bidirectional Transformers for Language Understanding
地址:arxiv.org/abs/1810.04…

BERT全称:Bidirectional Encoder Representations from Transformers
源码:github.com/google-rese…
关键字:Pre-training(预训练)、Deep(深度)、Bidirectional(双向)

BERT特点

Pre-training


BERT的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。

在海量语料的基础上通过前期的Pre-training,让其达到一定的语言表达;后期再通过少量的样本,比如文本分类(正向、负向、中性等情感类文本分类)再进行训练,就可以达到很好的效果。

Deep


BERT-base采用12层Encoder,层数更深。它使用更强大的机器训练更大规模的数据,使BERT的结果达到了全新的高度,并且Google开源了训练好的多语言BERT模型代码,用户可以直接使用BERT作为Word2Vec的转换矩阵并高效的将其应用到自己的任务中。

Bidirectional


通过MLM(masked language model) 任务实现上下文理解。

和ELMo/GPT的区别

image.png

  • GPT使用新的Transformers结构,用左侧信息去预测未来信息,单向模型的主要缺点在于不能获得足够好的词表示;
  • ELMo通过从左向右(LTR)和从右向左(RTL)两个模型的输出拼接获得词的表示,双向信息融合的很浅,且由于基于RNN的架构,在应用到下游任务时,需要对架构做一些调整;
  • BERT是基于Transformer,用了左右侧信息,使用的是没有标号的数据,用到一些下游任务的时候,和GPT一样只需要微调输出层就可以了。

和Transformer的区别

  • 只使用了transformer的encoder,然后堆叠多层(12层)
  • BERT的Transformer Encoder端输入的向量表示,多了Segment Embeddings。计算位置向量的时候是随机初始化加上带训练的,Transformer的位置编码是固定的。

BERT极大的拓展了Transformers的应用,使其可以在更大的无标签的数据集上训练,其效果比有标签、更小数据集上训练的模型效果还要好。

模型

网络层数L, 隐藏层维度H, Attention多头个数A,总参数TP(Total Parameters)

在这里插入图片描述

Bert参数计算见’附:BERT可学习参数计算’

机器学习相关术语

  • few-shot learning(FSL 少样本学习)
  • zero-shot learning(ZSL 零样本学习)
  • Meta learning(学习其它机器学习任务输出的机器学习算法)

主要贡献

  • 引入了Masked LM, 使用双向LM做模型预训练。为预训练引入了新目标NSP(预测上句和下句的关系),它可以学习句子与句子间的关系。
  • 进一步验证了更大的模型效果更好: 12 --> 24 层。
  • 为下游任务引入了很通用的求解框架,不再为任务做模型定制。
  • 刷新了多项NLP任务的记录,引爆了NLP无监督预训练技术

应用场景

文本分类


标注数据是AI模型训练里最艰难的工作。NLP的标注更是需要投入大量的人力,文本标注因为没有标准答案比图像标注还要困难.而BERT在文本多分类的任务中,能在极小的数据下带来显著的分类准确率提升。有数据表示采用了BERT之后其效果显著提升。

BERT文本分类就是使用预训练的BERT模型来对文本进行分类,例如文本分类为新闻、科技、娱乐等类别。在这个过程中,BERT 模型可以自动学习到文本的语义信息,从而实现准确的分类。

网上教程:Bert Tutorial 文本分类指南

情感分析


在深度学习应用中,研究者主要在三个粒度级别上研究情感分析:文档级、语句级和方面级。其中文档级情感分类是指为观点型文档标记整体的情感倾向或极性,即确定文档整体上传达的是积极的还是消极的观点。句子级别的情感分类是确定单个给定句子中表达的情感。而方面级因为情感始终具有目标其情感分类会同时考虑情感和目标信息。

网络好文 基于BERT的中文情感分析指南

命名实体识别


命名实体识别(NER 也称为实体识别、实体分块 或 实体提取)是信息提取的一个子任务,旨在将文本中的命名实体定位并分类为预先定义的类别,如人员、组织、位置、时间表达式、数量、货币值、百分比等。而一个命名实体就是一个词语或是一个短语,它能够清晰地将一个物体和与他有相似属性的物体区分开来 (来自基于深度学习的NER综述)。

机器翻译


在基于BERT的机器翻译模型中,通常采用编码器-解码器结构。编码器负责将源语言句子编码成一系列的隐藏表示,而解码器则将这些隐藏表示解码成目标语言句子。BERT作为编码器的一部分,能够为解码器提供更加丰富的语义信息,从而提升翻译质量。

网络好文 INCORPORATING BERT INTO NEURAL MACHINE TRANSLATION

两阶段模型

BERT是一个预训练的语言表征模型,不再像以往的模型采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练,而是采用新的masked language model(MLM) ,以生成深度的双向语言表征。

BERT模型是一个两阶段模型,第一阶段 pre-training,第二阶段 fine-tuning。即预训练和微调

第一阶段: 预训练阶段


预训练阶段模型有两个任务,即Masked Language Model (简称MLM) 和Next Sentence Prediction (简称NSP)。

第二阶段: 预训练后


只需要添加一个额外的输出层进行fine-tune,就可以在各种各样的下游任务中取得state-of-the-art的表现。在这过程中并不需要对BERT进行任务特定的结构修改。

image.png

除了输出层之外

  1. 在预训练和微调中都使用了相同的架构,还使用了相同的预先训练过的模型参数d为不同的下游任务初始化模型。
  2. 在微调期间,所有参数都会进行微调。[CLS]是添加在每个输入示例前面的一个特殊符号,而[SEP]是一个特殊的隔板 工具标记(例如,分离问题/答案)。

[CLS][SEP] 用于表示句子的开始和结束,或者在处理多个句子时进行分隔 BERT的主要特征是,对于不同的任务都有一个统一的模型结构,是一个泛化能力较强的预训练模型。

自监督学习

在机器学习中,最常见的是有监督学习,即通过人工对数据进行标注,然后在提供输入x 和 标签y的情况下,对模型进行训练,让模型输出`y`尽可能与标签y一致。

自监督不需要人工标注,通过将数据处理成两部分,一部分作为输入x一部分作为标签X,然后使用这组数据对模型进行训练,让模型输出y尽可能与标签一致。由于自监督不需要大量的人工标注,因此能够极大的降低模型训练成本。BERT的大规模预训练就是基于自监督学习

image.png

图示说明

  • 左侧为有监督学习:模型、标签
  • 右则为自监督学习:数据本身就有Label, MLM’s masked通过掩盖(或称之为完形填空)的方式,将Label提取,把数据变为有标签的数据。

Pre-training

预训练任务之MLM(Masked Language Model)


在每一个训练序列中以15%的概率随机地选中某个token进行MASK,当一个token被选中后,有以下三种处理方式(my dog is hairy 为例):

  1. 80%的概率被[MASK]。如:my dog is hairy --> my dog is [MASK]
  2. 10%的概率修改为随机的其他token。如: my dog is hairy --> my dog is apple
  3. 10%的概率不变。如,my dog is hairy --> my dog is hairy

然后在对该位置的MASK进行预测: 主要是对80%被掩码的数据进行预测,预测被掩码的位置上的数据,如果预测错了,计算损失进行反向传播。

上述操作方法主要是要解决BERT的两个缺点:

  • 因为Bert用于下游任务微调时, [MASK] 标记不会出现,它只出现在预训练任务中。这就造成了预训练和微调之间的不匹配,微调不出现[MASK]这个标记,模型好像就没有了着力点、不知从哪入手。所以只将80%的替换为[MASK],但这也只是缓解、不能解决
  • 相较于传统语言模型,Bert的每批次训练数据中只有15%的标记被预测,这导致模型需要更多的训练步骤来收敛。

预测训练任务之NSP(Next Sentence Predict)


除了masked的自监督的构建方式,对于每一个训练样例又以另外一种方式(NSP)进行预测,主要原理:

  1. 将一句话的前后两句话拿出来
  2. 50%的概率保持原有顺序 (标注为IsNext)
  3. 50%的概率后面的句子被替换为文档的其他随机句B (标注为NotNext)

这就意味着50%的样本是正例,50%的样本是负例,接下来把训练样例输入到BERT模型中,用[CLS]对应的信息去进行二分类:

预测当前句子是否有Next sentence的关系,是否是前后句。

假定1代表是一句话,0代表不是一句话。那么:如果概率>0.5,表不变,标签为0;概率 <0.5,表变化,标签为1

经过上面两个任务的处理,训练数据如下所示(为了方便浏览,制作成表格样式):

两个任务共享Bert,使用不同的输出层,做Muti-Task

在这里插入图片描述

Bert双向的理解

Bert可以看作Transformer的encoder部分,Bert模型舍弃了GPT的attention mask。双向主要体现在Bert的预训练任务一:遮蔽语言模型(MLM)。如:

我 [MASK] 学 习 英 语。

这句话输入到模型中,[MASK]通过attention均结合了左右上下文的信息,这体现了双向

attention是双向的, 只是GPT通过attention mask达到单向,即让[MASK]看不到 学 习 英 语这四个字,只看到上文 我 喜 欢 。

附录

语言模型预训练可改善的NLP任务与策略


语言模型预训练可以改善许多NLP任务,这些任务包括:

  • 用来建模句子之间的关系,比如说对句子的情绪识别或者两个句子之间的关系
  • 实体命名的识别(对每个词识别是不是实体命名,比如说人名、街道名)

在使用预训练模型做特征表示的时候,一般有两类策略

  • 一个策略是基于特征feature-based的(代表作是ELMo):对每一个下游的任务构造一个跟这个任务相关的神经网络,然后将预训练好的这些表示(比如说词嵌入)作为一个附加特征把它们和原始输入一起放进模型中。
  • 另一个策略是基于微调fine-tuning的: 就是把预训练好的模型放在下游任务的时候不需要改变太多,只需要简单的修改一些输出层,再用我们自己的数据进行一个增量训练,对预训练好的参数会在下游的数据上再进行微调。

来自李沐老师关于BERT论文精读的内容。

BERT可学习参数计算


BERT模型可学习参数来自词嵌入层和Transformer块

嵌入层 就是一个矩阵,输入是字典的大小(这城假设是30k),输出是隐藏单元的个数(这里假设是H)

transformer块有两部分:

在这里插入图片描述

第一次看时,认真清楚的核算过。这次排版,有点忘了以前是怎么计算的,希望没有排错。
来自李沐老师关于BERT论文精读的内容。

BERT与GPT的比较


架构层面

  • GPT采用单向的Transformer Decoder结构,只能利用上文信息无法利用下文信息。在预训练时使用了"语言模型(LM)“和"下一句预测(NSP)”。
  • BERT采用双向Transformer Encoder结构,在预训练阶段使用了"遮盖语言模型(Masked Language Model,MLM)“和"下一句预测(Next Sentence Prediction,NSP)

训练任务

  • 在GPT两个预训练任务中,语言模型任务是模型根据前面的文本预测下一个单词;在下一句预测任务中模型则需要判断两个句子是否相邻。
  • 在BERT预测训练任务中,遮盖语言模型是模型根据上下文预测被遮盖的单词;在下一句预测任务中模型则需要判断两个句子是否相邻,并给出是或否的预测结果

数据集

  • GPT使用的是使用了WebText等大型文本语料库
  • BERT使用了Wikipedia等大型文本语料库,以及BookCorpus等小型语料库

应用场景


  • GPT适用于于语言生成、文本补全、问答等任务。
  • BERT适用于文本分类、命名实体识别、情感分析等任务

如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码关注免费领取【保证100%免费】🆓
请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

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

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

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

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

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

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

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

👉如何学习AI大模型?👈

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

请添加图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

在这里插入图片描述

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

在这里插入图片描述

四、AI大模型商业化落地方案

在这里插入图片描述

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
请添加图片描述

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

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

相关文章

MySQL篇(SQL优化)(持续更新迭代)

目录 一、插入数据&#xff1a;Insert 1. 优化方案一&#xff1a;批量插入数据 2. 优化方案二&#xff1a;手动控制事务 3. 优化方案三&#xff1a;主键顺序插入&#xff0c;性能要高于乱序插入 4. 大批量插入数据 5. 案例 5.1. 创建表结构 5.2. 设置参数 5.3. load加载…

IDAE中Quarkus框架(3.13版本)开发、调试、部署、打包等

code-with-quarkus code-with-quarkus 是使用官网生成的demo项目 这个项目使用Quarkus&#xff08;使用3.13.0版本&#xff0c;该版本支持JDK21&#xff09;&#xff0c;超音速亚原子Java框架。官网地址: https://quarkus.io/. 环境要求 OS: Windows 10.0 jdk 11 maven 3.9…

单元测试、集成测试、系统测试有什么不同?

单元测试、集成测试和系统测试是软件测试开发中不可或缺的部分。 单元测试&#xff1a; 范围&#xff1a;单元测试是对软件中最小的可测试单元的测试&#xff0c;通常是函数、方法或类。 目的&#xff1a;它的目标是验证每个单独的单元是否按照预期工作&#xff0c;以增加代码…

数据转换器——佛朗哥Chater 1

【注:本文基于《数据转换器》一书进行学习、总结编撰,适合新手小白进行学习】 目录 1.1 理想的数据转换器 1.2 采样 1.2.1 欠采样 1.2.2 采样时间的抖动(A/D转换的第一个精度限制) 1.3 幅度的量化 1.3.1 量化噪声(基本限制) 1.3.2 量化噪声的性质 1.4 KT/C噪声(…

Qt (19)【Qt 线程安全 | 互斥锁QMutex QMutexLocker | 条件变量 | 信号量】

阅读导航 引言一、互斥锁1. QMutex&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;使用示例基本需求⭕thread.h⭕thread.cpp⭕widget.h⭕widget.cpp 2. QMutexLocker&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;使用示例 3. QReadWriteLocker、QR…

【Linux】简易日志系统

目录 一、概念 二、可变参数 三、日志系统 一、概念 一个正在运行的程序或系统就像一个哑巴&#xff0c;一旦开始运行我们很难知晓其内部的运行状态。 但有时在程序运行过程中&#xff0c;我们想知道其内部不同时刻的运行结果如何&#xff0c;这时一个日志系统可以有效的帮…

软考无损连接判断

如何判断是否为无损连接&#xff0c;要看能否还原回最开始的关系模式 最开始的关系模式 U{A&#xff0c;B&#xff0c;C} 函数连接 F{A -> B}&#xff0c;这个函数连接的意思就是A可以推导出B 首先从P1开始判断&#xff0c;{ AB&#xff0c;BC } C不能通过函数依赖推导出来…

数据结构之线性表——LeetCode:328. 奇偶链表,86. 分隔链表,24. 两两交换链表中的节点

328. 奇偶链表 题目描述 328. 奇偶链表 给定单链表的头节点 head &#xff0c;将所有索引为奇数的节点和索引为偶数的节点分别组合在一起&#xff0c;然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 &#xff0c; 第二个节点的索引为 偶数 &#xff0c;以此类推。…

头条|司法部公法局局长访谈:推进高水平公立鉴定机构建设!加快推进司法鉴定立法!

主持人&#xff1a;大家好&#xff0c;我是司法部AI主播司政轩。为切实做好党的二十届三中全会精神学习宣传贯彻&#xff0c;积极反映司法部及地方司法行政机关学习全会精神的体会收获和贯彻落实举措&#xff0c;我们推出了“学习宣传贯彻党的二十届三中全会精神--司法行政微访…

Elasticsearch 检索优化:停用词的应用

Elasticsearch 检索优化&#xff1a;停用词的应用 场景描述 目前在 Elasticsearch 集群中存储约 1.5 亿篇文章数据&#xff0c;随着数据量的增加&#xff0c;检索性能问题逐渐显现。在列表检索和聚合操作中&#xff0c;CPU 消耗飙升至 100%&#xff0c;并且检索耗时较长&…

私域电商:自主发展新路径与创新模式融合

摘要&#xff1a;本文深入探讨了私域电商相较于传统电商在自主权方面的优势&#xff0c;并结合 AI 智能名片、链动 21 模式以及商城小程序等创新元素&#xff0c;阐述了私域电商如何为商家提供更大的发展空间和自主权&#xff0c;以及这些创新模式在私域电商中的应用价值&#…

口碑最好的头戴式耳机是哪些?高品质头戴式耳机对比测评揭晓

头戴式耳机以其出色的音质表现和舒适的佩戴体验&#xff0c;成为了音乐爱好者和日常通勤用户的热门选择。而在众多品牌和型号中&#xff0c;口碑最好的头戴式耳机是哪些&#xff1f;面对市场上丰富的选择&#xff0c;找到一款音质优良、佩戴舒适且性价比高的耳机并不容易。今天…

ESP8266+DHT11+Python制作一个物联网温湿度传感器

ESP8266是一款低功耗、高集成度的Wi-Fi SOC&#xff08;System on Chip&#xff0c;系统级芯片&#xff09;&#xff0c;这款芯片专为物联网&#xff08;IoT&#xff09;应用而设计&#xff0c;常见开发ESP8266的环境可以使用Arduino或者ESP8266 RTOS SDK、NodeMCU&#xff0c;…

【JavaScript】数据结构之链表(双指针、滑动窗口)

什么是链表&#xff1f; 多个元素存储的列表链表中的元素在内存中不是顺序存储的&#xff0c;而是通过“next”指针联系在一起的&#xff0c;这个“next”可以自定义。JS中的原型链原理就是链表结构&#xff0c;是通过__proto__指针联系在一起的。 双指针形式 对撞指针&am…

你还在为试衣间排队烦恼吗?AI魔法绘,让虚拟试衣触手可及!

我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 大家好&#xff01;今天我要跟大家聊聊一个超级有趣又实用的新…

施耐德EcoStruxure Machine SCADA Expert(EMSE)报警记录进阶(十六)

针对某些特殊行业&#xff08;诸如医药行业&#xff09;的设备生产需要符合GMP相关规定&#xff0c;这就导致需要数据溯源。 EMSE可以通过与sql的连接实现报警历史记录的永久存储。 1.EMSE打开相关配置 2.sql创建表单 用于报警历史数据的存储容器 3.EMSE内选择sql表单 4.现在…

mistune,一个神奇的 Python 库!

大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - mistune。 Github地址&#xff1a;https://github.com/lepture/mistune Markdown 是一种轻量级的标记语言&#xff0c;以其简洁的语法和可读性广泛应用于文档编写、博客发布和在线内容管理系统中。Python 作为一门灵活…

【ESP32】ESP-IDF开发 | UART通用异步收发传输器+串口收发例程

1. 简介 UART可以说是开发者使用得最多的外设之一了&#xff0c;打印log几乎都是使用串口来实现的。UART是一种异步全双工的通信方式&#xff0c;异步传输的特性使得它仅需2根线就可以完成全双工的传输&#xff0c;但这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相…

分布式计算技术是什么?在数据集成值得作用?

数据是现代科技技术的基础&#xff0c;面对爆炸性数据的增长&#xff0c;要求计算能力要求更高、数据整合和处理更有效&#xff0c;如何应对数据集成带来的挑战&#xff1f;本文将探讨分布式计算技术在数据集成中的优化作用。 一 分布式计算技术。 定义&#xff1a;分布式计算…

笔记:将WPF中可视化元素(Visual)保存为图像,如PNG,JPEG或BMP的方法简介

一、目的&#xff1a;将WPF中可视化元素&#xff08;Visual&#xff09;保存为图像&#xff0c;如PNG,JPEG或BMP的方法简介 BitmapEncoder 是 WPF 中用于将图像数据编码为特定格式的基类。它提供了将 BitmapSource 对象保存为各种图像格式&#xff08;如 PNG、JPEG、BMP 等&…