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

news2024/11/18 20:16:26

深度学习经典模型之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.coloradmin.cn/o/2166595.html

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

相关文章

【WRF运行第二期(Ubuntu)】ARWpost安装及错误总结

WRF运行第二期&#xff1a;ARWpost安装及错误总结 1 ARWpost介绍2 ARWpost安装2.1 ARWpost_V3安装前准备2.2 安装ARWpost2.3 修改Makefile文件2.4 修改configure.arwp文件2.5 生成可执行文件EXE另&#xff1a;报错1-Error: Type mismatch between actual argument at (1) and a…

计算物理精解【3】- FORTRAN计算

文章目录 概述hello,world环境接收输入与输出 读取csv文件if and select case循环formatread,write formatread,write读写文件录入与读取数据文件定位csv 数组一维数组最小二乘法下标隐式循环 关系代数基本运算笛卡尔积投影选择 过程参数select case 和 过程module快排函数自定…

深度学习自编码器 - 分布式表示篇

序言 深度学习作为人工智能领域的重要分支&#xff0c;其核心在于表示学习&#xff08; Representation Learning \text{Representation Learning} Representation Learning&#xff09;&#xff0c;尤其是分布式表示&#xff08; Distributed Representation \text{Distribut…

【JUC并发编程系列】深入理解Java并发机制:高效并发背后的守护者(八、线程池的秘密)

文章目录 【JUC并发编程系列】深入理解Java并发机制&#xff1a;高效并发背后的守护者(八、线程池的秘密)1. 线程池基础知识1.1 什么是线程池1.2 为什么要使用线程池1.3 线程池使用场景1.4 线程池有哪些作用 2. 线程池基本用法2.1 线程池的创建方式2.2 线程池底层是如何实现复用…

前端vuex

需要共享的数据适合存储到vuex中 state基本使用 如果开启strict严格模式&#xff0c;直接修改上图的age会报错提示。不能在组件中直接修改state

“永辉优品”会是中国零售的答案吗?

投资者这么快就“看懂”名创优品的豪赌了&#xff1f; 9月25日&#xff0c;永辉超市继续一字涨停&#xff0c;而令人意外的是&#xff0c;名创优品也反弹近8%。 随着名创优品于9月23日晚间在港交所公告&#xff0c;以62.7亿人民币收购永辉超市29.4%的股权&#xff0c;两家公司…

数据科学的核心工具箱:全面解析pandas、matplotlib.pyplot与scipy.stats在复杂数据分析流程中的应用

在当今数据驱动的世界中&#xff0c;Python已成为数据分析和科学计算的首选语言。 而 pandas 、 matplotlib.pyplot 和 scipy.stats 这三个库则是数据科学家和分析师武器库中 的三把利剑。 1. pandas 数据处理的瑞士军刀 pandas 库是 Python数据分析 的基石&#xff0c;它…

Distilabel合成数据生成框架简明教程

Distilabel 是一个用于合成数据和 AI 反馈的框架&#xff0c;适用于需要基于经过验证的研究论文的快速、可靠和可扩展的管道的工程师。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 -…

SpringCloud~

帮你轻松入门SpringCloud~ 1 微服务概述 1.1什么是微服务 如idea中使用maven建立的一个个moudle&#xff0c;它具体是使用SpringBoot开发的一个小模块&#xff0c;专业的事交给专业的模块来做&#xff0c;每个模块完成一个具体的任务或功能。 1.2 什么是微服务架构 它将单一应用…

MyBatis 动态 SQL 使用指南

MyBatis 是一个流行的持久层框架&#xff0c;它通过 XML 或注解将接口方法与 SQL 映射在一起。动态 SQL 是 MyBatis 的一大特性&#xff0c;它使得构建灵活的查询变得简单。本文将通过一个 User 表的示例&#xff0c;介绍 MyBatis 中常用的动态 SQL 方法。 1. 什么是动态 SQL&…

飞驰云联亮相电子半导体数智化年会 获”数据交换领域最佳厂商”

2024年9月20日&#xff0c;“2024第二届电子半导体/智能制造数智化年会暨品牌出海论坛”于上海隆重开幕&#xff0c;Ftrans飞驰云联作为国内领先的数据安全交换厂商&#xff0c;应邀携半导体全场景产品和解决方案亮相此次峰会。会上进行了“智象奖”评选&#xff0c;Ftrans飞驰…

sql中的regexp与like区别

sql中的regexp与like区别 1、REGEXP2、LIKE3、区别与选择 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、REGEXP 用途&#xff1a;高级字符串匹配&#xff0c;使用正则表达式。特点&#xff1a;灵活性强&#xff0c;能进行复杂模式匹配…

Java项目实战II基于Java+Spring Boot+MySQL的汽车销售网站(文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在数字化时…

【iOS】引用计数(一)

【iOS】引用计数 文章目录 【iOS】引用计数前言ARC与MRC什么是引用计数的机制内存管理的思考方式自己生成的对象非自己生成的对象不再需要自己持有就释放无法释放非自己持有的对象 autorelease小结 前言 笔者最近开始学习了一下有关于引用计数的内容&#xff0c;写这篇博客来简…

自动驾驶规划算法(一):A*算法原理和代码(c++与python)

1. A*算法简介 A*算法&#xff08;A-star algorithm&#xff09;诞生于1968年&#xff0c;由彼得哈特&#xff08;Peter Hart&#xff09;、尼尔森尼尔森&#xff08;Nils Nilsson&#xff09;和伯特拉波特&#xff08;Bertram Raphael&#xff09;三位计算机科学家提出。它的…

[机器学习]04-逻辑回归(python)-03-API与癌症分类案例讲解

逻辑回归&#xff08;Logistic Regression&#xff09; 的一API 介绍 关于如何配置模型中的优化器、正则化和惩罚项。 1. 逻辑回归 API 在 Scikit-learn 中&#xff0c;逻辑回归可以通过如下方式定义&#xff1a; from sklearn.linear_model import LogisticRegression ​ …

C嘎嘎入门篇:类和对象(1)

前言&#xff1a; 小编在之前讲述了C的部分入门基础&#xff0c;读者朋友一定要掌握好那些&#xff0c;因为C的学习和C有点不同&#xff0c;C的知识都是比较连贯的&#xff0c;所以我们学好了前面才可以学习后面的内容&#xff0c;本篇文章小编将会讲述C真正的入门篇&#xff1…

爬虫逆向学习(九):记录一个集cookie、请求参数、请求体、响应文本加密的站点反爬

此分享只用于学习用途&#xff0c;不作商业用途&#xff0c;若有冒犯&#xff0c;请联系处理 反爬前置信息 站点&#xff1a;aHR0cHM6Ly96d2Z3LmNxLmdvdi5jbi9pY2l0eS9pY2l0eS9lbmdpbmVlcmluZy9uYXZpZ2F0aW9u 接口&#xff1a;/icity/api-v2/cq.app.icity.engineering.Engine…

vue3组件通信(组合式API)

vue3组件通信&#xff08;组合式API&#xff09; vue3组件通信&#xff0c;采用组合式API。选项式API&#xff0c;参看官网 Vue3组件通信和Vue2的区别&#xff1a; 移出事件总线&#xff0c;使用mitt代替。 vuex换成了pinia。把.sync优化到了v-model里面了。把$listeners所…

fo-dicom开源库,深入理解项目的模块化设计

前言 DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff09;是医学图像和相关信息的国际标准&#xff0c;广泛应用于医学影像领域。FO-DICOM是一个开源的DICOM库&#xff0c;提供了丰富的功能和模块&#xff0c;用于处理DICOM数据、实现DICOM网络通信…