Hugging Face教程 - 1、transformers模型库

参考Introduction - Hugging Face Course

参考Hugging Face教程 - 1、transformers模型库 - 知乎 (zhihu.com),建议大家直接去看这篇。本文是参照这一篇将自己想要学习的地方记录下来了。

Hugging Face主要内容

目录

Hugging Face主要内容

Transformer模型架构

编码器模型

解码器模型

序列到序列模型

架构和检查点


Hugging Face教程 - 1、transformers模型库_第1张图片

  • 1到4章介绍Transformers库的基本概念。学习这些内容之后,你应该(或可能或算是!)知道Transformers模型是如何工作以及通过 Hugging Face Hub使用模型微调一个数据集,并且将微调结果上传到huggingface hub上。(是吗?达到这个条件需要努力呀,少年)
  • 5到8章介绍软件包Datasets和Tokenizers的使用。学习这些内容之后,你应该(或可能或算是)具备自己处理常见NLP问题的能力。(常见NLP问题有这么简单吗?)
  • 9到12章(目前官网更新到了第9章,2022年08月21日10:12:56)探索transformers在语音处理和计算机视觉上的应用。同时,你将学会如何构建和共享模型demos,并会优化模型用于生产环境。学习这些内容之后,你可以将transformers应用到几乎所有机器学习问题中!(图神经网络、强化学习呢?靠你自己了,少年!)

Transformer模型架构

模型包括两个主要模块:

  • 编码器Encoder(下图左边):编码器接收输入,并输出得到其表示。模型给该模块的任务是通过学习获得对输入的语义理解。
  • 解码器Decoder(下图右边):编码的输入包括一个输入和编码器的输出,然后输出一个序列。模型给模块的任务是通过对输入的编码和输入得到有意义的输出。

Hugging Face教程 - 1、transformers模型库_第2张图片

根据任务,可以灵活选择编码器或解码器组成模型。

  • 只有编码器的模型:擅长自然语言理解任务,例如文本分类和命名实体识别。
  • 只有解码器的模型:擅长自然语言生成任务,例如文本生成。
  • 编码器和解码器或(序列到序列seq2seq)模型:擅长给定输入条件的文本生成任务,例如翻译和摘要。

编码器模型

编码器模型只使用Transformer架构的编码器模块。在架构的每一层,注意力层可以获得输入的完成表示。该类模型也被称为双向注意力模型和自编码模型。

该类模型的预训练任务,一般是通过对给定文本加上噪声的方式进行预训练(例如随机掩码部分单词,然后通过训练预测这些单词)。

编码器模型非常擅长获取文本的语义表示,在文本分类、自然语言处理(词分类)和抽取式问答任务中表示出色。

解码器模型

解码器模型只使用Transformer架构的解码器模块。在架构的每一层,一个给定单词只计算其所在句子中之前单词的注意力。该类模型也成为自回归模型。

解码器模型的预训练一般基于一段文本来预测下一个单词作为训练任务。

该类模型擅长文本生成类任务。

序列到序列模型

编码器-解码器模型(也被称为序列到序列模型、seq2seq模型)使用Transformer架构的编码器和解码器模块。在架构的每一层,编码器的注意力层计算全部输入的注意力,解码器的注意力层只计算单词所在句子中之前单词的注意力。

seq2seq2模型的预训练可以是编码器模型或解码器模型的预训练任务,只是会更显复杂一些(难度更大一些)。例如T5的预训练任务是随机将一个句子中的span用掩码替换,然后在输出中预测生成这个span。

seq2seq模型擅长基于一个给定输入文本得到一个新文本的任务,例如生成式摘要、翻译和生成式问答

模型 典型架构 任务
编码器架构Encoder ALBERT, BERT, DistilBERT, ELECTRA, RoBERTa 文本分类、命名实体识别和抽取式问答
解码器架构Decoder CTRL, GPT, GPT-2, Transformer XL 文本生成
Seq2seq架构Encoder-decoder BART, T5, Marian, mBART 摘要、翻译和生成式问答

架构和检查点

在深入Transformer模型之前,官网想在这里说明架构和检查点之间的区别。

  • 架构:表示模型的骨干结构,即模型中的每一层的定义和具体计算。
  • 检查点:可以被加载到某个模型架构的参数权重(通常是训练好的)。
  • 模型:和架构、检查点难以区分,模型可以认为是架构或检查点。官网教程一般是用架构和检查点来表示,很少使用模型来描述,以减少模糊。

例如,BERT是一个架构,而bert-base-cased是Google训练好的一个检查点。也可以表述为"BERT模型"或"bert-base-cased模型"。

你可能感兴趣的:(深度学习,人工智能)