预训练语言模型——BERT

1.预训练思想

有了预训练就相当于模型在培养大学生做任务,不然模型初始化再做任务就像培养小学生

当前数据层面的瓶颈是能用于预训练的语料快被用完了

现在有一个重要方向是让机器自己来生成数据并做微调

1.1 预训练(Pre - training)vs. 传统的微调(Fine - tune)

一、训练过程

  1. 预训练
    • 预训练通常是在大规模的无监督数据上进行训练。例如,在自然语言处理中,会使用大量的文本语料,如维基百科、新闻文章等,这些文本没有经过人工标注类别等信息。模型(如 Transformer 架构的 BERT、GPT 等)通过学习文本中的词序、语义等特征来构建语言知识。
    • 以 BERT 为例,它通过预测句子中的被掩盖的单词(Masked Language Modeling)判断两个句子是否是上下句(Next Sentence Prediction)等任务来进行预训练。这种无监督的预训练方式使得模型能够学习到通用的语言模式和语义表示,为后续的具体任务训练打下基础。
  2. 传统微调(Fine - tune)
    • 传统微调方法是在一个已经预定义好的模型结构上,使用有监督的数据进行训练。比如在图像分类任务中,会有一个标注好的图像数据集,其中每个图像都有对应的类别标签(如猫、狗等)。
    • 模型从随机初始化的参数开始,根据给定的输入(图像)和期望的输出(类别标签),通过反向传播算法来调整模型的参数,以最小化预测结果和真实标签之间的误差。例如,对于一个简单的卷积神经网络(CNN)用于图像分类,会使用标注好的图像数据集(如 CIFAR - 10、ImageNet 等),经过多个轮次(epochs)的训练来优化模型的权重,使模型能够准确地对图像进行分类。

二、模型初始化和参数更新

  1. 预训练
    • 预训练后的模型具有已经学习到的通用特征表示。例如,预训练后的语言模型的词向量已经包含了丰富的语义信息。这些参数是在大规模无监督数据上训练得到的,是对语言(或其他数据类型)的一种通用理解。
    • 在后续用于特定任务时,预训练模型的参数可以作为初始参数,并且通常只是在这些参数的基础上进行微调。这样可以利用预训练模型中已经学习到的知识,减少在特定任务上的训练时间和数据量需求。
  2. 传统微调
    • 传统微调方法中的模型参数通常是随机初始化的这意味着模型在训练开始时没有任何先验知识,需要从输入数据中完全学习特征表示和任务相关的模式。
    • 整个训练过程主要是针对特定任务的参数更新。例如,在一个情感分类任务中,模型通过不断调整参数来学习如何根据文本内容判断情感倾向(积极、消极或中性),这些参数更新是基于给定的有监督数据和特定的任务目标。

三、数据要求

  1. 预训练
    • 需要大规模的无监督数据。因为预训练的目的是学习通用的特征表示,只有足够多的数据才能涵盖各种可能的语言模式、图像特征等。例如,在自然语言处理中,像 GPT - 3 这样的模型训练数据量达到了数千亿个单词。
    • 数据的质量要求相对灵活,主要是为了让模型学习到丰富的语义和语法结构。即使数据中存在一些噪声或者不精确的内容,在大规模数据的情况下,模型仍然能够学习到有价值的信息。
  2. 传统微调
    • 需要有监督的数据,即数据需要带有明确的标签。例如,在文本分类任务中,每个文本都需要标注其所属的类别;在目标检测任务中,图像中的目标需要标注其位置和类别等信息。
    • 数据量要求相对较小,但数据的标注质量要求较高。因为模型完全依赖这些有监督数据来学习特定任务的模式,如果数据标注不准确,会严重影响模型的性能。

四、适用场景和性能表现

  1. 预训练
    • 适用于各种自然语言处理、计算机视觉等任务。当有大量的无监督数据可供利用时,预训练能够学习到通用的知识,然后可以快速适应到多种具体任务中。
    • 在数据量有限的情况下,预训练方法可以借助预训练模型的知识来提高性能。例如,在一些小数据集的文本分类任务中,使用预训练的 BERT 模型并进行微调,往往比从头开始训练的模型取得更好的效果,因为预训练模型已经学习到了语言的基本语义和语法结构。
  2. 传统微调
    • 适用于一些相对简单、数据量不大且有高质量标注数据的任务。例如,在一些特定领域的图像分类任务,如医学图像中区分正常细胞和癌细胞,当有足够准确的标注数据时,传统微调方法可以取得不错的效果。
    • 但是,在数据量较少或者任务较为复杂的情况下,传统微调方法可能会因为缺乏足够的先验知识而出现过拟合或者性能不佳的情况。因为它需要从有限的数据中学习所有的特征表示和任务模式,而没有利用到像预训练方法那样的通用知识。

 

1.2 BERT的本质是一种文本表征(context representation)

文本  ->  矩阵   (max length  x  hidden size)

文本  ->  向量   (1  x  hidden size)

word2vec也可以做到同样的事 但word2vec是静态的,而BERT是动态的

         1.我喜欢吃苹果        2.苹果和华为哪个牌子好(1和2的苹果不是同一个向量)

词义要结合语境来判断每个词的表示都与整句话的语境有关,同一个词在不同语境下向量不同

1.3 BERT模型详解

论文参考《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》

  1. BERT 模型的背景

    • BERT(Bidirectional Encoder Representations from Transformers)是由谷歌在 2018 年提出的一种预训练语言模型。在它出现之前,语言模型主要是单向,如从左到右或者从右到左处理句子。这种单向性限制了对句子完整语义的理解,因为它不能同时利用句子前后的信息。BERT 的出现改变了这一局面,它基于 Transformer 架构的编码器部分,通过双向训练的方式能够更好地理解文本的语义和语法。
  2. 模型架构

    • Transformer 编码器:BERT 的核心架构是 Transformer 的编码器部分。它由多个 Transformer 编码器层堆叠而成。例如,BERT - base 通常有 12 层,BERT - large 有 24 层。每个编码器层都包含多头注意力机制(Multi - Head Attention)和前馈神经网络(Feed - Forward Network),并且在每个子层之间都有残差连接(Residual Connection)和层归一化(Layer Normalization),这使得模型能够有效地捕捉文本中的语义和语法信息,并且训练过程更加稳定。Transformer架构浅析-CSDN博客
    • 输入表示:BERT 的输入是经过特殊处理的文本序列。它使用 WordPiece 分词算法将文本分割成单词或者子词(sub - word)单元。对于输入序列,会添加特殊的标记,如 [CLS](用于分类任务的汇总表示,通常放在句子的开头)和 [SEP](用于分隔句子,例如在处理句子对任务时使用)。每个输入单元的最终表示是词嵌入(Token Embedding)、位置嵌入(Positional Embedding)和段嵌入(Segment Embedding,用于区分不同的句子部分,比如句子对任务中的两个句子)的组合。
    • 加入 [CLS]  [SEP] 来标记文本起始位置

      Segment embedding 判断来源语句,区分不同句子

      Position embedding 带入语序信息,标记词的前后顺序

      加和后会做Layer Normalization

      Toekn EmbeddingsSegment EmbeddingsPosition Embeddings维度是相同的——768(BERT - base)

      位置编码和 文字内容无关只和句子长度有关,token编码和句子内容有关

      最终将三层embeddings相加得到一个总的embeddings,其总长度就是L * 768

      三层输出的矩阵大小都是 L * 768,所以最终能相加

      segment embeddingsposition embeddings当下不怎么用了,被更高级的方法取代,但还是要掌握(self attentionrrn好在它不受两个字距离大小的影响,第一个字和最后一个字有可能计算出很高的关联性分值)

    • 模型规模:BERT 有不同的参数规模,如 BERT - base1.1 亿个参数BERT - large 约有 3.4 亿个参数。这些大规模的参数使得 BERT 能够学习到丰富的语言表示,从而在各种自然语言处理任务中表现出色。
  3. 预训练任务

    • 掩码语言模型(Masked Language Model,MLM):这是 BERT 的一个关键创新点。在预训练过程中,会随机地掩盖输入句子中的一些单词(例如,15% 的单词被选中),然后让模型预测这些被掩盖的单词是什么。具体来说,被选中的单词有 80% 的概率被替换为 [MASK] 标记,10% 的概率被替换为其他随机单词,10% 的概率保持不变。通过这种方式,模型被迫去学习单词之间的语义关系,而不仅仅是记忆单词序列。例如,对于句子 “我 [MASK] 红色的花”,模型需要根据上下文 “我” 和 “红色的花” 来推断被掩盖的单词可能是 “喜欢”。
    • 下一句预测(Next Sentence Prediction,NSP)用于训练模型理解句子之间的关联关系。在这个任务中,模型会同时输入两个句子,然后判断这两个句子是否是相邻的句子。例如,对于句子对(“太阳升起。”,“天空变亮。”)和(“太阳升起。”,“鱼儿在水中游。”),模型需要判断哪一对句子是相邻的,从而学习句子之间的语义连贯。这对于诸如问答系统、文本推理等任务非常重要。
  4. 微调(Fine - Tuning)与应用场景

    • 微调过程BERT 的一个强大之处在于它可以通过微调来适应各种下游自然语言处理任务。在微调阶段,将预训练好的 BERT 模型的参数作为初始值,然后根据具体的任务(如文本分类、问答系统、命名实体识别等)添加一个或几个特定的输出层。例如,在文本分类任务中,可以在 BERT 的输出上添加一个全连接层,将 BERT 的输出维度转换为类别数量,然后在有监督的数据上进行训练,使模型适应文本分类的任务需求。

 

  1. 应用场景
    • 命名实体识别(NER):可以识别文本中的人名、地名、组织机构名等实体。BERT 利用其预训练学到的语义知识,结合微调阶段针对 NER 任务的优化,能够更好地识别这些实体的边界和类别。
    • 问答系统(QA):在问答任务中,给定一个问题和一段文本(如维基百科文章),BERT 可以通过对问题和文本进行编码,计算它们之间的相关性,从而找到文本中与问题对应的答案部分。
    • 文本分类:BERT 能够对文本的情感、主题等进行分类。例如,将新闻文章分类为体育、娱乐、政治等类别。它通过对文章内容进行编码,提取语义特征,然后在微调后的输出层进行分类。

2.transformer结构

Transformer架构浅析-CSDN博客

3.预训练技术的发展

BERT的优势

1、通过预训练利用了海量无标注文本数据

2、相比词向量,BERT的文本表示结合了语境(contexual),效果大幅提升

3、Transformer模型结构有很强的拟合能力,词与词之间的距离不会造成关系计算上的损失

  1. 双向编码能力

    • BERT 采用双向 Transformer 架构,能够同时考虑单词的左右上下文信息,这是其一个重要的优势。传统的语言模型,如 GPT 系列,通常是单向的,要么从左到右,要么从右到左处理句子。而 BERT 的双向性使其可以更全面地理解文本的语义。
    • 例如,对于句子 "I went to the bank to deposit money." 和 "I sat on the bank of the river.",BERT 可以根据 "bank" 前后的不同上下文来更好地理解 "bank" 的不同含义,而单向模型可能会在理解一词多义时出现混淆。
  2. 预训练任务的有效性

    • 掩码语言模型(Masked Language Model, MLM):BERT 的 MLM 任务随机地掩盖输入句子中的一些单词,让模型预测这些被掩盖的单词,使模型能够学习到丰富的上下文信息和词汇语义关系。这种方式让 BERT 不仅学习到了单词的顺序,还能理解它们之间的语义关联,增强了对文本的理解能力。
    • 下一句预测(Next Sentence Prediction, NSP):这个任务让 BERT 学习到句子之间的关系,对于需要理解句子间语义连贯的下游任务,如问答系统、文本摘要、文本推理等,具有重要意义。它可以帮助模型更好地处理句子对,判断它们是否在语义上连贯。
  3. 迁移学习和通用性

    • BERT 是一种预训练语言模型,可以轻松地迁移到各种自然语言处理(NLP)任务中。通过在大规模文本数据上进行预训练,BERT 已经学习到了丰富的语言知识。对于下游任务,只需要在预训练模型的基础上添加一个或几个特定的输出层,并使用少量标注数据进行微调,就可以取得出色的性能。
    • 这意味着它可以广泛应用于文本分类、情感分析、命名实体识别、问答系统等多种任务,无需为每个任务设计专门的架构,大大减少了开发成本和时间。
  4. 长距离依赖捕捉能力

    • 基于 Transformer 的自注意力机制,BERT 能够有效地捕捉文本中的长距离依赖关系。传统的循环神经网络(RNN)或卷积神经网络(CNN)在处理长文本和复杂句法结构时,会因为距离限制或计算效率问题而受到影响。而 BERT 可以直接计算任意位置单词之间的关联程度,不受距离的限制,有助于理解长句子中的语义关系。、
  5. 深度语义理解

    • BERT 能够对文本的语义和语法结构进行深度理解,学习到高级的语言知识,如句子的成分结构、语义角色标注等。在各种任务中,它可以根据上下文信息做出更准确的判断,例如在命名实体识别中准确判断实体的类别,在情感分析中精准感知情感倾向的细微变化。

BERT的劣势

1.预训练需要数据,时间,和机器(开源模型缓解了这一问题)

2.难以应用在生成式任务上

3.参数量大,运算复杂,满足不了部分真实场景性能需求

4.没有下游数据做fine-tune,效果依然不理想

  1. 计算资源需求大

    • BERT 模型规模较大,尤其是 BERT-large 版本,有大量的参数,因此需要大量的计算资源进行训练和微调。这对于硬件设备的要求较高,普通的 CPU 很难处理,需要强大的 GPU 集群,并且训练时间较长。
    • 即使在推理阶段,也需要较大的内存和计算能力,可能导致部署困难,特别是在资源受限的环境中,如移动设备或边缘计算设备。
  2. 预训练数据的偏差

    • BERT 的预训练数据可能存在偏差,它是在大规模的文本数据上训练的,但这些数据可能更多地偏向某些领域或语言风格。当应用于特定领域或小众语言时,可能会出现性能下降的情况。
    • 例如,在处理专业领域的文本(如医学、法律、金融),如果预训练数据中该领域的数据较少,那么 BERT 可能无法很好地理解其中的专业术语和特殊语言表达。
  3. 序列长度限制

    • BERT 对输入序列的长度有一定的限制,当处理非常长的文本时,需要将其截断或分块处理,这可能会丢失部分信息。虽然其可以处理一定长度的序列,但对于超长文本,会导致性能下降或需要复杂的处理方法。
  4. 可解释性较差

    • 与传统的基于规则的方法相比,BERT 是一种深度学习模型,其内部的决策过程很难解释。我们很难知道 BERT 是如何做出具体的预测和决策的,这在一些对可解释性要求较高的应用场景中是一个缺点,例如医疗诊断、金融风险评估等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于FPGA(现场可编程门阵列)工程技术人员的详细介绍

一、FPGA工程技术人员概述 FPGA工程技术人员是专注于现场可编程门阵列(FPGA)设计、开发、测试及优化的专业技术人员。他们利用FPGA的灵活性和可编程性,为各种应用创建高效、定制化的硬件解决方案。 二、主要工作任务 FPGA逻辑设计&#xf…

机器学习模型评估指标

模型的评估指标是衡量一个模型应用于对应任务的契合程度,常见的指标有: 准确率(Accuracy): 正确预测的样本数占总样本数的比例。适用于类别分布均衡的数据集。 精确率(Precision): 在所有被预测为正类的样…

基于html5实现音乐录音播放动画源码

源码介绍 基于html5实现音乐录音播放动画源码是一款类似Shazam的UI,点击按钮后,会变成为一个监听按钮。旁边会有音符飞入这个监听按钮,最后转换成一个音乐播放器。 效果预览 源码获取 基于html5实现音乐录音播放动画源码

基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划

• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask,vueflask模式的前端和后端之间进行数据的传递通常是借助 API(应用程序编程接口)来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如,前端可能通过发送…

文件传输速查表:Windows 和 Linux

文件传输速查表:Windows 和 Linux 免责申明 本文章仅供网络安全相关学习与研究使用,旨在促进技术交流与安全知识普及,严禁将本文内容及相关工具用于未授权的渗透测试或任何违法活动。 重要声明: 由于传播、使用本文章所提供的信…

基于SpringBoot+Vue的“有光”摄影分享网站系统

基于SpringBootVue的“有光”摄影分享网站系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接&#x1f345…

课题推荐——基于GPS的无人机自主着陆系统设计

关于“基于GPS的无人机自主着陆系统设计”的详细展开,包括项目背景、具体内容、实施步骤和创新点。如需帮助,或有导航、定位滤波相关的代码定制需求,请点击文末卡片联系作者 文章目录 项目背景具体内容实施步骤相关例程MATLAB例程python例程 …

腾讯云AI代码助手编程挑战赛-凯撒密码解码编码器

作品简介 在CTFer选手比赛做crypto的题目时,一些题目需要自己去解密,但是解密的工具大部分在线上,而在比赛过程中大部分又是无网环境,所以根据要求做了这个工具 技术架构 python语言的tk库来完成的GUI页面设计,通过…

《机器学习》集成学习之随机森林

目录 一、集成学习 1、简介 2、集成学习的代表 3、XGBoost和随机森林的对比 相同点: 不同点: 二、Bagging之随机森林 1、简介 2、随机森林的核心思想 3、随机森林生成步骤 4、随机森林的优点 5、随机森林的缺点 三、随机森林的代码实现 1、…

四、VSCODE 使用GIT插件

VSCODE 使用GIT插件 一下载git插件与git Graph插件二、git插件使用三、文件提交到远程仓库四、git Graph插件 一下载git插件与git Graph插件 二、git插件使用 git插件一般VSCode自带了git,就是左边栏目的图标 在下载git软件后vscode的git插件会自动识别当前项目 …

JS进阶--JS听到了不灭的回响

作用域 作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问 作用域分为局部和全局 局部作用域 局部作用域分为函数和块 那 什么是块作用域呢? 在 JavaScript 中使用 { } 包裹的代码称为代码块…

《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶

目录 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 L2 在技术实现上会更倾向于实时感知,乃至可以使用感知结果直接构建鸟瞰图(bird eye view, BEV),而 L4 则依赖离线地图。 高精地…

【合作原创】使用Termux搭建可以使用的生产力环境(九)

前言 在上一篇【合作原创】使用Termux搭建可以使用的生产力环境(八)-CSDN博客中我们讲到了如何安装IDEA社区版,并在Termux中安装VNC服务器,在proot-distro的Debian中启动xfce桌面,并通过这个方式解决了IDEA社区版中无…

生成模型:变分自编码器-VAE

1.基本概念 1.1 概率 这里有: x为真实图像,开源为数据集, 编码器将其编码为分布参数 x ^ \hat{x} x^为生成图像, 通过解码器获得 p ( x ) ^ \hat{p(x)} p(x)^​: 观测数据的分布, 即数据集所构成的经验分布 p r e a l ( x ) p_{real}(x) preal​(x): …

中国省级产业结构高级化及合理化数据测算(2000-2023年)

一、数据介绍 数据名称:中国省级产业结构高级化、泰尔指数 数据年份:2000-2023年 数据范围:31个省份 数据来源:中国统计年鉴、国家统计局 数据整理:内含原始版本、线性插值版本、ARIMA填补版本 数据说明&#xf…

高级数据库系统 复习提纲

第一章 数据库技术的回顾与发展 简述三代数据库的发展历史及其对应特点: 新型数据库在“数据模型”上的创新: 简述数据库和什么相关技术结合,产生了什么新型数据库? 1. 数据库和并行处理技术结合,产生“并行数据库”…

C++实现图书管理系统(Qt C++ GUI界面版)

前瞻 本项目基于【C】图书管理系统(完整版) 图书管理系统功能概览: 登录,注册学生,老师借书,查看自己当前借书情况,还书。管理员增加书,查看当前借阅情况,查看当前所有借阅人,图书信息。 效果…

【LeetCode: 560. 和为 K 的子数组 + 前缀和 + 哈希表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

微信小程序实现登录注册

文章目录 1. 官方文档教程2. 注册实现3. 登录实现4. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/路由跳转的几种方式: https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab…

嵌入式系统 (2.嵌入式硬件系统基础)

2.嵌入式硬件系统基础 2.1嵌入式硬件系统的组成 嵌入式硬件系统以嵌入式微处理器为核心,主要由嵌入式微处理器、总线、存储器、输入/输出接口和设备组成。 嵌入式微处理器 嵌入式微处理器采用冯诺依曼结构或哈佛结构:前者指令和数据共享同一存储空间…