【人工智能】Transformers之Pipeline(十三):填充蒙版(fill-mask)

CSDN 2024-08-28 08:01:01 阅读 53

目录

一、引言 

二、填充蒙版(fill-mask)

2.1 概述

2.2 技术原理

2.2.1 BERT模型的基本概念

2.2.2 BERT模型的工作原理

2.2.3 BERT模型的结构 

2.2.4 BERT模型的应用

2.2.5 BERT模型与Transformer的区别和联系

2.3 应用场景

2.4 pipeline参数

2.4.1 pipeline对象实例化参数

2.4.2 pipeline对象使用参数 ​​​​​​​

2.4.3 pipeline返回参数 ​​​​​​​

2.5 pipeline实战

2.6 模型排名

三、总结


一、引言 

 pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks)。共计覆盖32万个模型

今天介绍NLP自然语言处理的第一篇:填充蒙版(fill-mask),在huggingface库内有1.2万个填充蒙版(fill-mask)模型,最典型且必须掌握的模型当属google的bert。

二、填充蒙版(fill-mask)

2.1 概述

掩码mask语言建模的任务是掩码句子中的一些单词,并预测哪些单词应该替换这些掩码mask。当我们从统计上建模所训练的语言时,这些模型非常有用。。

2.2 技术原理

最典型的模型是google发布的BERT,‌‌BERT模型是一种基于‌Transformer的深度学习模型,主要用于自然语言处理任务,通过预训练和微调过程,在多种NLP任务中取得了显著的成绩

2.2.1 BERT模型的基本概念

‌BERT‌(Bidirectional Encoder Representations from Transformers)是一种预训练语言模型,由‌Google于2018年发布。它通过联合左侧和右侧的上下文信息,从未标记文本中预训练出一个深度双向表示模型。BERT模型的核心在于其使用Transformer的编码器部分,能够捕捉文本的双向上下文信息,这在之前的语言模型中是不曾实现的。

2.2.2 BERT模型的工作原理

‌预训练阶段‌:BERT通过两个主要任务进行预训练:‌遮蔽语言模型(‌MLM)‌和‌下一句预测(‌NSP)‌。在MLM任务中,模型被训练来预测输入句子中被遮蔽的词;而在NSP任务中,模型需要判断两个句子是否是连续的文本序列。‌微调阶段‌:预训练完成后,BERT模型可以通过添加任务特定的输出层来进行微调,以适应不同的NLP任务,如情感分析、问答、命名实体识别等。微调过程利用了预训练阶段学到的语言表征,使得模型能够快速适应新的任务并取得优异的性能。 

2.2.3 BERT模型的结构 

BERT模型由多层Transformer编码器堆叠而成,每一层都包含‌自注意力机制和‌前馈神经网络。这种深层结构使得BERT能够捕捉从浅层语法特征到深层语义特征的不同级别的语言信息。

2.2.4 BERT模型的应用

BERT在多种NLP任务上取得了当时的最先进结果,包括但不限于情感分析、问答、命名实体识别等。由于其出色的性能和广泛的适用性,BERT成为了NLP领域的一个重大突破,为后续的语言模型研究和发展奠定了基础。

2.2.5 BERT模型与Transformer的区别和联系

‌Transformer‌是一种基于注意力的神经网络架构,而‌BERT‌是Transformer的一个具体应用实例,专注于自然语言处理任务。BERT利用了Transformer的编码器部分,通过预训练和微调过程,在多种自然语言处理任务中表现优异。

2.3 应用场景

语言理解评估:通过评估模型在遮蔽的单词预测上的准确性,可以衡量模型对语言的理解能力。词汇学习:帮助模型学习词汇关系,例如同义词、上下文适用的词汇等。文本生成:在内容创作、文本自动生成等领域,根据上下文填充适当的词汇,生成连贯、合理的文本段落。文本完成与修正:自动完成文本或纠正拼写错误、语法错误,特别是在自动文本编辑器或写作辅助工具中。个性化推荐系统:在内容推荐中,理解用户查询或上下文后,填充特定的关键词来优化推荐内容。翻译与多语言处理:在机器翻译中,通过上下文预测单词,有助于提高翻译的准确性和自然性。情感分析和语义理解:通过预测特定情境下的词汇来更精确地理解文本的情感或意图。教育工具:用于语言学习软件中,帮助学生学习新词汇,通过填空练习来加强记忆。

2.4 pipeline参数

2.4.1 pipeline对象实例化参数

model(PreTrainedModel或TFPreTrainedModel)— 管道将使用其进行预测的模型。 对于 PyTorch,这需要从PreTrainedModel继承;对于 TensorFlow,这需要从TFPreTrainedModel继承。tokenizer ( PreTrainedTokenizer ) — 管道将使用 tokenizer 来为模型编码数据。此对象继承自 PreTrainedTokenizer。modelcard(<code>str或ModelCard可选)— 属于此管道模型的模型卡。frameworkstr可选)— 要使用的框架,"pt"适用于 PyTorch 或"tf"TensorFlow。必须安装指定的框架。taskstr,默认为"")— 管道的任务标识符。num_workersint可选,默认为 8)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的工作者数量。batch_sizeint可选,默认为 1)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的批次的大小,对于推理来说,这并不总是有益的,请阅读使用管道进行批处理。args_parser(ArgumentHandler,可选) - 引用负责解析提供的管道参数的对象。deviceint可选,默认为 -1)— CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,设置为正数将在关联的 CUDA 设备 ID 上运行模型。torch_dtypestrtorch.dtype可选) - 直接发送model_kwargs(只是一种更简单的快捷方式)以使用此模型的可用精度(torch.float16,,torch.bfloat16...或"auto"binary_outputbool可选,默认为False)——标志指示管道的输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)进行。top_kint可选,默认为 5)— 要返回的预测数量。targetsstrList[str]可选)— 传递后,模型会将分数限制在传递的目标上,而不是在整个词汇表中查找。如果提供的目标不在模型词汇表中,则它们将被标记化,并使用第一个生成的标记(带有警告,并且可能会更慢)。tokenizer_kwargsdict可选)——传递给标记器 (tokenizer) 的关键字参数的附加词典。

2.4.2 pipeline对象使用参数 ​​​​​​​

argsstrList[str])— 一个或多个带有掩码标记的文本(或一个提示列表)。targetsstrList[str]可选)— 传递后,模型会将分数限制在传递的目标上,而不是在整个词汇表中查找。如果提供的目标不在模型词汇表中,则它们将被标记化,并使用第一个生成的标记(带有警告,并且可能会更慢)。top_kint可选)——传递时,覆盖要返回的预测数量。

2.4.3 pipeline返回参数 ​​​​​​​

sequencestr)——与掩码标记预测相对应的输入。scorefloat)——相应的概率。token ( int) — 预测的 token id(用于替换被屏蔽的 token id)。token_str ( str) — 预测的标记(用于替换被屏蔽的标记)。

2.5 pipeline实战

采用pipeline,使用google的bert中文版模型bert-base-chinese对文本进行补全。

import os

os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"

os.environ["CUDA_VISIBLE_DEVICES"] = "2"

from transformers import pipeline

fill_masker = pipeline(model="google-bert/bert-base-chinese", task="fill-mask")code>

output=fill_masker("我是一个[MASK].")

print(output)

执行后,自动下载模型文件并进行识别:

2.6 模型排名

在huggingface上,我们将填充蒙版(fill-mask)模型按下载量从高到低排序,总计1.2万个模型,排名第一的当属google-bert/bert-base-uncased。

三、总结

本文对transformers之pipeline的填充蒙版(fill-mask)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline使用文中的2行代码极简的使用NLP中的填充蒙版(fill-mask)模型。

期待您的3连+关注,如何还有时间,欢迎阅读我的其他文章:

《Transformers-Pipeline概述》

【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用

《Transformers-Pipeline 第一章:音频(Audio)篇》

【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)

《Transformers-Pipeline 第二章:计算机视觉(CV)篇》

【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)

【人工智能】Transformers之Pipeline(六):图像分类(image-classification)

【人工智能】Transformers之Pipeline(七):图像分割(image-segmentation)

【人工智能】Transformers之Pipeline(八):图生图(image-to-image)

【人工智能】Transformers之Pipeline(九):物体检测(object-detection)

【人工智能】Transformers之Pipeline(十):视频分类(video-classification)

【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)

【人工智能】Transformers之Pipeline(十二):零样本物体检测(zero-shot-object-detection)​​​​​​​

《Transformers-Pipeline 第三章:自然语言处理(NLP)篇》

【人工智能】Transformers之Pipeline(十三):填充蒙版(fill-mask)

【人工智能】Transformers之Pipeline(十四):问答(question-answering)

【人工智能】Transformers之Pipeline(十五):总结(summarization)

【人工智能】Transformers之Pipeline(十六):表格问答(table-question-answering)

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)

【人工智能】Transformers之Pipeline(二十一):翻译(translation)

【人工智能】Transformers之Pipeline(二十二):零样本文本分类(zero-shot-classification)

《Transformers-Pipeline 第四章:多模态(Multimodal)篇》

【人工智能】Transformers之Pipeline(二十三):文档问答(document-question-answering)

【人工智能】Transformers之Pipeline(二十四):特征抽取(feature-extraction)

【人工智能】Transformers之Pipeline(二十五):图片特征抽取(image-feature-extraction)

【人工智能】Transformers之Pipeline(二十六):图片转文本(image-to-text)

【人工智能】Transformers之Pipeline(二十七):掩码生成(mask-generation)

【人工智能】Transformers之Pipeline(二十八):视觉问答(visual-question-answering)



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。