目录
>这是一种开发的新算法,旨在在时间和记忆使用方面加快变压器模型的注意力机理。可以通过重新安排操作以及使用平铺和重新计算来加强注意力的计算。平铺有助于将大数据分解为可管理的块,并通过根据需要重新计算中间结果来减少记忆使用情况。这将二次记忆的使用量减少到线性,从而使长序列更有效。计算间接费用减少。它比传统的注意机制快2-4倍。闪光注意用于加快变压器模型的训练和推断。
旋转位置嵌入(绳索)
>步骤3:tokenization
>步骤4:初始化现代伯特基本模型的情感分类
>步骤5:准备数据集
步骤6:定义计算指标
>步骤7:设置培训参数
在测试数据集上评估训练的模型。
>保存微调模型和代币器以进行进一步的重复使用。
首页 科技周边 人工智能 与现代伯特一起增强情感分析

与现代伯特一起增强情感分析

Mar 09, 2025 am 09:46 AM

自2018年推出以来,伯特(Bert)改变了自然语言处理。它在情感分析,问题回答和语言推论等任务中表现良好。伯特使用双向训练和基于变压器的自我发挥,引入了一种新的方式来理解文本中的单词之间的关系。但是,尽管取得了成功,但伯特还是有局限性。它在计算效率,处理更长的文本并提供可解释性方面挣扎。这导致了Modernbert的发展,这是一个旨在应对这些挑战的模型。 ModernBert提高了处理速度,更好地处理更长的文本,并为开发人员提供了更大的透明度。在本文中,我们将探讨如何使用Modernbert进行情感分析,强调其特征和对Bert的改进。

学习目标

    贝特简要介绍以及为什么现代伯特出现
  • >
  • 了解现代的特征
  • >
  • >如何通过情感分析实施现代现代示例
  • 现代伯特
  • 的局限性

>本文是> > data Science Blogathon的一部分。 >目录

>什么是bert?问题
  • 什么是bert?
  • 自2018年Google介绍以来,它代表Transformers的双向编码器表示,它一直是游戏规则改变的 Bert。Bert介绍了双向培训的概念,该概念使该模型可以通过在各个方向上查看周围的单词来理解上下文。这导致了许多NLP任务的模型的表现明显更好,包括问答,情感分析和语言推论。伯特的架构基于仅编码变压器,这些变压器使用自我注意的机制来权衡句子中不同单词的影响,并且只有编码器。这意味着他们只能理解和编码输入,并且不重建或生成输出。因此,伯特(Bert)擅长捕获文本中的上下文关系,使其成为近年来最强大和广泛采用的NLP模型之一。
  • 什么是ModernBert?
  • 尽管伯特取得了突破性的成功,但它仍存在一定的局限性。其中一些是:
    • >计算资源:Bertis是一种计算昂贵的,内存密集型的模型,用于实时应用程序或设置的构成,该设置没有易于访问,功能强大的计算基础结构。
    • >上下文长度:Bert具有固定长度的上下文窗口,该窗口成为处理远距离输入(如冗长的文档)的限制。
    • >可解释性:模型的复杂性使其不如简单模型来解释,从而导致对模型进行调试和执行修改的挑战。
    • 常识推理:伯特缺乏常识推理,并且努力理解给定信息以外的上下文,细微差别和逻辑推理。
    > Bert vs Modernbert

    > Modernbert通过结合更有效的算法(例如>> flash注意力 > > > > local-local-lobal inter-local-lobal Entercting注意)来解决这些局限性,从而优化了内存使用量并提高了处理速度。此外,ModernBert引入了增强功能,以通过集成诸如 旋转位置嵌入(ROPE)>的技术来更有效地处理更长的上下文长度。 >它通过目标更透明和用户友好来增强可解释性,从而使开发人员更容易调试和使模型适应特定任务。此外,Modernbert将常识推理的进步结合在一起,使其能够更好地理解上下文,细微差别和逻辑关系,而不是提供的明确信息。它适用于NVIDIA T4,A100和RTX 4090等常见的GPU。 Modernbert接受了来自各种英语来源的数据,包括Web文档,代码和科学文章的培训。它经过了2万亿个独特令牌的训练,与以前的编码器中流行的标准20-40重复不同。

    >以以下大小发布:

    >

    >现代伯特基碱有22层和1.49亿个参数

    >

    现代伯特·塔尔格(Modernbert-Large)有28层和3.95亿个参数

      了解现代bert的特征
    • >
    • 现代伯特的某些独特特征是:
    • >闪烁注意力

    >这是一种开发的新算法,旨在在时间和记忆使用方面加快变压器模型的注意力机理。可以通过重新安排操作以及使用平铺和重新计算来加强注意力的计算。平铺有助于将大数据分解为可管理的块,并通过根据需要重新计算中间结果来减少记忆使用情况。这将二次记忆的使用量减少到线性,从而使长序列更有效。计算间接费用减少。它比传统的注意机制快2-4倍。闪光注意用于加快变压器模型的训练和推断。

    局部 - 全球交替注意

    > Modernbert最新颖的特征之一是交替关注,而不是全球关注。

    >仅在每三层之后才能参加完整的输入。这是全球关注。

    同时,所有其他层都有一个滑动窗口。在这个滑动窗口中,每个令牌都只能参加最接近的128个令牌。这是当地的关注。

    >

      旋转位置嵌入(绳索)

      旋转位置嵌入(绳索)是一种变压器模型技术,它使用旋转矩阵在序列中编码令牌的位置。它包含了绝对和相对位置信息,调整了注意机制以了解令牌之间的顺序和距离。绳索使用旋转矩阵编码令牌的绝对位置,还记下了相对位置信息或令牌之间的顺序和距离。

      毫无定论和测序

      未加工和序列包装是旨在优化内存和计算效率的技术。>

      >通常用于找到最长的令牌,添加毫无意义的填充令牌以填充其余的较短序列以等于其长度。这增加了对无意义令牌的计算。毫无用处可以从序列中删除不必要的填充令牌,减少浪费的计算。
      • >序列包装将文本的批处理重新组织为紧凑的形式,将较短的序列分组在一起以最大化硬件利用率。
      • >使用Modernbert
      的情感分析

      让我们实际上使用Modernbert实施情感分析。我们将使用ModernBert执行情感分析任务。情感分析是一种特定类型的文本分类任务,旨在将文本(例如,评论)分类为正或负面。

      我们正在使用的数据集是IMDB电影评论数据集将评论分类为正情绪或负面情感。

      >

      >注意:

      >我已经使用了A100 GPU在Google Colab上更快地处理。有关更多信息,请参阅:

      • 培训过程将需要WANDB API密钥。您可以通过以下方式创建一个:>重量和偏见。> 步骤1:安装必要的库
      • >
      • 安装与拥抱脸部变压器一起使用的库。>

      >步骤2:使用load_dataset函数加载IMDB数据集

      命令imdb [“ test”] [0]将在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:定义计算指标

      >让我们使用f1_score作为度量来评估我们的模型。我们将定义一个函数来处理评估预测并计算其F1分数。这是我们将模型的预测与真实标签进行比较。 

      #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:设置培训参数

      >定义超参数和其他配置,用于使用拥抱脸的训练记录来微调模型。让我们理解一些论点:

      • > train_bsz,val_bsz :指示培训和验证的批次大小。批量大小确定在更新模型内部参数之前处理的样品数量。
      • >
      • > lr:学习率控制模型权重相对于损耗梯度的调整。
      • betas :这些是Adam Optimizer的beta参数。
      • > n_epochs :时代的数量,指示完整的通过整个培训数据集。
      • >
      • eps :在分母中添加了一个小常数,以提高亚当优化器中的数值稳定性。
      • > wd :代表体重衰减,这是一种正规化技术,可以防止过度适应大量的重量。
      #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:保存微调模型

      >保存微调模型和代币器以进行进一步的重复使用。

      >

      步骤11:预测评论的情感
      #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进行了一些改进,但它仍然存在一些局限性:>
      1. >培训数据偏见:它在英语和代码数据上进行了训练,因此它不能在其他语言或非代码文本上效率地执行。>
      2. 复杂性
      3. :架构增强功能和新技术(如闪光灯注意力和旋转位置嵌入)为模型增添了复杂性,这可能会使实现和对特定任务进行微调。>>>>> >
      4. 推理速度
      5. :虽然闪光注意提高了推理速度,但使用完整的8,192个令牌窗口可能仍然较慢。>
      6. 结论
      Modernbert以更快的处理,更好地处理长期处理和增强的可解释性来取得伯特的基础,并改善了基础。尽管它仍然面临诸如训练数据偏见和复杂性之类的挑战,但它代表了NLP的重大飞跃。 Modernbert为情感分析和文本分类等任务开辟了新的可能性,使高级语言理解更加有效,更易于访问。

      >

      钥匙要点

      现代伯特通过修复效率低下和有限的上下文处理等问题来改善BERT。

      >它使用闪光注意力和旋转位置嵌入速度进行更快的处理和更长的文本支持。
      • > Modernbert非常适合情感分析和文本分类等任务。>
      • >它仍然有一些局限性,例如对英语和代码数据的偏见。
      • 诸如拥抱脸和wandb之类的工具使实施和使用易于实现。
      • >
      • 参考:

      > Modernbert博客 MODERBERT文档

      • >本文所示的媒体不归Analytics Vidhya拥有,并由作者酌情使用。
      • 常见问题
      > Q1。什么是仅编码的体系结构? Ans。 仅编码器架构过程输入序列而不生成输出序列,重点是理解和编码输入。 Bert的局限性是什么? BERT的某些局限性包括高计算资源,固定上下文长度,效率低下,复杂性以及缺乏常识推理。什么是注意机制?注意机制是一种允许模型专注于输入的特定部分以确定哪些部分或多或少重要的技术。什么是交替注意?这种机制在关注文本序列中的本地和全局环境之间交替。 当地的注意力突出了相邻的单词或短语,收集细粒度的信息,而全球注意力识别整个文本中的整体模式和关系。

      > Q5。什么是旋转电位嵌入?它们与固定位置嵌入有何不同?与仅捕获绝对位置的固定位置嵌入相反,旋转位置嵌入(绳索)使用旋转矩阵来编码绝对位置和相对位置。绳索在扩展序列中的性能更好。

      Q6。 Modernbert的潜在应用是什么? Modernbert的某些应用可以在文本分类,情感分析,问答,指定性识别,法律文本分析,代码理解等领域中进行。 wandb api需要什么以及为什么需要?权重和偏见(W&B)是跟踪,可视化和共享ML实验的平台。它有助于跟踪模型指标,可视化实验数据,共享结果等等。 它有助于监视指标,例如准确性,可视化进度,调整超参数,跟踪模型的版本等。

      >

以上是与现代伯特一起增强情感分析的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
开始使用Meta Llama 3.2 -Analytics Vidhya 开始使用Meta Llama 3.2 -Analytics Vidhya Apr 11, 2025 pm 12:04 PM

Meta的Llama 3.2:多模式和移动AI的飞跃 Meta最近公布了Llama 3.2,这是AI的重大进步,具有强大的视觉功能和针对移动设备优化的轻量级文本模型。 以成功为基础

10个生成AI编码扩展,在VS代码中,您必须探索 10个生成AI编码扩展,在VS代码中,您必须探索 Apr 13, 2025 am 01:14 AM

嘿,编码忍者!您当天计划哪些与编码有关的任务?在您进一步研究此博客之前,我希望您考虑所有与编码相关的困境,这是将其列出的。 完毕? - 让&#8217

AV字节:Meta' llama 3.2,Google的双子座1.5等 AV字节:Meta' llama 3.2,Google的双子座1.5等 Apr 11, 2025 pm 12:01 PM

本周的AI景观:进步,道德考虑和监管辩论的旋风。 OpenAI,Google,Meta和Microsoft等主要参与者已经释放了一系列更新,从开创性的新车型到LE的关键转变

向员工出售AI策略:Shopify首席执行官的宣言 向员工出售AI策略:Shopify首席执行官的宣言 Apr 10, 2025 am 11:19 AM

Shopify首席执行官TobiLütke最近的备忘录大胆地宣布AI对每位员工的基本期望是公司内部的重大文化转变。 这不是短暂的趋势。这是整合到P中的新操作范式

GPT-4O vs OpenAI O1:新的Openai模型值得炒作吗? GPT-4O vs OpenAI O1:新的Openai模型值得炒作吗? Apr 13, 2025 am 10:18 AM

介绍 Openai已根据备受期待的“草莓”建筑发布了其新模型。这种称为O1的创新模型增强了推理能力,使其可以通过问题进行思考

视觉语言模型(VLMS)的综合指南 视觉语言模型(VLMS)的综合指南 Apr 12, 2025 am 11:58 AM

介绍 想象一下,穿过​​美术馆,周围是生动的绘画和雕塑。现在,如果您可以向每一部分提出一个问题并获得有意义的答案,该怎么办?您可能会问:“您在讲什么故事?

如何在SQL中添加列? - 分析Vidhya 如何在SQL中添加列? - 分析Vidhya Apr 17, 2025 am 11:43 AM

SQL的Alter表语句:动态地将列添加到数据库 在数据管理中,SQL的适应性至关重要。 需要即时调整数据库结构吗? Alter表语句是您的解决方案。本指南的详细信息添加了Colu

阅读AI索引2025:AI是您的朋友,敌人还是副驾驶? 阅读AI索引2025:AI是您的朋友,敌人还是副驾驶? Apr 11, 2025 pm 12:13 PM

斯坦福大学以人为本人工智能研究所发布的《2025年人工智能指数报告》对正在进行的人工智能革命进行了很好的概述。让我们用四个简单的概念来解读它:认知(了解正在发生的事情)、欣赏(看到好处)、接纳(面对挑战)和责任(弄清我们的责任)。 认知:人工智能无处不在,并且发展迅速 我们需要敏锐地意识到人工智能发展和传播的速度有多快。人工智能系统正在不断改进,在数学和复杂思维测试中取得了优异的成绩,而就在一年前,它们还在这些测试中惨败。想象一下,人工智能解决复杂的编码问题或研究生水平的科学问题——自2023年

See all articles