UIE模型

UIE: Unified Structure Generation for Universal Information Extraction

研究背景

在信息抽取(IE)领域,由于抽取目标多样、多种不同的复杂异构结构以及领域的需求多变,导致当前IE难以统一建模。极大限制了IE系统高效架构开发、有效知识共享、快速跨域适配。

针对不同任务设定,需要针对特定领域schema建模,不同IE模型被单个训练、不共享,一个公司可能需要管理众多IE模型。

UIE提出生成式统一建模,通过统一文本到结构生成框架实现:

  • 统一地建模不同的IE任务;
  • 自适应地生成目标结构;
  • 从不同的知识来源统一学习通用的信息抽取能力

主要工作

  1. 统一建模:文本到结构生成

SSI(结构化模式提示器):统一prompt编码结构,即编码实体、关系、事件统一表示。

SEL(结构化抽取语言):将不同任务抽取结果统一用一种方式表达。

建模方式

  1. 预训练与微调
  • 预训练:大规模异构监督预训练

对三种预训练预料数据分别构建了对应的数据结构。并在预训练阶段将这三部分数据训练整合训练。分别构建3个与训练任务,使得模型能够有从文本到结构数据映射的能力,具备SEL的结构化能力以及基础的编码能力

  • 微调:拒识噪声注入的模型微调机制

随机采样SEL中不存在的SpotName类别和AssoName类别,即:(SPOTNAME, [NULL]) 和 (ASSONAME, [NULL]),学会拒绝生成错误结果的能力,如下图所示:

fintune

References

  1. 信息抽取大一统:百度中科院发布通用抽取模型UIE,刷新13个IE数据集SOTA!

预训练模型

评估

评估预训练语言模型的优劣通常有以下几种方法:

困惑度(Perplexity):困惑度是一种常用的评估语言模型的方法,它可以用来衡量模型对新数据的预测能力。困惑度越低,表示模型对数据的拟合效果越好。

语言模型下游任务:语言模型下游任务是指在特定任务上使用预训练语言模型进行微调,以便更好地适应该任务。通常,如果预训练语言模型在下游任务上表现良好,则说明该模型具有较好的泛化能力和语言理解能力。

人类评估:人类评估是指通过人工判断预训练语言模型生成的文本是否符合语法、逻辑和语义等方面的要求。虽然这种方法比较费时费力,但是它可以提供更加客观的评估结果。

对抗样本攻击:对抗样本攻击是指通过对预训练语言模型输入进行修改,使其输出错误结果或误导结果。通过对抗样本攻击,可以评估模型的鲁棒性和安全性。

多样性和一致性:多样性和一致性是指预训练语言模型在生成文本时是否有足够的创造力和一致性。如果模型生成的文本过于单调或者不一致,可能会影响其应用价值。

训练效率和存储空间:除了以上几个方面,评估预训练语言模型的优劣还需要考虑其训练效率和存储空间等因素。一般来说,训练效率和存储空间越小,表示该模型越实用

ref

  1. https://blog.csdn.net/pipisorry/article/details/131165857

DeBERTa系列模型

DeBERTa: Decoding-enhanced BERT with Disentangled Attention

研究背景

deberta-model

在Bert的基础上对模型进行改进,取得了不错的效果。

主要工作

deberta-1.0

  1. 解耦self attention

    • Disentangled Attention

      一种新的相对位置编码方法;
      这里的解耦是将位置信息和内容信息分别/交叉做attention,而这里的位置信息在Deberta中采用的是相对位置编码

    相对位置计算
    image-20230525114212503

  2. 考虑绝对位置的MLM任务

    • Enhanced Mask Decoder

    EMD
    BERT结构存在预训练和微调不一致的问题,即预训练时是将最终的隐状态输入softmax层预测masked tokens,而微调时根据下游任务的不同其结构存在差异。
    EMD将模型在预训练时的结构加以改变,其结构如上所示,其中H为之前Transformer层的隐状态,I可以是任何对于decoding有帮助的信息(例如:直接用H,绝对位置信息,之前EMD层的输出等)。
    通过信息增加有助于调整需要的特征。

  3. 预训练引入对抗训练

    • SIFT(scale invariant fine tuning)

    由于词向量的范数在不同的词和模型中有所不同,若模型较大,方差会变得更大,从而导致虚拟对抗训练的不稳定。
    所以在首先要对词向量归一化为随机向量,然后再对词向量施加扰动进行虚拟对抗训练。

References

  1. 还在用RoBERTa?快来看看DeBERTa吧!
  2. 预训练模型–DeBERTa

基础PLM系列

基础知识

CLS标识

References

  1. 关于BERT中的那些为什么
  2. 大模型面试八股

RoBERTa模型

  • 核心思想

通过更好地训练BERT可以达到超过其他新的预训练语言模型的效果

  • 核心改动
  1. 更大的 Batch Size (最大的 Batch Size 达到了 32K)
  2. 去掉 Next Sentence Prediction (在建模时需要注意这一点)
  3. 采用更大的预训练语料 (超过100G)
  4. Dynamic Masking (BERT在训练时可能会固定地把一个地方 Mask几遍)

XLNET模型

  • 研究背景

Bert采用AE(自编码)方法存在的问题:

  1. 有个不符合真实情况的假设:即被mask掉的token是相互独立的。
  2. BERT在预训练和精调阶段存在差异
  • 改进方案
  1. 对序列重新组合,让模型能够学习如何聚集所有位置的信息,Permutation Language Modeling Transformer-XL,主要用于解决长文本的问题
  2. Two-Stream Self-Attention,由于前面的排序重组会导致同一序列不知道预测什么内容的情况,为了解决这一问题模型加入了位置信息。
  3. 借鉴RNN,提出带有记忆能力的Transformer-XL
    Transformer-XL
  4. 增加了多片段建模的方法,判断两个token是否在一个片段中。具体是在计算注意力权重的同时针对query额外计算一个权重,加到原本的权重上去。
  5. 增大了预训练阶段使用数据的规模

References

  1. 张俊林:XLNet:运行机制及和Bert的异同比较
  2. 如何评价在20个任务上超越BERT的XLNet?
  3. 李rumor:Google XLNet原理解读

ERNIE模型

  • ERNIE 1.0

改进了masking的策略

  1. 基于短语的
  2. 基于实体的
  • ERNIE 2.0

核心:提出了一个预训练框架,可以在大型数据集上进行增量训练

  1. 预训练连续学习,能够在学习新的任务的时候记住之前任务的结果。具体实现,当前工作分别构建了词法级别、语法级别和语义级别的预训练任务
  2. encoder权重不共享
  3. 用不同的task id标记预训练任务

References

  1. ModifyAI:一文读懂最强中文NLP预训练模型ERNIE

ALBERT

  • 核心思想:

权重共享 输入层的优化 Sentence Order Prediction

  • 工作与总结:

ALBERT的核心思想是采用了两种减少模型参数的方法,比BERT占用的内存空间小很多,同时极大提升了训练速度,更重要的是效果上也有很大的提升!

  • 具体工作细节:
  1. Factorized Embedding Parameterization

    原Bert-base由12层Transformer中的encoder组成,经由bert获得的向量表示维度H与其一开始的Embedding层维度E一致,但是其实没有必要,E大小可以根据实际的词表大小调节,此时若要保持H维度大小的输出仅需E*H的变换即可。

  2. Cross-layer Parameter Sharing

    共享所有层的参数,主要是attention和FeedForward参数,该手段则是通过共享部分attention和Feedforward参数实现参数量的减少,此时效果会有所下降,但通过增加H的维度实现效果提升-推理速度不变

  3. Sentence Order Prediction

    NSP预训练任务将Topic Prediction和Coherence prediction融合起来了,只要判断两个句子是不是一个Topic的就能对预训练任务出个大概的结果了。论文通过将负样本换成同一篇文章中的两个逆序句子,来消除Topic prediction,提升预训练任务的学习效果。

参数量以及具体效果分析:

bert-base:108M
albert-base:89M(no-shared),12M(shared)

参数量减少了,但是并没有对模型推理速度这一块有较大的提升。主要还是减少了模型的参数量加快模型的训练,并没有对推理有太好的效果提升。

References

  1. Mr.robot:面试中理解ALBERT?(NLP面经)
  2. ALBERT 如何有效减少 BERT 的参数?

ELECTRA模型

  • 核心思想:采用对抗训练提升模型训练效果
  • 具体实现:通过 MLM 训练 Generator Discriminator 负责区分 Generator 生成的 token 是否被替代
  • 其他改进:采用权重共享

References

  1. 李rumor:ELECTRA: 超越BERT, 19年最佳NLP预训练模型

ViT模型

ViT: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

研究背景

ViT是2020年Google团队提出的将Transformer应用在图像分类的模型,虽然不是第一篇将transformer应用在视觉任务的论文,但是因为其模型“简单”且效果好,可扩展性强(scalable,模型越大效果越好),成为了transformer在CV领域应用的里程碑著作,也引爆了后续相关研究.

ViT原论文中最核心的结论是,当拥有足够多的数据进行预训练的时候,ViT的表现就会超过CNN,突破transformer缺少归纳偏置的限制,可以在下游任务中获得较好的迁移效果.

但是当训练数据集不够大的时候,ViT的表现通常比同等大小的ResNets要差一些,因为Transformer和CNN相比缺少归纳偏置(inductive bias),即一种先验知识,提前做好的假设。

CNN具有两种归纳偏置,一种是局部性(locality/two-dimensional neighborhood structure),即图片上相邻的区域具有相似的特征;一种是平移不变形(translation equivariance).当CNN具有以上两种归纳偏置,就有了很多先验信息,需要相对少的数据就可以学习一个比较好的模型

VIT-model

ViT-param

主要工作

  1. 输入:将图像拆成N个$p*p$的小patch,然后将每个patch当成是一个token;
  2. 具体到每个patch则是直接进行flatten之后直接经过线性映射得到D维Embedding表示;
  3. 这里的pos-embedding按照实验是直接采用1-D位置编码,按照从左到右的块排序

References

  1. Vision Transformer学习笔记1:ViT
  2. ViT(Vision Transformer)解析

MLP-Mixer

MLP-Mixer: MLP-Mixer: An all-MLP Architecture for Vision

研究背景

ViT作者团队出品,在CNN和Transformer大火的背景下,舍弃了卷积和注意力机制,提出了MLP-Mixer,一个完全基于MLPs的结构,其MLPs有两种类型,分别是channel-mixing MLPstoken-mixing MLPs,前者独立作用于image patches(融合通道信息),后者跨image patches作用(融合空间信息)。
mlp-mixer-model

主要工作

  1. 类似于ViT的模型结构训练方式,也需要将图像信息打成多个块;
  2. 提出两种MLPs结构
    token-mixing MLPs:允许信息在空间维度交互,独立作用于每一个channel,作用于列,融合不同token的特征
    channel-mixing MLPs:允许信息在通道交互,独立作用于每一个token,作用于行,融合不同channel的特征
    mlp-layer
  3. 因为token-mixing MLPs对输入tokens的顺序非常敏感,Mixer不适用positional encoding
  4. 每个Mixer Layer中token-mixing MLPs共享参数,channel-mixing MLPs同样共享参数
  5. 当在大规模数据集上预训练(100million images),Mixer可以接近CNNs和Transformers的SOTA表现,在ImageNet上达到87.94%的top-1 accuracy;当在更小规模数据集上预训练时(10million),结合一些regularization techniques,Mixer可以接近ViT的性能,但是稍逊于CNN

References

  1. ViT(Vision Transformer)解析

Swin-Transformer模型

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

研究背景

swin-transformer-model

  • 核心思路:披着CNN的Transformer。
  • 挑战:ViT性能并没有超过其他的工作;基于全局自注意力计算会导致计算量较大;强行分割patch其实破坏了原有的邻域结构,不再具有卷积的空间不变性。
  • 通过提出一种称为shifted window的方法来解决以上问题。

主要工作

  1. 结构大致介绍:

    • 在输入开始的时候,做了一个Patch Embedding,将图片切成一个个图块,并嵌入到Embedding。
    • 在每个Stage里,由Patch Merging和多个Block组成。
    • 其中Patch Merging模块主要在每个Stage一开始降低图片分辨率。
    • 而Block具体结构如上图所示,主要是LayerNorm,MLP,Window Attention 和 Shifted Window Attention组成
  2. Patch Embedding

     将图片划分为若干4*4的patch,使用线性变换来将patch变为Embedding向量,这一步和ViT是一样的。但是注意,这里的patch比ViT的14*14小了很多。
    
  3. Patch Merging

     该模块的作用是在每个Stage开始前做降采样,用于缩小分辨率,调整通道数 进而形成层次化的设计,同时也能节省一定运算量。每次降采样是两倍,因此在行方向和列方向上,间隔2选取元素。
    
  4. Window Attention

     传统的Transformer都是基于全局来计算注意力的,因此计算复杂度十分高。而Swin Transformer则将注意力的计算限制在每个窗口内,进而减少了计算量.
     主要计算区别在于:在原始计算Attention的公式中的Q,K时加入了相对位置编码。
    
  5. Shifted Window Attention

swa

    前面的Window Attention是在每个窗口下计算注意力的,为了更好的和其他window进行信息交互,Swin Transformer还引入了shifted window操作。
    由于这一操作会使得window变化,因此实际操作中通过对特征图移位,并给Attention设置mask来间接实现的。能在保持原有的window个数下,最后的计算结果等价。

References

  1. 图解Swin Transformer
  2. ViT学习笔记2:Swin Transformer

Swin-Transformer_v2模型

主要是解决模型上规模的问题,有几个主要的改动:

  1. 把每个Block里的LN从前面换到了后面,来解决深度增加之后训练不稳定的问题
  2. 把原来的scaled dot attention换成了scaled cosine attention,也是为了解决训练不稳定的问题(否则可能被某些像素对的相似度主导)。
  3. 改进相对位置偏置。V1版里这个模块是用一个规模跟窗口大小M相关可学习参数矩阵来处理的,如果预训练和finetune时M大小改变,就用插值来生成原来不存在的值。V2版首先是引入了一个小网络来取代参数矩阵,其次是将相对位置从线性空间换到了对数空间,通过取对数压缩空间差距来让M变化时的过渡更加顺滑

References

  1. ViT学习笔记2:Swin Transformer

CV中的特征维度变换

CNN的卷积核通道数 = 卷积输入层的通道数
CNN的卷积输出层通道数(深度)= 卷积核的个数

设输入图像尺寸为WxW,卷积核尺寸为FxF,步幅为S,Padding使用P,经过该卷积层后输出的图像尺寸为NxN:$N=\frac{W-F+2P}{S}+1$

池化计算:

$W=\frac{W-F}{S}+1,H=\frac{H-F}{S}+1$

空洞卷积变换计算

$W=\frac{W-d(F-1)+2p}{S}+1$,d为空洞率,正常卷积为1,F为卷积核大小

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

测试一下,怎么显示会出问题?
$$lim_{1\to+\infty}P(|\frac{1}{n}\sum_i^nX_i-\mu|<\epsilon)=1, i=1,…,n$$

0%