HuggingFace - Transformers
常见的自然语言处理任务
- 情感分析(sentiment-analysis):对给定的文本分析其情感极性
- 文本生成(text-generation):根据给定的文本进行生成
- 命名实体识别(ner):标记句子中的实体
- 阅读理解(question-answering):给定上下文与问题,从上下文中抽取答案
- 掩码填充(fill-mask):填充给定文本中的掩码词
- 文本摘要(summarization):生成一段长文本的摘要
- 机器翻译(translation):将文本翻译成另一种语言
- 特征提取(feature-extraction):生成给定文本的张量表示
- 对话机器人(conversional):根据用户输入文本,产生回应,与用户对话
自然语言处理的几个阶段
- 第一阶段:统计模型 + 数据(特征工程)
- 决策树、SVM、 HMM、CRF、TF-IDF、BOW
- 第二阶段:神经网络 + 数据
- Linear、CNN、RNN、GRU、LSTM、Transformer、Word2vec、Glove
- 第三阶段:神经网络 + 预训练模型 + (少量)数据
- GPT、BERT、RoBERTa、ALBERT、 BART、T5
- 第四阶段:神经网络 + 更大的预训练模型 + Prompt
- ChatGPT、Bloom、LLaMA、Alpaca、Vicuna、MOsS、文心一言、通义干问、星火
备注:
| 名称 | 全称 (英文) | 类型 | 主要用途 | 核心思想 |
|---|---|---|---|---|
| SVM | Support Vector Machine | 判别式模型 (分类器) | 文本分类、图像识别、生物信息学 | 寻找一个最优超平面,最大化不同类别数据点之间的边界(间隔)。 |
| HMM | Hidden Markov Model | 生成式概率模型 | 语音识别、词性标注、基因序列分析 | 描述一个含有隐含状态的马尔可夫过程。假设当前状态仅依赖于前一个状态,观测值仅依赖于当前状态。 |
| CRF | Conditional Random Field | 判别式概率模型 | 分词、命名实体识别、词性标注等序列标注任务 | 直接对给定观测序列条件下,整个标签序列的联合概率进行建模,可利用丰富的上下文特征。 |
| TF-IDF | Term Frequency-Inverse Document Frequency | 文本特征加权方法 | 信息检索、文本挖掘、关键词提取 | 衡量一个词对文档的重要性。权重随词在文档中的频率增高而增加,随其在语料库中的普遍性增高而下降。 |
| BOW | Bag-of-Words | 文本特征表示模型 | 文本分类、情感分析的基础表示 | 将文本表示为单词的集合,完全忽略其语法、词序,只记录每个词的出现频次。 |
| Linear | Linear Layer / Fully Connected Layer | 神经网络基础层 | 几乎所有神经网络模型的组成部分,用于分类或回归 | 对输入数据进行线性变换(加权求和),并通过激活函数引入非线性。每个神经元与上一层的所有神经元相连。 |
| CNN | Convolutional Neural Network | 神经网络架构 | 图像识别、文本分类、语音识别 | 利用卷积核(滤波器)提取输入数据的局部特征(如空间、时序结构),通过权重共享和池化降低参数复杂度。 |
| RNN | Recurrent Neural Network | 神经网络架构 | 处理序列数据(时间序列预测、机器翻译、文本生成) | 具有循环连接,使网络具有“记忆”功能,能够利用先前步骤的信息来处理序列中的当前元素。 |
| GRU | Gated Recurrent Unit | 循环神经网络的变体(门控机制) | 同RNN,但效果更好,用于处理长序列 | 通过引入更新门和重置门两个门控机制,选择性地记忆和遗忘信息,以解决RNN的梯度消失问题,结构比LSTM简单。 |
| LSTM | Long Short-Term Memory | 循环神经网络的变体(门控机制) | 处理长序列任务(文档摘要、语音识别) | 通过精心设计的输入门、遗忘门、输出门和细胞状态,有效地捕获长距离依赖关系,解决RNN的长期记忆问题。 |
| Transformer | Transformer | 神经网络架构(基于注意力) | 自然语言处理(如BERT, GPT)、计算机视觉 | 完全基于自注意力机制(Self-Attention)并行处理序列中的所有元素,高效地捕获全局上下文依赖关系,摒弃了循环结构。 |
| Word2Vec | Word to Vector | 词嵌入(词向量表示)模型 | 将单词转换为稠密向量,作为NLP任务的输入特征 | 通过浅层神经网络模型,基于“词的上下文相似则词义相似”的假设,从大量文本中学习词的分布式向量表示。 |
| GloVe | Global Vectors for Word Representation | 词嵌入(词向量表示)模型 | 同Word2Vec,作为词的预训练表示 | 结合了全局词-词共现统计信息与局部上下文窗口的优点,通过矩阵分解来学习词向量。 |
概述
官方网址:https://huggingface.co
- HuggingFace出品,当下最热、最常使用的自然语言处理工具包之一。
- 实现了大量的基于Transformer架构的主流预训练模型,不局限于自然语言处理模型,还包括图像、音频以及多模态的模型
- 提供了海量的预训练模型与数据集,同时支持用户自行传,社区完善,文档全面,三两行代码便可快速实现模型训练推理,上手简单
库介绍
- Transformers:核心库,模型加载、模型训练、流水线等
- Tokenizer:分词器,对数据进行预处理,文本到token序列的互相转换
- Datasets:数据集库,提供了数据集的加载、处理等方法
- Evaluate:评估函数,提供各种评价指标的计算函数
- PEFT:高效微调模型的库,提供了几种高效微调的方法,小参数量撬动大模型
- Accelerate:分布式训练,提供了分布式训练解决方案,包括大模型的加载与推理解决方案
- Optimum:优化加速库,支持多种后端,如Onnxruntime、OpenVino等
- Gradio:可视化部署库,几行代码快速实现基于Web交互的算法演示系统
基础组件
- Pipeline
- 流水线,用于模型推理,封装了完整的推理逻辑,包括数据预处理、模型预测及后处理
- Tokenizer
- 分词器,用于数据预处理,将原始文本输入转换为模型的输入,包括input_ids、attention mask等
- Model
- 模型,用于加载、创建、保存模型,对Pytorch中的模型进行了封装,同时更好的支持训练模型
- Datasets
- 数据集,用于数据集加载与预处理,支持加载在线与本地的数据集,提供了数据集层面的处理方法
- Evaluate
- 评估函数,用于对模型的结果进行评估,支持多种任务的评估函数
- Trainer
- 训练器,用于模型训练、评估,支持丰富的配置选项,快速启动模型训练流程
