自2018年推出以来,伯特(Bert)改变了自然语言处理。它在情感分析,问题回答和语言推论等任务中表现良好。伯特使用双向训练和基于变压器的自我发挥,引入了一种新的方式来理解文本中的单词之间的关系。但是,尽管取得了成功,但伯特还是有局限性。它在计算效率,处理更长的文本并提供可解释性方面挣扎。这导致了Modernbert的发展,这是一个旨在应对这些挑战的模型。 ModernBert提高了处理速度,更好地处理更长的文本,并为开发人员提供了更大的透明度。在本文中,我们将探讨如何使用Modernbert进行情感分析,强调其特征和对Bert的改进。
学习目标- 贝特简要介绍以及为什么现代伯特出现
- > 了解现代的特征
- > >如何通过情感分析实施现代现代示例
- 现代伯特
- 的局限性
>本文是> > data Science Blogathon的一部分。 >目录
>什么是bert?问题- 什么是bert?
-
自2018年Google介绍以来,它代表Transformers的双向编码器表示,它一直是游戏规则改变的
Bert。Bert介绍了双向培训的概念,该概念使该模型可以通过在各个方向上查看周围的单词来理解上下文。这导致了许多NLP任务的模型的表现明显更好,包括问答,情感分析和语言推论。伯特的架构基于仅编码变压器,这些变压器使用自我注意的机制来权衡句子中不同单词的影响,并且只有编码器。这意味着他们只能理解和编码输入,并且不重建或生成输出。因此,伯特(Bert)擅长捕获文本中的上下文关系,使其成为近年来最强大和广泛采用的NLP模型之一。 什么是ModernBert? - 尽管伯特取得了突破性的成功,但它仍存在一定的局限性。其中一些是:
- >计算资源:Bertis是一种计算昂贵的,内存密集型的模型,用于实时应用程序或设置的构成,该设置没有易于访问,功能强大的计算基础结构。 >上下文长度:Bert具有固定长度的上下文窗口,该窗口成为处理远距离输入(如冗长的文档)的限制。
- 。 >可解释性:模型的复杂性使其不如简单模型来解释,从而导致对模型进行调试和执行修改的挑战。
- 常识推理:伯特缺乏常识推理,并且努力理解给定信息以外的上下文,细微差别和逻辑推理。
- > 现代伯特的某些独特特征是:
- >闪烁注意力
- >序列包装将文本的批处理重新组织为紧凑的形式,将较短的序列分组在一起以最大化硬件利用率。
- >使用Modernbert
- 培训过程将需要WANDB API密钥。您可以通过以下方式创建一个:>重量和偏见。> 步骤1:安装必要的库 >
- 安装与拥抱脸部变压器一起使用的库。>
- > train_bsz,val_bsz :指示培训和验证的批次大小。批量大小确定在更新模型内部参数之前处理的样品数量。 >
- > lr:学习率控制模型权重相对于损耗梯度的调整。
- betas :这些是Adam Optimizer的beta参数。
- > n_epochs :时代的数量,指示完整的通过整个培训数据集。 >
- eps :在分母中添加了一个小常数,以提高亚当优化器中的数值稳定性。
- > wd :代表体重衰减,这是一种正规化技术,可以防止过度适应大量的重量。
- >培训数据偏见:
它在英语和代码数据上进行了训练,因此它不能在其他语言或非代码文本上效率地执行。 > 复杂性 - :架构增强功能和新技术(如闪光灯注意力和旋转位置嵌入)为模型增添了复杂性,这可能会使实现和对特定任务进行微调。>>>>> > 推理速度
- :虽然闪光注意提高了推理速度,但使用完整的8,192个令牌窗口可能仍然较慢。> 结论
- > Modernbert非常适合情感分析和文本分类等任务。
> >它仍然有一些局限性,例如对英语和代码数据的偏见。
- 诸如拥抱脸和wandb之类的工具使实施和使用易于实现。 >
- 参考:
- >本文所示的媒体不归Analytics Vidhya拥有,并由作者酌情使用。
- 常见问题
> Modernbert通过结合更有效的算法(例如>> flash注意力 > > > > local-local-lobal inter-local-lobal Entercting注意)来解决这些局限性,从而优化了内存使用量并提高了处理速度。此外,ModernBert引入了增强功能,以通过集成诸如 旋转位置嵌入(ROPE)
>
>现代伯特基碱有22层和1.49亿个参数
>现代伯特·塔尔格(Modernbert-Large)有28层和3.95亿个参数
- 了解现代bert的特征
>这是一种开发的新算法,旨在在时间和记忆使用方面加快变压器模型的注意力机理。可以通过重新安排操作以及使用平铺和重新计算来加强注意力的计算。平铺有助于将大数据分解为可管理的块,并通过根据需要重新计算中间结果来减少记忆使用情况。这将二次记忆的使用量减少到线性,从而使长序列更有效。计算间接费用减少。它比传统的注意机制快2-4倍。闪光注意用于加快变压器模型的训练和推断。
局部 - 全球交替注意
> Modernbert最新颖的特征之一是交替关注,而不是全球关注。
>仅在每三层之后才能参加完整的输入。这是全球关注。
同时,所有其他层都有一个滑动窗口。在这个滑动窗口中,每个令牌都只能参加最接近的128个令牌。这是当地的关注。>
旋转位置嵌入(绳索)
旋转位置嵌入(绳索)是一种变压器模型技术,它使用旋转矩阵在序列中编码令牌的位置。它包含了绝对和相对位置信息,调整了注意机制以了解令牌之间的顺序和距离。绳索使用旋转矩阵编码令牌的绝对位置,还记下了相对位置信息或令牌之间的顺序和距离。
毫无定论和测序未加工和序列包装是旨在优化内存和计算效率的技术。
>通常用于找到最长的令牌,添加毫无意义的填充令牌以填充其余的较短序列以等于其长度。这增加了对无意义令牌的计算。毫无用处可以从序列中删除不必要的填充令牌,减少浪费的计算。
让我们实际上使用Modernbert实施情感分析。我们将使用ModernBert执行情感分析任务。情感分析是一种特定类型的文本分类任务,旨在将文本(例如,评论)分类为正或负面。
我们正在使用的数据集是IMDB电影评论数据集将评论分类为正情绪或负面情感。>
>注意:
>我已经使用了A100 GPU在Google Colab上更快地处理。有关更多信息,请参阅:
>通过将情感标签列(标签)重命名为“标签”并删除不必要的列来准备数据集。 >让我们使用f1_score作为度量来评估我们的模型。我们将定义一个函数来处理评估预测并计算其F1分数。这是我们将模型的预测与真实标签进行比较。 >定义超参数和其他配置,用于使用拥抱脸的训练记录来微调模型。让我们理解一些论点:
> Modernbert博客
MODERBERT文档
> Q5。什么是旋转电位嵌入?它们与固定位置嵌入有何不同?与仅捕获绝对位置的固定位置嵌入相反,旋转位置嵌入(绳索)使用旋转矩阵来编码绝对位置和相对位置。绳索在扩展序列中的性能更好。 Q6。 Modernbert的潜在应用是什么? Modernbert的某些应用可以在文本分类,情感分析,问答,指定性识别,法律文本分析,代码理解等领域中进行。 wandb api需要什么以及为什么需要?权重和偏见(W&B)是跟踪,可视化和共享ML实验的平台。它有助于跟踪模型指标,可视化实验数据,共享结果等等。 它有助于监视指标,例如准确性,可视化进度,调整超参数,跟踪模型的版本等。
>步骤2:使用load_dataset函数加载IMDB数据集#install libraries
!pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq
!pip install -U transformers>=4.48.0
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig
from datasets import load_dataset
>步骤3:tokenization
使用预先训练的现代基准词架令牌化数据集。此过程将文本转换为适合模型的数值输入。命令“ Tokenized_test_dataset [0]”将打印标记测试数据集的第一个示例,包括标记输入,例如输入ID和标签。
#Load the dataset
from datasets import load_dataset
imdb = load_dataset("imdb")
#print the first test sample
imdb["test"][0]
>步骤4:初始化现代伯特基本模型的情感分类
>
#install libraries
!pip install git+https://github.com/huggingface/transformers.git datasets accelerate scikit-learn -Uqq
!pip install -U transformers>=4.48.0
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, TrainingArguments, Trainer,AutoModelForMaskedLM,AutoConfig
from datasets import load_dataset
>步骤5:准备数据集
#Load the dataset
from datasets import load_dataset
imdb = load_dataset("imdb")
#print the first test sample
imdb["test"][0]
步骤6:定义计算指标
#initialize the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained("answerdotai/ModernBERT-base")
model = AutoModelForMaskedLM.from_pretrained("answerdotai/ModernBERT-base")
#define the tokenizer function
def tokenizer_function(example):
return tokenizer(
example["text"],
padding="max_length",
truncation=True,
max_length=512, ## max length can be modified
return_tensors="pt"
)
#tokenize training and testing data set based on above defined tokenizer function
tokenized_train_dataset = imdb["train"].map(tokenizer_function, batched=True)
tokenized_test_dataset = imdb["test"].map(tokenizer_function, batched=True)
#print the tokenized output of first test sample
print(tokenized_test_dataset[0])
>步骤7:设置培训参数
#initialize the model
config = AutoConfig.from_pretrained("answerdotai/ModernBERT-base")
model = AutoModelForSequenceClassification.from_config(config)
步骤8:模型培训
>使用培训师类执行模型培训和评估过程。
#data preparation step -
train_dataset = tokenized_train_dataset.remove_columns(['text']).rename_column('label', 'labels')
test_dataset = tokenized_test_dataset.remove_columns(['text']).rename_column('label', 'labels')
>步骤9:评估
在测试数据集上评估训练的模型。
import numpy as np
from sklearn.metrics import f1_score
# Metric helper method
def compute_metrics(eval_pred):
predictions, labels = eval_pred
predictions = np.argmax(predictions, axis=1)
score = f1_score(
labels, predictions, labels=labels, pos_label=1, average="weighted"
)
return {"f1": float(score) if score == 1 else score}
步骤10:保存微调模型
>保存微调模型和代币器以进行进一步的重复使用。
>
#define training arguments
train_bsz, val_bsz = 32, 32
lr = 8e-5
betas = (0.9, 0.98)
n_epochs = 2
eps = 1e-6
wd = 8e-6
training_args = TrainingArguments(
output_dir=f"fine_tuned_modern_bert",
learning_rate=lr,
per_device_train_batch_size=train_bsz,
per_device_eval_batch_size=val_bsz,
num_train_epochs=n_epochs,
lr_scheduler_type="linear",
optim="adamw_torch",
adam_beta1=betas[0],
adam_beta2=betas[1],
adam_epsilon=eps,
logging_strategy="epoch",
eval_strategy="epoch",
save_strategy="epoch",
load_best_model_at_end=True,
bf16=True,
bf16_full_eval=True,
push_to_hub=False,
)
>这里:0表示负面审查,1表示积极的审查。在我的新示例中,输出应为[0,1],因为无聊表示负面评论(0),而壮观的意见则表示为1,因此将以输出为1。
。
#Create a Trainer instance
trainer = Trainer(
model=model, # The pre-trained model
args=training_args, # Training arguments
train_dataset=train_dataset, # Tokenized training dataset
eval_dataset=test_dataset, # Tokenized test dataset
compute_metrics=compute_metrics, # Personally, I missed this step, my output won't show F1 score
)
现代伯特
虽然Modernbert对传统Bert进行了一些改进,但它仍然存在一些局限性:
>
钥匙要点现代伯特通过修复效率低下和有限的上下文处理等问题来改善BERT。
>它使用闪光注意力和旋转位置嵌入速度进行更快的处理和更长的文本支持。
> Q1。什么是仅编码的体系结构? Ans。 仅编码器架构过程输入序列而不生成输出序列,重点是理解和编码输入。 Bert的局限性是什么? BERT的某些局限性包括高计算资源,固定上下文长度,效率低下,复杂性以及缺乏常识推理。什么是注意机制?注意机制是一种允许模型专注于输入的特定部分以确定哪些部分或多或少重要的技术。什么是交替注意?这种机制在关注文本序列中的本地和全局环境之间交替。 当地的注意力突出了相邻的单词或短语,收集细粒度的信息,而全球注意力识别整个文本中的整体模式和关系。
以上是与现代伯特一起增强情感分析的详细内容。更多信息请关注PHP中文网其他相关文章!

介绍 恭喜!您经营一家成功的业务。通过您的网页,社交媒体活动,网络研讨会,会议,免费资源和其他来源,您每天收集5000个电子邮件ID。下一个明显的步骤是

介绍 在当今快节奏的软件开发环境中,确保最佳应用程序性能至关重要。监视实时指标,例如响应时间,错误率和资源利用率可以帮助MAIN

“您有几个用户?”他扮演。 阿尔特曼回答说:“我认为我们上次说的是每周5亿个活跃者,而且它正在迅速增长。” “你告诉我,就像在短短几周内翻了一番,”安德森继续说道。 “我说那个私人

介绍 Mistral发布了其第一个多模式模型,即Pixtral-12b-2409。该模型建立在Mistral的120亿参数Nemo 12B之上。是什么设置了该模型?现在可以拍摄图像和Tex

想象一下,拥有一个由AI驱动的助手,不仅可以响应您的查询,还可以自主收集信息,执行任务甚至处理多种类型的数据(TEXT,图像和代码)。听起来有未来派?在这个a


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3汉化版
中文版,非常好用