CMU 10423 Generative AI:lec5(Encoder-only Transformers + 阅读材料Bert, ViT)

文章目录

  • [1 概述](#1 概述)
  • [2 摘录](#2 摘录)
  • [3 阅读材料:bert](#3 阅读材料:bert)
    • [3.1 概述](#3.1 概述)
    • [3.2 bert模型架构和灵感来源](#3.2 bert模型架构和灵感来源)
    • [3.3 bert的预训练和微调](#3.3 bert的预训练和微调)
        • [1. **预训练(Pre-training)**:](#1. 预训练(Pre-training):)
        • [2. **微调(Fine-Tuning)**:](#2. 微调(Fine-Tuning):)
        • [3. **总结**:](#3. 总结:)
    • [3.4 bert的输入](#3.4 bert的输入)
        • [1. **Token Embeddings(词嵌入)**:](#1. Token Embeddings(词嵌入):)
        • [2. **Segment Embeddings(句段嵌入)**:](#2. Segment Embeddings(句段嵌入):)
        • [3. **Position Embeddings(位置嵌入)**:](#3. Position Embeddings(位置嵌入):)
    • [3.5 bert的输出](#3.5 bert的输出)
        • [1. **BERT 预训练模型的输出数据结构**](#1. BERT 预训练模型的输出数据结构)
          • [(1) **每个 Token 的隐藏状态向量**](#(1) 每个 Token 的隐藏状态向量)
          • [(2) **[CLS] 标记的输出**](#(2) [CLS] 标记的输出)
          • [(3) **[SEP] 标记的输出**](#(3) [SEP] 标记的输出)
          • [(4) **层输出(Layer-wise Outputs)**](#(4) 层输出(Layer-wise Outputs))
          • [(5) **MLM 和 NSP 任务的输出**](#(5) MLM 和 NSP 任务的输出)
        • [2. **BERT 微调模型的输出数据结构**](#2. BERT 微调模型的输出数据结构)
          • [(1) **文本分类任务**](#(1) 文本分类任务)
          • [(2) **问答任务(SQuAD等)**](#(2) 问答任务(SQuAD等))
          • [(3) **命名实体识别(NER)任务**](#(3) 命名实体识别(NER)任务)
      • [3. **简单举例**](#3. 简单举例)
      • 总结
    • [3.6 bert预训练的流程、数据集、损失计算](#3.6 bert预训练的流程、数据集、损失计算)
        • [1. **训练流程**](#1. 训练流程)
        • [2. **使用的数据集**](#2. 使用的数据集)
        • [3. **损失函数的计算**](#3. 损失函数的计算)
    • [3.7 bert预训练模型能在哪些领域应用?](#3.7 bert预训练模型能在哪些领域应用?)
        • [1. **文本分类**](#1. 文本分类)
        • [2. **问答系统(Question Answering, QA)**](#2. 问答系统(Question Answering, QA))
        • [3. **自然语言推理(Natural Language Inference, NLI)**](#3. 自然语言推理(Natural Language Inference, NLI))
        • [4. **命名实体识别(Named Entity Recognition, NER)**](#4. 命名实体识别(Named Entity Recognition, NER))
        • [5. **机器翻译**](#5. 机器翻译)
        • [6. **文本生成任务**](#6. 文本生成任务)
        • [7. **文本匹配**](#7. 文本匹配)
        • [8. **跨语言任务(Multilingual Tasks)**](#8. 跨语言任务(Multilingual Tasks))
        • 总结:
  • [4 阅读材料:ViT](#4 阅读材料:ViT)

1 概述

本讲主要内容如下:

  1. 介绍了CV一些常见任务领域
  2. 介绍了transformer中encoder层和decoder层中attention的区别,举了仅用encoder层架构的模型bert、VIT模型例子
  3. 介绍图像生成领域

本讲有2篇阅读材料:一个是bert论文(2018年10月),一个ViT论文(2021年)。

2 摘录

计算机视觉领域的常见任务领域

  1. Image Classification(图像分类):
  • 给定一张图像,预测一个单一的标签。属于多类分类问题。
  1. Image Classification + Localization(图像分类和定位):
  • 给定一张图像,预测一个标签和对象的边界框。边界框由位置 (x, y) 和尺寸 (h, w) 表示。
  1. Human Pose Estimation(人体姿态估计):
  • 给定一张人体图像,预测多个关键点的位置(如左手、右手、左肘等)。这是一个多重回归问题,每个关键点有一个对应的 (xi, yi) 位置。
  1. Semantic Segmentation(语义分割):
  • 给定一张图像,为图像中的每个像素预测一个标签。与分类不同的是,这里强烈关注像素间的关联。
  1. Object Detection(目标检测):
  • 给定一张图像,为每个对象预测一个边界框和标签。例如,用于检测图像中的人、动物、物体等。
  1. Instance Segmentation(实例分割):
  • 每个像素标注实例标签,类似语义分割,但要区分同类的不同实例。例如,图中有两个不同的人,则需要分别标注为person-1和person-2。
  1. Image Captioning(图像描述):
  • 给定一张图像,生成一句话描述图像的内容。常用深度卷积神经网络(CNN)或Transformer与语言模型(如RNN)结合完成此任务。
  1. Image Generation(图像生成):
  • 包括多种生成任务,如类条件生成、超分辨率、图像编辑、风格转换和文本到图像生成。目标是根据输入条件生成新图像。

Encoder-only Transformer(仅用encoder层的transformer)

前面课提到的如GPT模型,是Decoder-only transformer,里面用的是因果注意力,即训练时当前单词不能看到后面的的单词。而以bert为代表的模型,是Encoder-only Transformer,训练时当前单词能看到前后的单词,相当于做完形填空。

ViT模型

模型架构

  1. 模型架构
  • Vision Transformer的模型架构与BERT类似,不同的是它的输入是图像块(patch)而不是单词。图像被分割成大小为P×P的块(例如14x14、16x16或32x32),每个块通过线性变换嵌入为固定长度的向量(通常是1024维)。
  • ViT还使用了1D位置编码来提供图像块的位置信息,帮助模型学习图像的空间结构。
  1. 训练方式
  • 在预训练阶段,ViT通常在大规模的图像数据集上进行分类任务(如ImageNet 21K或JFT-300M),这一过程类似于卷积神经网络(CNN)的训练方法。
  • 在微调阶段,模型会在较小的数据集上(如CIFAR-100)训练一个新的分类头,以适应特定任务。
  1. 2D位置信息的学习
  • 虽然ViT使用的是1D位置编码,但通过适当的架构设计,模型仍然可以从输入中学习到2D的空间位置信息。

总结来说,ViT通过将图像块线性嵌入并引入位置编码,利用Transformer架构处理图像分类任务,成功避免了传统CNN对卷积操作的依赖,在大规模图像数据集上的表现十分优异。

为什么Transformer在计算机视觉领域流行的时间比在自然语言处理领域(2017)晚了这么久?

原因包括以下几点:

  1. 图像数据的结构差异
  • 图像数据的二维结构(像素的空间关系)与语言数据的线性结构不同。传统的卷积神经网络(CNN)非常擅长处理图像中的局部依赖关系,而Transformer最初是为处理序列数据(如文本)而设计的。因此,CNN在图像任务中的表现长时间优于早期的Transformer。
  1. 计算成本
  • Transformer的自注意力机制需要计算全局的注意力权重,这在处理大规模图像时的计算成本较高。图像通常比文本具有更多的维度和数据量,因此在早期,Transformer的计算开销使其不适合应用于计算机视觉。
  1. 大规模数据集和硬件支持
  • Transformer在自然语言处理(NLP)中的成功很大程度上依赖于大规模预训练数据和强大的硬件支持。在计算机视觉中,直到最近几年才有足够大的数据集和计算资源(如ImageNet 21K或JFT-300M)来支持ViT这样的Transformer模型。
  1. 创新的适应
  • Vision Transformer(ViT)的提出是对Transformer架构的一次重要调整,它将图像切割成小块(patches),将这些块处理为类似文本的序列。这样的创新使得Transformer能够适应图像数据的特点,最终促进了其在计算机视觉中的广泛应用。

这些因素共同导致了Transformer在计算机视觉领域的应用比在自然语言处理领域晚了一些年才变得流行。

图像生成领域5种常见任务

  1. Class-conditional Generation(类条件生成)
  • 任务:根据给定的类别标签(如海葵、脑珊瑚等),从模型中生成与该标签对应的图像。
  • 类条件生成与图像分类问题相反,图像分类是给定图像预测标签,而类条件生成则是给定标签生成图像,公式上是p(x|y),即在已知标签y的情况下生成图像x。
  1. Super Resolution(超分辨率生成)
  • 任务:给定一张低分辨率的图像,生成一张高分辨率的重建图像。这种技术在输入分辨率较低的情况下尤为有效,能够生成细节更加清晰的图像。
  1. Image Editing(图像编辑)
  • 任务:对图像进行自动编辑,常见任务包括:
    • Inpainting(修补):填补图像中缺失的像素区域。
    • Colorization(上色):将灰度图像恢复为彩色图像。
    • Uncropping(扩展图像边界):生成图像缺失部分的写实重建。
  1. Style Transfer(风格迁移)
  • 任务:将两张图像的内容和风格融合在一起,保持源图像的语义内容,同时以目标图像的风格进行呈现。
  1. Text-to-Image Generation(文本到图像生成)
  • 任务:根据文本描述生成与之匹配的图像。文本描述是生成图像的依据,生成的图像需要与文本提示相符。该部分展示了使用Stable Diffusion模型生成的例子,如根据提示生成一幅猫扮演拿破仑的宣传海报或未来主义场景等。

3 阅读材料:bert

3.1 概述

全称: 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
时间: 2018年10月
作者人数: 4人,谷歌
论文地址: https://arxiv.org/pdf/2004.05150
简短总结 BERT模型基于Transformer的编码器架构,有两个版本:BERT-Base(12层,110M参数)和BERT-Large(24层,340M参数)。模型的输入包括单个句子或句子对,通过词嵌入、位置嵌入和句段嵌入(即某单词属于第一个句子还是第二个句子)生成每个token的表示。输出包括每个token的隐藏状态向量及特殊标记[CLS]的全局表示(要训练的就是让[CLS]浓缩输入的所有信息)。训练数据集来自BooksCorpus(电子书)和English Wikipedia,总计约16GB的文本数据。在预训练完成后,BERT可以通过微调应用于各种自然语言处理任务,如文本分类、问答系统、命名实体识别等。BERT广泛应用于情感分析、机器翻译、搜索引擎优化、自然语言推理等领域,其强大的双向语义理解能力使得其在众多NLP任务中达到最先进的效果。

推荐资料:李沐对bert的讲解,https://www.bilibili.com/video/BV1PL411M7eQ

3.2 bert模型架构和灵感来源

bert基本就是transformer的编码器结构,有两种大小配置:

  • BERT-Base:12层,隐藏层大小为768,12个自注意力头,参数总数为110M。
  • BERT-Large:24层,隐藏层大小为1024,16个自注意力头,参数总数为340M。

思路上参考了GPT-1(2018年6月)和ELMo模型(2018年2月):

  1. BERT (Bidirectional Encoder Representations from Transformers)
  • BERT模型使用了双向Transformer【其实就是 Transformer 中编码器结构】,也就是说每个输入的token不仅能看到左侧的上下文,还能看到右侧的上下文。这使得BERT能捕获到句子的全局信息。在架构上,输入的每个token通过一系列的Transformer层(Trm)进行编码,最终得到每个token的深层表示(T1, T2,... TN)。BERT的这种双向性使得它非常适合捕捉复杂的语言模式。
  1. OpenAI GPT (Generative Pre-trained Transformer)
  • GPT模型使用的是左到右的Transformer,也就是说它只能从左到右来建模句子,这种方法适合生成任务(例如文本生成),因为生成的顺序是从前到后。在这种架构中,每个token只能依赖于它左边的token来进行表示。这种单向性使得GPT在语言生成任务上表现较好,但在需要全局信息的任务上(例如句子分类)可能不如BERT表现好。
  1. ELMo (Embeddings from Language Models)
  • ELMo使用的是两个独立训练的LSTM模型,一个从左到右建模,另一个从右到左建模。最终的token表示是左右两个LSTM表示的拼接结果(即左LSTM和右LSTM分别生成token的表示,然后合并)。这种方法可以捕获到某种程度的双向上下文信息,但与BERT不同,ELMo不是在每一层都能够同时处理左、右两边的上下文信息。ELMo通常作为特征提取器使用,而不是像BERT和GPT那样的微调模型。

总结:

  • BERT的主要优势在于其双向性,它可以在预训练的每一层同时看到左侧和右侧的上下文。
  • GPT是单向的(左到右),适合生成类任务。
  • ELMo虽然也考虑了双向信息,但它通过拼接独立训练的LSTM模型的结果来实现,而非像BERT那样完全整合左右上下文。

3.3 bert的预训练和微调

bert跟GPT-1一样,需要经过预训练和微调。前者在未标注数据集上训练,后者在下游任务数据集上训练。

1. 预训练(Pre-training)
  • 在预训练过程中,BERT使用了两个主要任务:

    • Mask LM(Masked Language Model) :输入的句子对(Sentence A 和 Sentence B)中,一部分token(如图中被标记为T1, TSEP等的token)被随机遮盖(masked),即用特殊的[MASK]符号替代。模型的任务是通过上下文预测这些被遮盖的token是什么。
    • NSP(Next Sentence Prediction):在这个任务中,输入的句子对中,50%的情况下,第二个句子B是实际紧跟着第一个句子A的下一句,另外50%的情况下,第二个句子是一个随机句子。模型需要判断句子B是否是句子A的下一个句子。
  • 输入 :图左边展示了BERT在预训练中的输入是无标签的句子对Sentence ASentence B。这些输入被编码为token序列,并用[CLS]标记句子的起始,用[SEP]分隔两个句子。每个token通过嵌入层E转换为向量表示。

  • 任务输出

    • Mask LM任务用于预测被遮盖的单词。
    • NSP任务用于判断句子A和句子B之间的关系。
2. 微调(Fine-Tuning)
  • 微调过程是在下游任务上对预训练好的BERT模型进行调整。在微调时,预训练得到的模型参数被用于初始化下游任务模型,并对所有参数进行微调。

  • 图的右边展示了几个具体的下游任务,例如:

    • MNLI(自然语言推理):用于句子对分类。
    • NER(命名实体识别):用于标记文本中的实体。
    • SQuAD(问答任务):用于从段落中找到问题的答案。
  • 输入 :在问答任务SQuAD的示例中,模型接收一个问题和对应的段落(通过[SEP]分隔),并用[CLS]标记句子的起始。

  • 输出:BERT通过微调后用于标记答案的起始位置和结束位置(Start/End Span),从段落中提取出答案。

3. 总结
  • BERT的预训练通过大规模无标签文本数据进行,使用的是Mask LM和NSP任务,这让模型能够捕捉更深层的上下文信息。
  • 经过预训练后,BERT可以通过微调很容易适应不同的下游任务,只需在输出层进行少量修改,便能在多种任务(如分类、问答、实体识别等)上取得良好效果。

3.4 bert的输入

输入的句子需要通过嵌入层处理成为模型可以理解的向量表示。BERT的输入表示由三部分嵌入向量的相加构成,分别是:

1. Token Embeddings(词嵌入)
  • 这是每个词或子词的向量表示。例如,在图中,"my"、"dog"、"is"等单词都被转换为相应的向量表示(E_my, E_dog, E_is 等等)。对于分词的情况(如"playing"被分成了"play"和"##ing"),每个子词也有自己的词嵌入。
  • **[CLS] **是一个特殊的标记,用于表示句子级任务的分类起点。
  • **[SEP] **是另一个特殊标记,用于区分两个句子或文本片段。
2. Segment Embeddings(句段嵌入)
  • BERT可以处理成对的句子,为了区分不同的句子,每个token还会有一个句段嵌入。图中:

    • E_A表示输入中的第一个句子的句段嵌入。
    • E_B表示输入中的第二个句子的句段嵌入。
  • 通过这些句段嵌入,模型可以知道哪些token属于同一个句子,哪些属于不同的句子。

3. Position Embeddings(位置嵌入)
  • Transformer模型本身没有内置的顺序信息,所以我们通过位置嵌入 来表示token在句子中的位置。每个位置都会有一个唯一的嵌入向量,比如图中E_0, E_1, E_2等表示不同位置的token。这样模型就能感知到词汇的顺序信息。

3.5 bert的输出

1. BERT 预训练模型的输出数据结构

BERT 预训练模型主要用于通过Masked Language Model (MLM)Next Sentence Prediction (NSP) 来生成语言表示。在预训练阶段,模型的输出结构包括以下几部分:

(1) 每个 Token 的隐藏状态向量
  • 结构:对于输入的每个 token,BERT 生成一个隐藏状态向量。这个向量代表了该 token 在双向上下文中的语义表示。
  • 维度[batch_size, sequence_length, hidden_size],其中 hidden_size 为 BERT-Base 时是 768,BERT-Large 时是 1024。
  • 用途:这些 token 的表示可以用于多种 NLP 任务,如问答任务、命名实体识别等。
(2) [CLS] 标记的输出
  • 结构[CLS] 是序列的第一个标记,用于表示整个序列的全局信息。在预训练中,[CLS] 的输出用于 Next Sentence Prediction (NSP)
  • 维度[batch_size, hidden_size],表示每个批次的序列都有一个对应的全局表示。
  • 用途 :在微调时,[CLS] 标记通常用于文本分类任务。
(3) [SEP] 标记的输出
  • 结构[SEP] 用于分隔两个句子或段落。在句子对任务中,[SEP] 标记的输出也有助于理解句子之间的关系。
  • 维度 :与每个 token 的输出相同,[batch_size, hidden_size]
  • 用途:在自然语言推理等句子对任务中,用于帮助模型区分两个句子。
(4) 层输出(Layer-wise Outputs)
  • 结构:BERT 的每一层都生成 token 表示,因此每一层都可以有一个输出。
  • 维度[batch_size, num_layers, sequence_length, hidden_size]num_layers 为 BERT-Base 时是 12,BERT-Large 时是 24。
  • 用途:某些任务可能会使用中间层的表示来增强模型效果。
(5) MLM 和 NSP 任务的输出
  • Masked Language Model (MLM) 输出:预测被遮掩的 token,输出大小为 [batch_size, sequence_length, vocab_size],其中 vocab_size 是词汇表大小。
  • Next Sentence Prediction (NSP) 输出:判断第二个句子是否为第一个句子的自然接续,输出大小为 [batch_size, 2],用于二分类。

2. BERT 微调模型的输出数据结构

在微调过程中,BERT 的输出结构根据具体的下游任务(如分类、问答、命名实体识别等)有所不同。微调时,BERT 会结合任务特定的输出层,以下是常见的输出结构:

(1) 文本分类任务
  • 输入:通常是单个句子或句子对。
  • 输出 :使用 [CLS] 标记的隐藏状态向量表示整个句子的语义,经过一个全连接层和 softmax 进行分类。
  • 维度[batch_size, num_classes],其中 num_classes 是分类的类别数。
  • 用途:情感分析、新闻分类等任务。
(2) 问答任务(SQuAD等)
  • 输入:问题和段落对。

  • 输出:预测答案的起始位置和结束位置。模型的输出是两个向量,一个表示起始位置的概率分布,另一个表示结束位置的概率分布。

  • 维度

    • 起始位置输出:[batch_size, sequence_length]
    • 结束位置输出:[batch_size, sequence_length]
  • 用途:从段落中精确定位答案的位置。

(3) 命名实体识别(NER)任务
  • 输入:一个句子序列。
  • 输出:为每个 token 生成一个标签(如人名、地点等),即逐个 token 进行分类。
  • 维度[batch_size, sequence_length, num_labels],其中 num_labels 是标签的种类数量。
  • 用途:实体识别任务,识别文本中的实体。

3. 简单举例

预训练模型:
  • 输入 :句子 "My dog is cute.",模型会为每个 token(My, dog, is, cute, .)生成一个 768 维的隐藏状态向量。
  • 输出 :隐藏状态向量 [[768], [768], [768], [768], [768]]CLS 输出 [768]
微调模型:
  • 文本分类任务 :输入句子 "The movie was great.",微调后,[CLS] 标记的输出经过 softmax 后可能会输出 [0.9, 0.1],表示 90% 的概率属于"正面情感"类别。
  • 问答任务 :输入问题 "Where is the Eiffel Tower?" 和段落,模型可能会输出起始位置 15,结束位置 17,表示答案的起止位置在段落的第 15 到第 17 个 token 之间。

总结

  • 预训练模型输出 :主要为每个 token 的隐藏状态表示,以及特殊标记 [CLS][SEP] 的输出。预训练时的输出用于任务如 MLM 和 NSP。
  • 微调模型输出 :根据具体任务,输出结构不同。文本分类任务使用 [CLS] 的向量作为全局表示,而问答任务则输出答案的起始和结束位置,NER任务逐个 token 输出实体标签。

BERT的预训练和微调模型结构灵活,可以通过不同的任务需求来调整其输出。

3.6 bert预训练的流程、数据集、损失计算

1. 训练流程

BERT 的预训练过程由以下两个主要任务组成,每一步训练中都需要执行这两个任务:

  • 掩码语言模型 (MLM):为了实现双向上下文的学习,BERT随机掩盖输入序列中15%的token,然后模型的任务是根据未掩盖的token来预测这些被掩盖的token。这与传统从左到右或从右到左的语言模型不同,它可以从双向上下文中学习信息。
  • 下一个句子预测 (NSP):为了让模型理解句子间的关系,BERT的预训练数据中包含一对句子,模型需要判断第二个句子是否紧跟第一个句子。这可以通过随机采样50%的句子对,其中50%是实际的下一句,另外50%是从语料库中随机选择的句子。

在每个预训练步骤中,BERT会同时进行MLM和NSP任务。具体步骤如下:

  1. 随机掩盖部分输入token并生成掩码序列。
  2. 让模型预测被掩盖的token(MLM任务)。
  3. 同时,让模型判断句子对的真实性(NSP任务)。
  4. 结合MLM和NSP的损失来更新模型参数。
2. 使用的数据集

BERT 的预训练数据集包含大量无标签的自然语言文本。BERT使用了两个主要的语料库:

  • BooksCorpus:包含大约800M词汇,由书籍文本组成的语料库。
  • English Wikipedia:BERT使用了大约2.5B(25亿)个词的维基百科文本,这些文本经过预处理后,去除了表格、列表等非文本内容,保留了连续的自然语言段落。

通过这些大规模的无标签数据集,BERT可以在不需要手动标注的情况下进行自监督学习。

3. 损失函数的计算

BERT的预训练过程中使用了两个任务的损失函数,并将它们结合起来:

  1. 掩码语言模型 (MLM) 的损失
  • 对于被随机掩盖的token,BERT通过一个分类器预测每个被掩盖token的词汇表ID,损失函数采用交叉熵损失 (Cross-Entropy Loss) 。假设有N个掩盖的token,模型在每个位置的输出是一个概率分布,表示每个token属于词汇表中每个单词的概率。交叉熵损失用于计算模型输出与真实token ID之间的差距。

  • 损失公式:L_MLM = - Σ log P(真实的词 | 掩盖的词),即模型对每个被掩盖词的预测与真实词之间的交叉熵损失的总和。

  • 下一个句子预测 (NSP) 的损失

    • 这个任务是一个二分类任务,模型需要预测第二个句子是否是第一个句子的自然接续。也使用了交叉熵损失来计算模型预测的二分类结果(是下一句或不是下一句)与真实标签之间的差距。
    • 损失公式:L_NSP = - (y_true * log P(y_pred) + (1 - y_true) * log(1 - P(y_pred))),即根据模型预测的句子对关系(y_pred)与真实标签(y_true)的交叉熵损失。
  • 总损失

BERT的总损失是MLM和NSP任务的损失之和,具体公式为:

  • L_total = L_MLM + L_NSP

通过优化这个总损失函数,BERT模型在每一步训练中同时优化两个任务,从而能够学习到更好的上下文表示和句子间的关系。

3.7 bert预训练模型能在哪些领域应用?

BERT 预训练完成后,被广泛应用于各种**自然语言处理(NLP)**领域。BERT通过其强大的双向编码能力,能为多种NLP任务提供强大的语言表示。这些任务覆盖了从分类、序列标注到生成式任务的广泛应用领域。以下是BERT主要应用的几个领域及其应用方式:

1. 文本分类

应用领域:情感分析、新闻分类、垃圾邮件检测等。

  • 如何应用 :在文本分类任务中,BERT模型的输入是单个句子或句子对(如情感分析的输入可以是一个句子)。模型通过微调将[CLS]标记对应的隐藏状态向量传递给一个分类层,经过softmax之后,输出预测的类别标签。由于BERT已经通过预训练学到了丰富的语言特征,微调后在分类任务上表现非常优异。
  • 案例
    • 情感分析:输入一个句子,判断句子的情感是正向、负向还是中立。
    • 新闻分类:将新闻文本输入BERT,分类为体育、科技、娱乐等类别。
2. 问答系统(Question Answering, QA)

应用领域:开放域问答、知识库问答、聊天机器人等。

  • 如何应用:在问答任务中,BERT的输入是问题和段落的句子对。模型通过微调学习如何在段落中找到答案的位置。输出是两个向量,一个用于预测答案的起始位置,另一个用于预测答案的结束位置。BERT在如SQuAD等问答任务上表现极为优异。
  • 案例
    • SQuAD(斯坦福问答数据集):给定一个问题和相关段落,BERT能够从段落中找到问题的答案。
    • 知识库问答:基于知识库的问答系统可以用BERT模型来提高精确性。
3. 自然语言推理(Natural Language Inference, NLI)

应用领域:文本蕴涵、句子相似性分析。

  • 如何应用:BERT在自然语言推理任务中的输入是两个句子,模型通过微调判断第二个句子是否可以从第一个句子推导出来,即是蕴涵、矛盾还是中性关系。这类任务可以用于文档理解、文本匹配等场景。
  • 案例
    • 文本蕴涵:判断两个句子之间是否存在推理关系,如"我在看电影"蕴涵"我在电影院"。
    • 句子相似性分析:比较两个句子的相似度,例如判断两篇文章是否讨论相同主题。
4. 命名实体识别(Named Entity Recognition, NER)

应用领域:实体识别、信息抽取、医学文本处理等。

  • 如何应用:BERT在命名实体识别任务中的输入是句子,模型通过微调在句子中的每个token上做标注,判断该token是否属于某个实体(如人名、地点、组织等)。这种应用在自动化信息抽取中非常常见。
  • 案例
    • 医疗文本处理:从医疗记录中提取药物名称、病人信息、症状等实体。
    • 法律文档:从法律文档中提取法律条款、合同中的相关方等。
5. 机器翻译

应用领域:跨语言翻译、语言模型迁移学习等。

  • 如何应用:尽管BERT并不是生成式模型,但它可以通过结合特定任务架构(如seq2seq模型)用于机器翻译任务。例如,通过结合BERT的编码器部分来增强翻译模型的理解能力,显著提升翻译质量。
  • 案例
    • 跨语言翻译:利用BERT的多语言版本(mBERT)进行不同语言之间的翻译任务,如英语到法语的翻译。
    • 低资源语言翻译:BERT可以通过迁移学习为低资源语言提供更好的翻译质量。
6. 文本生成任务

应用领域:摘要生成、对话系统生成。

  • 如何应用:尽管BERT是一个编码器模型,但可以结合解码器用于生成任务。通过在编码器上引入预训练的BERT,生成任务的效果可以显著提升。
  • 案例
    • 摘要生成:将文章输入BERT,通过解码器生成简洁的摘要。
    • 对话系统生成:在对话系统中,BERT可以用来生成合适的回复。
7. 文本匹配

应用领域:搜索引擎、推荐系统。

  • 如何应用:BERT可以用于文本匹配任务,即判断两个文本之间的相关性。例如,在搜索引擎中可以用来匹配用户查询与网页内容,从而提高搜索结果的相关性。
  • 案例
    • 搜索引擎:使用BERT来对用户查询与网页的相关度进行评分,返回最相关的搜索结果。
    • 推荐系统:在推荐系统中,BERT可以用于分析用户评论与商品描述之间的匹配度。
8. 跨语言任务(Multilingual Tasks)

应用领域:多语言理解、跨语言信息检索。

  • 如何应用:BERT的多语言版本(如mBERT)可以直接应用于多种语言的任务,而不需要为每种语言训练独立的模型。这种方式在跨语言的文本分类、问答、翻译等任务中非常有用。
  • 案例
    • 多语言文本分类:使用mBERT对多语言的文本进行分类,无需分别针对每种语言训练模型。
    • 跨语言信息检索:用户用一种语言查询,而从其他语言的文档中获取相关信息。
总结:

BERT通过预训练后的模型,在微调时可以快速适应多种自然语言处理任务,应用领域非常广泛。它可以直接用于分类、问答、推理、实体识别等任务,并且通过与其他模型的结合,BERT也能应用于生成任务、翻译任务和跨语言任务。在每个任务中,BERT的预训练模型都通过微调,结合具体的任务需求进行少量训练,从而达到优异的效果。

4 阅读材料:ViT

这个以前学过,就不介绍了,好的学习资料见霹雳吧啦Wz和李沐的B站视频。

相关推荐
Lilith的AI学习日记2 分钟前
什么是预训练?深入解读大模型AI的“高考集训”
开发语言·人工智能·深度学习·神经网络·机器学习·ai编程
聚客AI30 分钟前
PyTorch玩转CNN:卷积操作可视化+五大经典网络复现+分类项目
人工智能·pytorch·神经网络
程序员岳焱33 分钟前
深度剖析:Spring AI 与 LangChain4j,谁才是 Java 程序员的 AI 开发利器?
java·人工智能·后端
Q同学34 分钟前
TORL:工具集成强化学习,让大语言模型学会用代码解题
深度学习·神经网络·llm
柠檬味拥抱34 分钟前
AI智能体在金融决策系统中的自主学习与行为建模方法探讨
人工智能
禺垣35 分钟前
图神经网络(GNN)模型的基本原理
深度学习
智驱力人工智能1 小时前
智慧零售管理中的客流统计与属性分析
人工智能·算法·边缘计算·零售·智慧零售·聚众识别·人员计数
workflower1 小时前
以光量子为例,详解量子获取方式
数据仓库·人工智能·软件工程·需求分析·量子计算·软件需求
壹氿1 小时前
Supersonic 新一代AI数据分析平台
人工智能·数据挖掘·数据分析
柠石榴1 小时前
【论文阅读笔记】《A survey on deep learning approaches for text-to-SQL》
论文阅读·笔记·深度学习·nlp·text-to-sql