ホームページ > テクノロジー周辺機器 > AI > Modernbertによる感情分析の強化

Modernbertによる感情分析の強化

Joseph Gordon-Levitt
リリース: 2025-03-09 09:46:11
オリジナル
941 人が閲覧しました

2018年に導入されて以来、Bertは自然言語処理を変革しました。センチメント分析、質問応答、言語の推論などのタスクでうまく機能します。双方向トレーニングと変圧器ベースの自己関節を使用して、バートはテキストの単語間の関係を理解するための新しい方法を導入しました。しかし、その成功にもかかわらず、バートには制限があります。計算効率、より長いテキストの処理、解釈可能性を提供することに苦労しています。これにより、これらの課題に対処するために設計されたモデルであるModernBertの開発が行われました。 ModernBertは処理速度を向上させ、より長いテキストをより良く処理し、開発者により透明性を高めます。この記事では、ModernBertをセンチメント分析に使用する方法を検討し、Bertの機能と改善を強調します。

学習目標

    バートの簡単な紹介と現代の存在が存在した理由
  • ModernBert
  • の特徴を理解してください
  • センチメント分析を介してモダンバートを実際に実装する方法
  • ModernBertの制限

この記事は、 データサイエンスブログの一部として公開されました。 目次

bertとは何ですか?

    Modernbertとは何ですか?質問
  • bertとは?
  • Transformersからの双方向エンコーダー表現の略であるBertは、2018年にGoogleが導入して以来、ゲームチェンジャーでした。Bertは、あらゆる方向に周囲の単語を調べてコンテキストを理解できるように、モデルがコンテキストを理解できるようにする双方向トレーニングの概念を導入しました。これにより、質問の回答、感情分析、言語の推論など、多くのNLPタスクのモデルのパフォーマンスが大幅に向上しました。 Bertのアーキテクチャは、文の異なる単語の影響を比較検討し、エンコーダのみを持っている自己触媒メカニズムを使用するエンコーダーのみの変圧器に基づいています。これは、入力のみを理解してエンコードし、出力を再構築または生成しないことを意味します。したがって、バートはテキストの文脈的関係をキャプチャするのに優れており、近年最も強力で広く採用されているNLPモデルの1つとなっています。
  • ModernBertとは?
  • バートの画期的な成功にもかかわらず、特定の制限があります。それらのいくつかは次のとおりです
    • 計算リソース:Bertisリアルタイムのアプリケーションまたはアクセス可能な強力なコンピューティングインフラストラクチャを持たないセットアップを考慮した計算高価でメモリ集約型モデル。
    • コンテキストの長さ:Bertには固定長のコンテキストウィンドウがあり、長いドキュメントのような長距離入力を処理することに制限となります。
    • 解釈可能性:モデルの複雑さにより、モデルよりも単純なモデルよりも解釈が少なくなり、モデルのデバッグと実行の課題につながります。
    • 常識の推論:バートは、特定の情報を超えて、文脈、ニュアンス、論理的推論を理解するために常識の推論と苦労を欠いています。
    • bert vs modernbert
    • Modernbertは、フラッシュの注意ローカルグロバル交互の注意などのより効率的なアルゴリズムを組み込むことにより、これらの制限に対処します。さらに、ModernBertは、より長いコンテキストの長さをサポートするために、ロータリー位置埋め込み(ロープ)などのテクニックを統合することにより、より長いコンテキストの長さをより効果的に処理するための機能強化を導入します。

      より透明で使いやすいことを目指すことにより、解釈可能性が向上し、開発者がモデルを特定のタスクに簡単にデバッグして適応させます。さらに、ModernBertは、常識の推論で進歩を取り入れており、提供された明示的な情報を超えて、文脈、ニュアンス、および論理的な関係をよりよく理解できるようにします。 Nvidia T4、A100、RTX 4090などの一般的なGPUに適しています。

      ModernBertは、Webドキュメント、コード、科学記事など、さまざまな英語のソースからのデータについてトレーニングされています。以前のエンコーダーで人気のある標準の20-40の繰り返しとは異なり、2兆個のユニークなトークンでトレーニングされています。

      次のサイズでリリースされています:

      22層と1億4900万のパラメーターを備えたModernBert-Base

      28層と3億9,500万のパラメーターを備えたModernBert-Large

      • ModernBertの特徴を理解する
      • ModernBertのユニークな特徴のいくつかは次のとおりです
      • フラッシュの注意

      これは、時間とメモリの使用に関してトランスモデルの注意メカニズムを高速化するために開発された新しいアルゴリズムです。注意の計算は、操作を再配置し、タイルと再構成を使用することにより、盛り上げることができます。タイル張りは、大きなデータを管理可能なチャンクに分解するのに役立ち、必要に応じて中間結果を再計算することにより、再構成がメモリの使用量を削減します。これにより、二次メモリの使用量が線形に削減され、長いシーケンスの方がはるかに効率的になります。計算オーバーヘッドが減少します。従来の注意メカニズムよりも2〜4倍高速です。フラッシュの注意は、変圧器モデルのトレーニングと推論を高速化するために使用されます。

      ローカルグローバル交互の注意

      Modernbertの最も斬新な特徴の1つは、完全なグローバルな注意ではなく、注意を交互にすることです。

      完全な入力は、3つのレイヤーごとにのみ参加します。これは世界的な注意です。

      その間、他のすべてのレイヤーにはスライドウィンドウがあります。このスライディングウィンドウでは、すべてのトークンが最寄りの128トークンのみに出席します。これは局所的な注意です。

        回転位置埋め込み(ロープ)

        回転位置埋め込み(ロープ)は、回転行列を使用してシーケンスでトークンの位置をコードするトランスモデル技術です。絶対的および相対的な位置情報が組み込まれ、トークン間の順序と距離を理解するための注意メカニズムを調整します。ロープは、回転マトリックスを使用してトークンの絶対位置をエンコードし、相対的な位置情報またはトークン間の順序と距離にも注意してください。

        upadding and Sequencing

        unpadding and Sequenceパッキングは、メモリと計算効率を最適化するために設計された技術です。

        通常、パディングは最長のトークンを見つけるために使用され、意味のないパディングトークンを追加して、残りの短いシーケンスをそれらの長さに等しく埋めます。これにより、意味のないトークンでの計算が増加します。貼り付けて、シーケンスから不必要なパディングトークンを削除し、無駄な計算を減らします。
          シーケンスパッキングは、テキストのバッチをコンパクトなフォームに再編成し、より短いシーケンスを一緒にグループ化してハードウェアの使用率を最大化します。
        • ModernBertを使用したセンチメント分析
        • モダンバートを使用してセンチメント分析を実質的に実装しましょう。 ModernBertを使用してセンチメント分析タスクを実行します。センチメント分析は、テキスト(例)を正または否定に分類することを目的とする特定のタイプのテキスト分類タスクです。
        使用しているデータセットはIMDBムービーレビューデータセットです。レビューを肯定的または否定的な感情に分類します。

        注:

        A100 GPUを使用して、Google Colabでより速い処理を行いました。詳細については、次を参照してください:AnswerDotai/ModernBert-Base

          トレーニングプロセスには、wandb apiキーが必要です。 viaを作成できます:
        • 重量とバイアス ステップ1:必要なライブラリをインストール フェイストランスを抱きしめるために必要なライブラリをインストールします。
        ステップ2:LOAD_DATASET関数を使用してIMDBデータセットをロードします

        コマンドIMDB [「テスト」] [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
ログイン後にコピー
ログイン後にコピー

Modernbertによる感情分析の強化ステップ3:トークン化

事前に訓練されたModernbertベーストークネイザーを使用してデータセットを閉鎖します。このプロセスは、テキストをモデルに適した数値入力に変換します。コマンド「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:センチメント分類のためにModernbert-Baseモデルを初期化

#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
  • :学習レートは、損失勾配に対するモデルの重みの調整を制御します。 ベータ
  • :これらは、Adam Optimizerのベータパラメーターです。
  • n_epochs :エポックの数。トレーニングデータセット全体を完全に通過することを示しています。
  • eps :Adam Optimizerの数値の安定性を改善するために、分母に小さな定数が追加されました。
  • wd
  • :大きな重量を罰することで過剰適合を防ぐための正規化手法である重量崩壊の略です。
  • ステップ8:モデルトレーニング トレーナークラスを使用して、モデルトレーニングと評価プロセスを実行します。
#initialize the model
config = AutoConfig.from_pretrained("answerdotai/ModernBERT-base")

model = AutoModelForSequenceClassification.from_config(config)
ログイン後にコピー

ステップ9:評価

データセットのテストでトレーニングされたモデルを評価します
#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')
ログイン後にコピー

Modernbertによる感情分析の強化

ステップ10:微調整されたモデルを保存
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}
ログイン後にコピー

微調整されたモデルとトークネイザーを保存して、さらに再利用します Modernbertによる感情分析の強化

ステップ11:レビューの感情を予測します

Modernbertによる感情分析の強化ここ:0は否定的なレビューを示し、1は肯定的なレビューを示します。私の新しい例では、退屈は否定的なレビュー(0)を示し、壮大な意見を示すため、出力は[0,1]である必要があります。したがって、1は出力として与えられます。

ModernBertの制限
#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,
)
ログイン後にコピー

Modernbertは従来のBertよりもいくつかの改善をもたらしますが、まだいくつかの制限があります。
  1. トレーニングデータバイアス:英語データとコードデータに登録されているため、他の言語や非コードテキストで効果的に実行できません。
  2. 複雑さ:フラッシュの注意や回転位置埋め込みなどのアーキテクチャの強化と新しい手法により、モデルに複雑さが加わります。
  3. 推論速度:フラッシュの注意は推論速度を改善しますが、完全な8,192トークンウィンドウを使用するとまだ遅くなる場合があります。
  4. 結論

ModernBertはBertの基礎を奪い、処理をより高速化し、長いテキストのより良い処理、解釈可能性を向上させて改善します。データバイアスや複雑さのトレーニングなどの課題に依然として直面していますが、NLPの大きな飛躍を表しています。 ModernBertは、感情分析やテキスト分類などのタスクの新しい可能性を開き、高度な言語の理解により効率的でアクセスしやすくなります。

キーテイクアウト

ModernBertは、非効率性や限られたコンテキスト処理などの問題を修正することにより、Bertを改善します。

フラッシュの注意と回転位置埋め込みを使用して、より速い処理と長いテキストサポートを使用します。
    ModernBertは、感情分析やテキスト分類などのタスクに最適です。
  • 英語やコードデータへのバイアスなど、まだいくつかの制限があります。 顔やワンドブを抱き締めるようなツールは、簡単に実装して使用できます。
  • 参考文献:
ModernBert Blog

moderbertドキュメント

    この記事に示されているメディアは、分析vidhyaが所有しておらず、著者の裁量で使用されています。
  • よくある質問
  • q1。エンコーダーのみのアーキテクチャとは? Ans。 エンコーダのみのアーキテクチャ出力シーケンスを生成せずに入力シーケンスを処理し、入力の理解とエンコードに焦点を当てています。 Bertの制限は何ですか? BERTのいくつかの制限には、高い計算リソース、固定されたコンテキストの長さ、非効率性、複雑さ、および常識推論の欠如が含まれます。注意メカニズムは何ですか?注意メカニズムは、モデルが入力の特定の部分に焦点を合わせて、どの部分が多かれ少なかれ重要であるかを判断できる手法です。交互の注意とは何ですか?このメカニズムは、テキストシーケンス内のローカルコンテキストとグローバルコンテキストに焦点を当てることを交互にします。 地元の注意は、隣接する単語やフレーズを強調し、細い情報を収集しますが、グローバルな注意はテキスト全体の全体的なパターンと関係を認識します。 q5。回転能力の埋め込みとは何ですか?固定された位置埋め込みとどう違うのですか?絶対位置のみをキャプチャする固定位置埋め込みとは対照的に、回転位置埋め込み(ロープ)は回転行列を使用して、絶対位置と相対位置の両方をエンコードします。ロープは、拡張されたシーケンスでより良く機能します。 ModernBertの潜在的なアプリケーションは何ですか? ModernBertのいくつかのアプリケーションは、テキスト分類、感情分析、質問の回答、指定された認識、法的テキスト分析、コード理解などの分野にあります。 Wandb APIが何を必要とするのか? Weights&Biase(W&B)は、ML実験を追跡、視覚化、および共有するためのプラットフォームです。モデルメトリックの追跡、実験データの視覚化、結果の共有などに役立ちます。 精度などのメトリックを監視したり、進行状況を視覚化したり、ハイパーパラメーターを調整したり、モデルのバージョンを追跡したりするのに役立ちます。

以上がModernbertによる感情分析の強化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート