検索
ホームページテクノロジー周辺機器AIオンライン学習とパッシブアグレッシブアルゴリズムのガイド

導入

データは、ソーシャルメディア、金融取引、eコマースプラットフォームなどのソースから前例のないレートで生成されています。この継続的な情報ストリームを処理することは課題ですが、タイムリーで正確な決定を下す機会を提供します。金融取引、音声アシスタント、健康監視システムなどのリアルタイムシステムは、関連する最新の回答を提供するために、継続的なデータ処理に依存しています。

KNN、SVM、意思決定ツリーなどのバッチ学習アルゴリズムでは、トレーニング中にデータセット全体をメモリにロードする必要があります。巨大なデータセットを使用すると、これはますます非現実的になり、重要なストレージとメモリの問題につながります。これらは、リアルタイムデータを操作する場合にも非効率的です。

この問題により、膨大な量のデータを処理する際に効率的かつ正確なアルゴリズムが必要です。受動的な攻撃的なアルゴリズムは、この点で自分自身を際立たせます。バッチ学習アルゴリズムとは異なり、予測を行うために完全なデータセットでトレーニングする必要はありません。受動的な攻撃的なアルゴリズムは、その場でのデータから学習し、データセット全体をメモリに保存または処理する必要性を排除します。

学習目標

  • 膨大な量のデータを使用する際のオンライン学習とその重要性。
  • オンライン学習とバッチ学習アルゴリズムの違い。
  • 受動的攻撃アルゴリズムの背後にある数学的直観。
  • 異なるハイパーパラメーターと受動的攻撃的なアルゴリズムにおけるそれらの重要性。
  • パッシブアグレッシブアルゴリズムのアプリケーションとユースケース。
  • 受動的攻撃的なアルゴリズムの制限と課題。
  • Pythonにパッシブアグレッシブ分類器を実装して、リアルタイムRedditデータからヘイトスピーチを検出します。

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

目次

  • オンライン学習とは何ですか?
    • リアルタイムアプリケーションでのオンライン学習の利点
  • 受動的攻撃アルゴリズムの紹介
  • 受動的攻撃学習におけるヒンジ損失の役割
  • 受動的攻撃アルゴリズムの数学的定式化
    • 攻撃性パラメーターを理解する(c)
  • 受動的攻撃的なアルゴリズムにおける正則化の影響
  • 受動的攻撃的なアルゴリズムのリアルタイムアプリケーション
  • 制限と課題
  • ヘイトスピーチ検出モデルの構築
    • リアルタイムのデータ処理のために環境を設定します
    • ラベル付けのために前処理されたBERTモデルをセットアップします
  • よくある質問

オンライン学習とは何ですか?

インクリメンタルラーニングとも呼ばれるオンライン学習は、固定データセットで一度にトレーニングされるのではなく、新しいデータポイントごとにモデルが段階的に更新される機械学習パラダイムです。このアプローチにより、モデルは新しいデータに継続的に適応することができ、データが時間とともに進化する動的環境で特に役立ちます。従来のバッチ学習方法とは異なり、オンライン学習により、新しい情報が到着したときにリアルタイムの更新と意思決定が可能になります。

バッチとオンライン学習:比較概要

以下のバッチとオンライン学習の比較を調べましょう。

バッチ学習:

  • トレーニング方法:バッチ学習アルゴリズムは、固定データセットで一度にトレーニングします。トレーニングを受けたら、モデルは新しいデータで再訓練されるまで予測に使用されます。
  • 例:ニューラルネットワーク、サポートベクターマシン(SVM)、K-nearest Neighbors(KNN)。
  • 課題:再訓練では、データセット全体をゼロから処理する必要があります。これは、時間がかかり、計算的に高価な場合があります。これは、強力なGPUでも再訓練に時間がかかる可能性があるため、大規模で成長しているデータセットで特に困難です。

オンライン学習:

  • トレーニング方法:オンライン学習アルゴリズム新しいデータポイントごとにモデルを段階的に更新します。モデルは継続的に学習し、リアルタイムで新しいデータに適応します。
  • 利点:このアプローチは、大規模なデータセットと動的なデータストリームを処理するためにより効率的です。モデルは最小限の計算リソースで更新され、ゼロから再訓練する必要なく、新しいデータポイントを迅速に処理できます。
  • アプリケーション:オンライン学習は、株式市場分析、ソーシャルメディアストリーム、推奨システムなど、リアルタイムの意思決定を必要とするアプリケーションに有益です。

リアルタイムアプリケーションでのオンライン学習の利点

  • 継続的な適応:オンライン学習モデルは、到着時に新しいデータに適応し、詐欺検出システムなどのデータパターンが時間とともに進化する環境に最適です。これにより、ゼロから再訓練を必要とせずに、モデルが関連性と効果的なままであることが保証されます。
  • 効率:オンライン学習アルゴリズムでは、データセット全体で完全な再訓練を必要としないため、重要な計算時間とリソースを節約できます。これは、モバイルデバイスのような限られた計算能力を持つアプリケーションに特に役立ちます。
  • リソース管理:データを段階的に処理することにより、オンライン学習モデルは広範なストレージスペースの必要性を減らします。古いデータは、処理された後に破棄することができます。これにより、ストレージを効率的に管理し、システムを軽量に保つことができます。
  • リアルタイムの意思決定:オンライン学習は、リアルタイムの更新を可能にします。これは、推奨システムやリアルタイム株式取引などの最新情報に依存するアプリケーションにとって重要です。

受動的攻撃アルゴリズムの紹介

受動的攻撃アルゴリズムは、Crammer et.alによって最初に導入されました。 2006年、「オンラインパッシブアグレッシブアルゴリズム」というタイトルの論文を通じて。これらのアルゴリズムは、オンライン学習のカテゴリに分類され、主に分類タスクに使用されます。これらは、各データポイントから徐々に学習し、パラメーターを調整し、メモリからデータを破棄できるため、メモリ効率が高くなります。これにより、パッシブアグレッシブアルゴリズムは、巨大なデータセットを扱うときやリアルタイムアプリケーションを扱うときに特に役立ちます。さらに、迅速に適応する能力により、データ分布が時間とともに変化する動的環境でうまく機能することができます。

あなたは珍しい名前について疑問に思っているかもしれません。これには理由があります。アルゴリズムの受動部分は、現在のデータポイントが正しく分類されている場合、モデルが変化しないままであり、以前のデータポイントから得られた知識を保持することを意味します。一方、積極的な部分は、誤分類が発生した場合、モデルが重みを大幅に調整してエラーを修正することを示しています。

PAアルゴリズムがどのように機能するかをよりよく理解するために、バイナリ分類のコンテキストでその動作を視覚化しましょう。それぞれが2つのクラスのいずれかに属している一連のデータポイントがあると想像してください。 PAアルゴリズムは、データポイントをそれぞれのクラスに分割する分離ハイパープレーンを見つけることを目的としています。アルゴリズムは、ハイパープレーンの最初の推測から始まります。新しいデータポイントが誤分類されると、アルゴリズムは現在のハイパープレーンを積極的に更新して、新しいデータポイントが正しく分類されるようにします。一方、データポイントが正しく分類されると、ハイパープレーンの更新は必要ありません。

受動的攻撃学習におけるヒンジ損失の役割

パッシブアグレッシブアルゴリズムは、その損失関数としてヒンジ損失を使用し、アルゴリズムの重要なビルディングブロックの1つです。だからこそ、アルゴリズムの背後にある数学的な直観を掘り下げる前に、ヒンジの損失の動作を理解することが重要です。

ヒンジの損失は、特にサポートベクターマシン(SVM)などのトレーニング分類器に広く使用されています。

ヒンジ損失の定義

次のように定義されています。

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

  • Wはモデルの重量ベクトルです
  • xiはi番目のデータポイントの機能ベクトルです
  • Yiは、バイナリ分類の場合に1または-1のいずれかである可能性があるI番目のデータポイントの真のラベルです。

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

目的が2つのデータクラスを区別することであるバイナリ分類問題のケースを見てみましょう。 PAアルゴリズムは、決定境界とデータポイントの間のマージンを最大化することを暗黙的に目指しています。マージンは、データポイントと分離ライン/ハイパープレーンの間の距離です。これは、SVM分類器の動作に非常に似ており、ヒンジ損失も損失関数として使用しています。マージンが大きいほど、分類器がその予測に自信があり、2つのクラスを正確に区別できることを示しています。したがって、目標は、可能な限り少なくとも1つのマージンを達成することです。

方程式の理解

これをさらに分解し、方程式が最大マージンを達成するのにどのように役立つかを見てみましょう。

  • W・XI:これは、重量ベクターWとデータポイントXIのドット積です。これは、分類器の予測に対する信頼度を表しています。
  • yi *(w・xi):これは、署名されたスコアまたは分類器のマージンであり、サインは真のラベルyiによって決定されます。正の値は、分類器が正しいラベルを予測したことを意味しますが、負の値は間違ったラベルを予測したことを意味します。
  • 1 - yi *(w・xi) これは、目的のマージン(1)と実際のマージンの差を測定します。
  • max(0、1 - yi *(w・xi)):マージンが少なくとも1の場合、損失はゼロに等しくなります。それ以外の場合、損失はマージンの赤字とともに直線的に増加します。

簡単に言えば、ヒンジの損失は、誤った分類と、十分に自信がない正しい分類を罰します。データポイントが少なくとも単位マージンで正しく分類されると、損失はゼロです。それ以外の場合、データポイントがマージン内または誤分類されている場合、損失はマージンからの距離とともに直線的に増加します。

受動的攻撃アルゴリズムの数学的定式化

受動的攻撃分類器の数学的基盤は、着信データポイントの分類誤差に基づいて更新される重量ベクターWの維持を中心に展開します。アルゴリズムの詳細な概要は次のとおりです。

データセットが与えられた:

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

ステップ1:重量ベクターwを初期化します

ステップ2:新しいデータポイント(xi、yi)ごとに、xiisは特徴ベクトルとyiが真のラベルであり、予測ラベルは次のように計算されます。

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

ステップ3:ヒンジの損失を計算します

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

  • 予測されたラベルŷ_Iが正しく、マージンが少なくとも1の場合、損失は0です。
  • それ以外の場合、損失は1とマージンの差です。

ステップ4:次の更新ルールを使用して、重量ベクトルWを調整します

各データポイントx_iについて、l(w;(x_i、y_i))> 0(誤分類または不十分なマージン)の場合:

更新された重量ベクトルW_T 1は次のように与えられます。

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

l(w;(x_i、y_i))= 0(十分なマージンで正しく分類):

その後、重量ベクトルは変更されていません:

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

これらの方程式は、クラス間で最大マージンハイパープレーンを取得する目的で、制約された最適化問題を解決した後に出現することに注意してください。これらは元の研究論文から取られており、これらの派生はこの記事の範囲を超えています。

これらの2つの更新方程式は、パッシブアグレッシブアルゴリズムの中心です。これらの重要性は、より単純な用語で理解できます。一方では、アップデートでは、現在の例を十分に大きなマージンで正しく分類するために新しい重量値(W_T 1)が必要であり、したがって進行が行われます。一方、以前のラウンドで学んだ情報を保持するために、それは可能な限り古い重量(W_T)に近いままでなければなりません。

攻撃性パラメーターを理解する(c)

攻撃性パラメーターCは、パッシブアグレッシブアルゴリズムの最も重要なハイパーパラメーターです。誤分類が発生したときにアルゴリズムが重みをどのように更新するかを規定しています。

C値が高いと、より積極的な更新につながり、潜在的に学習が速くなりますが、過剰適合のリスクも高まります。アルゴリズムは、データのノイズや変動に敏感すぎる可能性があります。一方、Cの値が低いと、積極的な更新が少なくなり、アルゴリズムがノイズや外れ値に対してより堅牢になります。ただし、この場合、新しい情報に適応するのは遅く、学習プロセスが遅くなります。

アルゴリズムは、それぞれの新しいインスタンスから徐々に学習し、ノイズの多いサンプルへの過剰フィットを避けたいと考えています。その結果、私たちは2つの間のバランスをとるように努力しなければならず、モデルの安定性を維持し、過剰フィッティングを防ぎながら、重要な更新を行うことができます。ほとんどの場合、Cの最適値は、特定のデータセットと、学習速度と堅牢性の間の望ましいトレードオフに依存します。実際のシナリオでは、交差検証などの手法を使用して、Cの最適な値に到達するために使用されます。

受動的攻撃的なアルゴリズムにおける正則化の影響

実際のデータセットには、ほとんどの場合、ある程度のノイズまたは不規則性が含まれています。誤ったラベルのあるデータポイントにより、PAアルゴリズムが間違った方向に重みベクトルを劇的に変更する可能性があります。この単一の誤ったラベルの例は、その後のラウンドでいくつかの予測ミスをもたらし、モデルの信頼性に影響を与えます。

これに対処するために、データのノイズや外れ値に対してアルゴリズムをより堅牢にするのに役立つもう1つの重要なハイパーパラメーターがあります。誤分類の場合は、より穏やかな重量の更新を使用する傾向があります。これは正規化に似ています。アルゴリズムは、PA-IおよびPA-IIとして知られる正規化パラメーターに基づいて、2つのバリアントに分割されます。

これらは主にステップサイズ変数τの定義(正規化された損失とも呼ばれます)が異なります PA-Iの場合、損失は攻撃性パラメーターCの値に制限されます。

これの式は次のように与えられています。

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

PA-IIの場合、ステップサイズまたは正規化された損失は次のように記述できます。

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

パッシブアグレッシブ分類器のSklearn実装では、この正規化パラメーターは損失と見なされます。これは、使用する2つのPA-IとPA-IIのいずれかに基づいて、2つの値のいずれかに設定できます。 PA-Iバリアントを使用する場合は、PA-IIの場合、損失を「ヒンジ」に設定する必要があります。損失は「四角ヒンジ」に設定されます。

違いは、次のように簡単な用語で述べることができます。

  • PA-Iは、マージンの制約を緩和するより積極的なバリアントです(マージンは1未満になる可能性があります)が、誤った予測が発生した場合に損失を直線的にペナルティします。これにより、学習が速くなりますが、対応するよりも外れ値になりやすいです。
  • PA-IIは、より堅牢なバリアントであり、損失を二次的に罰し、ノイズの多いデータや外れ値により回復力を向けます。同時に、これにより、データの分散に適応することが保守的になり、学習が遅くなります。

繰り返しますが、これら2つの選択は、データセットの特定の特性に依存します。実際には、Cの値がさまざまなバリアントを選択する前に、両方のバリアントを実験することをお勧めします。

受動的攻撃的なアルゴリズムのリアルタイムアプリケーション

オンライン学習とパッシブアグレッシブアルゴリズムには、リアルタイムのデータ処理から適応システムまで、幅広いアプリケーションがあります。以下に、オンライン学習の最も影響力のあるアプリケーションのいくつかを見ていきます。

スパムフィルタリング

スパムフィルタリングは、スパムと正当な電子メールを区別することが目標であるテキスト分類の重要なアプリケーションです。 PAアルゴリズムの段階的に学習する能力は、新しいスパムトレンドに基づいてモデルを継続的に更新できるため、ここで特に有益です。

感情分析

感情分析には、ツイートや製品レビューなど、テキストで表される感情を決定することが含まれます。 PAアルゴリズムは、新しいスラング、表現、および感情の傾向に適応して、リアルタイムで感情を分析するモデルを構築するために使用できます。これは、タイムリーな洞察が非常に重要なソーシャルメディアの監視と顧客フィードバック分析で特に役立ちます。

ヘイトスピーチ検出

ヘイトスピーチ検出は、PAアルゴリズムが非常に役立つ可能性のあるもう1つの重要なアプリケーションです。ヘイトスピーチの新しいインスタンスから徐々に学習することにより、モデルは進化する言語パターンとコンテキストに適応できます。これは、Twitter、Facebook、Redditなどのプラットフォームで自動化されたモデレーションツールの有効性を維持し、より安全で包括的なオンライン環境を確保するために不可欠です。

詐欺検出

金融機関とオンラインサービスは、不正行為を検出するために、トランザクションとユーザーの行動を継続的に監視します。新しいトランザクションごとにモデルを更新するPAアルゴリズムの能力は、詐欺のパターンを識別するのに役立ち、進化する不正戦術に対する強い防御を提供します。

株式市場分析

金融市場の株価は非常に動的であり、モデルが新しい情報に迅速に対応することを要求しています。オンライン学習アルゴリズムを使用して、新しい市場データから段階的に学習することにより、株価を予測および分析し、トレーダーや投資家に利益をもたらすタイムリーで正確な予測をもたらすことができます。

推奨システム

オンライン学習アルゴリズムは、ユーザーインタラクションに基づいて推奨事項を動的に更新するために、大規模な推奨システムでも使用できます。このリアルタイムの適応性により、ユーザーの好みが変化するにつれて、推奨事項が関連性があり、パーソナライズされたままになります。

これらは、オンライン学習アルゴリズムが本当に輝く領域の一部です。ただし、それらの能力はこれらの領域に限定されません。これらは、異常検出、医療診断、ロボット工学など、さまざまな分野にも適用できます。

制限と課題

オンライン学習とパッシブアグレッシブアルゴリズムは、ストリーミングデータに対処し、迅速に変化するために適応する上で利点を提供しますが、欠点もあります。重要な制限のいくつかは次のとおりです。

  • パッシブアグレッシブアルゴリズムはデータを順次処理し、ノイズの多いまたは誤ったデータポイントの影響を受けやすくします。単一の外れ値は、モデルの学習に不均衡な影響を与える可能性があり、その結果、予測が不正確または偏ったモデルが生じます。
  • これらのアルゴリズムは、一度にデータのインスタンスのみが1つしか表示されないため、全体的なデータ分布と異なるデータポイント間の関係についての理解が制限されます。これにより、複雑なパターンを特定し、正確な予測を行うことが困難になります。
  • PAアルゴリズムはデータストリームからリアルタイムで学習するため、最新のデータに過度に依存し、以前のデータで観察されたパターンを無視または忘れている可能性があります。これにより、データ分布が時間とともに変化すると、一般化のパフォーマンスが低下する可能性があります。
  • 攻撃性パラメーターCの最適な値を選択することは困難な場合があり、多くの場合、実験が必要です。高い値は攻撃性を増加させ、過剰適合につながりますが、値が低いと学習が遅くなる可能性があります。
  • これらのアルゴリズムのパフォーマンスを評価することは非常に複雑です。データ分布は時間とともに変化する可能性があるため、固定されたテストセットでのモデルのパフォーマンスを評価することは一貫性がない場合があります。

ヘイトスピーチ検出モデルの構築

TwitterやRedditなどのソーシャルメディアプラットフォームは、毎日膨大な量のデータを生成し、オンライン学習アルゴリズムの理論的理解をテストするのに最適です。

このセクションでは、Redditのリアルタイムデータを使用して、ヘイトスピーチ検出アプリケーションをゼロから構築することにより、実用的なユースケースを示します。 Redditは、多様なコミュニティで有名なプラットフォームです。しかし、それはまた、有害で虐待的な有毒なコメントの挑戦に直面しています。 Reddit APIを使用して、これらの有毒コメントをリアルタイムで識別できるシステムを構築します。

この場合、すべてのデータを使用してモデルを一度にトレーニングすることは、膨大な量のデータのために不可能です。さらに、データ分布とパターンは時間とともに変化し続けます。したがって、メモリに保存せずに、その場でデータから学習できる受動的攻撃的なアルゴリズムの支援が必要です。

リアルタイムのデータ処理のために環境を設定します

コードの実装を開始する前に、最初にシステムをセットアップする必要があります。 Reddit APIを使用するには、最初にredditでアカウントを作成していない場合は、アカウントを作成する必要があります。次に、Redditアプリケーションを作成し、認証のためにAPIキーやその他の資格情報を取得します。これらの前提条件の手順が完了した後、ヘイトスピーチ検出モデルの作成を開始する準備が整いました。

コードのワークフローは次のようになります:

  • 「Praw」ライブラリを使用してReddit APIに接続します。
  • リアルタイムデータをストリーミングして、モデルに送ります。
  • ヘイトスピーチ検出タスクのために微調整されたBERTモデルを使用してデータにラベルを付けます。
  • 受動的な積極的な分類器を使用して、モデルを段階的にトレーニングします。
  • 目に見えないテストデータセットでモデルをテストし、パフォーマンスを測定します。

必要なライブラリをインストールします

最初のステップは、必要なライブラリをインストールすることです。

 PIPインストールPRAW SCIKIT-LEARNNLTKトランスフォーマートーチMatplotlib Seaborn Opendatasets

Redditを使用するには、Reddit APIラッパーである「Praw」ライブラリが必要です。また、テキスト処理には「nltk」、機械学習のための「scikit-learn」、視覚化には「マットプロトリブ」、「シーボーン」、「変圧器」、「トランス」と「トーチ」という単語の埋め込みと微調整されたbertモデルと `opendatasets` caggleのデータをロードするためにも必要です。

ライブラリをインポートし、Reddit APIをセットアップします

次のステップでは、必要なすべてのライブラリをインポートし、「PRAW」を使用してReddit APIへの接続をセットアップします。 Subredditsからのコメントをストリーミングするのに役立ちます。

 Reをインポートします
プロフをインポートします
トーチをインポートします
NLTKをインポートします
npとしてnumpyをインポートします
PDとしてパンダをインポートします
pltとしてmatplotlib.pyplotをインポートします
シーボーンをSNSとしてインポートします
odとしてopendatasetsをインポートします
nltk.corpusからstopwordsをインポートします
Sklearn.feature_extraction.textからtfidfvectorizerをインポートします
sklearn.linear_modelからpassiveaggressiveclassifierからインポート
sklearn.metrics Import arquircy_score、companis_matrix、classification_reportから
sklearn.model_selectionからimport train_test_splitから
Transformers Import Automodel、Automodelfors SequenceClassification、AutoTokenizerから
変圧器から、Bertfor SeckesenceClassification、Berttokenizer、TextClassificationPipelineからインポートします

#RedDit API資格情報
reddit_client_id = {your_client_id}
reddit_client_secret = {your_client_secret}
reddit_user_agent = {your_user_agent}

#RedDitAPI接続をセットアップします
reddit = praw.reddit(client_id = reddit_client_id、
                     client_secret = reddit_client_secret、
                     user_agent = reddit_user_agent)

Redditインスタンスを正常にセットアップするには、上記のプレースホルダーを資格情報に置き換えるだけで、行ってもいいです。

テキストをきれいにして前処理します

生のテキストデータを扱う場合、シンボル、ハッシュタグ、スラングワードなどを含む例があることが一般的です。これらは私たちのモデルには実用的ではないため、最初にテキストを削除するためにテキストをきれいにする必要があります。

 #stopwordsをダウンロードします
nltk.download( 'Stopwords')
stop_words = set(stopwords.words( '英語'))

#テキストをクリーニングして、ストップワードを削除します
def clean_text(テキスト):
    text = re.sub(r'http \ s | www \ s | https \ s '、' '、text、flags = re.multiline)
    text = re.sub(r '\@\ w | \#'、 ''、テキスト)
    text = re.sub(r '\ w'、 ''、テキスト)
    text = re.sub(r '\ d'、 ''、テキスト)
    text = re.sub(r '\ s'、 ''、テキスト)
    text = text.strip()
    text = '' .join([text.split()の単語のword.lower()not in top_words])))
    テキストを返します

上記のコードは、不要な単語、特殊文字、およびURLを削除することでコメントを前処理するヘルパー関数を定義します。

ラベル付けのために前処理されたBERTモデルをセットアップします

Redditから生のコメントをストリーミングしているとき、コメントが無効であるためにコメントが有毒かどうかはわかりません。教師付き分類を使用するには、まずデータにラベルを付ける必要があります。受信生のコメントにラベルを付けるための信頼できる正確なシステムを実装する必要があります。このために、ヘイトスピーチ検出のために微調整されたBERTモデルを使用します。このモデルは、コメントを2つのカテゴリに正確に分類します。

 model_path = "Junglelee/Bert-Toxic-Comment-Classification"
Tokenizer = berttokenizer.from_pretrained(model_path)
Model = BertforSequenceClassification.from_pretrained(model_path、num_labels = 2)

pipeline = textClassificationPipeline(Model = Model、Tokenizer = Tokenizer)

#ヘルパー関数テキストにラベルを付けます
def predict_hate_speech(テキスト):
    予測=パイプライン(テキスト)[0] ['label']
    return 1 prediction == 'Toxic' else 0#1 TOXICの場合は0、非毒性の場合は0

ここでは、トランスライブラリを使用してモデルパイプラインをセットアップします。次に、ヘルパー関数を定義して、特定のテキストがBERTモデルを使用して毒性があるか非毒性であるかを予測します。現在、モデルにフィードする例をラベル付けしました。

Bert Embeddingsを使用してテキストをベクターに変換します

分類器はテキスト入力で動作しないため、これらは最初に適切なベクトル表現に変換する必要があります。これを行うには、前提条件のBert Embeddingsを使用します。これにより、テキストをベクトルに変換し、トレーニングのためにモデルに供給できます。

 #埋め込みのために前処理されたbertモデルとトークンザーをロードします
model_name = "bert-base-uncased"
tokenizer = autotokenizer.from_pretrained(model_name)
bert_model = automodel.from_pretrained(model_name)
bert_model.eval()  

#ヘルパー機能BERT Embeddingsを取得します
def get_bert_embeding(テキスト):
    inputs = tokenizer(text、return_tensors = 'pt'、truncation = true、padding = true)
    torch.no_grad()を使用して:
        outputs = bert_model(** inputs)
    
    return outputs.last_hidden_​​state [:、0、:]。squeeze()。numpy()

上記のコードでは、テキストを撮影し、Bertトケンザーを使用してテキストをトークン化し、Bertモデルに渡して文の埋め込みを抽出します。テキストは現在、ベクターに変換されています。

リアルタイムRedditデータをストリーミングし、受動的攻撃分類器を訓練します

コメントをリアルタイムでストリーミングし、ヘイトスピーチを検出するために分類器を訓練する準備ができました。

 #subredditからコメントをストリーミングするヘルパー関数
def stream_comments(subreddit_name、batch_size = 100):
    subreddit = reddit.subreddit(subreddit_name)
    comment_stream = subreddit.stream.comments()
    
    batch = []
    comment_streamのコメントについて:
        試す:
            #着信テキストを掃除します 
            comment_text = clean_text(comment.body)
            #先のBERTモデルを使用してコメントにラベルを付けます
            label = predict_hate_speech(comment_text) 
            #現在のバッチにテキストとラベルを追加します
            batch.append((comment_text、label))
            
            len(batch)> = batch_size:
                IVERD BATCH
                batch = []
                
        eとしての例外を除く:
            print(f'error:{e} ')
 

#トレーニングラウンドの数を指定します
ラウンド= 10

#subredditを指定します
subreddit_name = 'fitness'

#パッシブアグレッシブ分類器を初期化します
clf = passiveaggressiveclassifier(c = 0.1、loss = 'hinge'、max_iter = 1、random_state = 37)


#コメントをストリーミングし、インクリメンタルトレーニングを実行します
num_roundsの場合、batch in enumerate(stream_comments(subreddit_name、batch_size = 100)):
    #希望するラウンドのために分類器をトレーニングする
    num_rounds ==ラウンドの場合:
        壊す
  
    #テキストとラベルを分離します
    batch_texts = [item [0] batchのアイテムの場合]
    batch_labels = [item [1] batchのアイテムの場合]
    
    #テキストのバッチをBert Embeddingsに変換します
    x_train_batch = np.array([get_bert_embedding(テキスト)batch_textsのテキストの]))
    y_train_batch = np.array(batch_labels)
    
    #現在のバッチでモデルをトレーニングします
    clf.partial_fit(x_train_batch、y_train_batch、classes = [0、1])
    print({len(batch_texts)}サンプルのバッチ上のf'trained。 ')
    
印刷( 'トレーニングが完了した')

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

上記のコードでは、最初にコメントをストリーミングするSubredDitを指定し、10回のトレーニングラウンドでPA分類子を初期化します。次に、コメントをリアルタイムでストリーミングします。最初に入る新しいコメントごとに、不要な単語を削除することができます。次に、前処理されたBertモデルを使用してラベル付けされ、現在のバッチに追加されます。

AlgorithmのPA-Iバージョンに対応するC = 0.1および損失= 'Hinge'を使用して、パッシブアグレッシブ分類器を初期化します。各バッチについて、 `partial_fit()`メソッドを使用して分類器をトレーニングします。これにより、モデルは処理前にメモリにバッチ全体を保存するのではなく、各トレーニングサンプルから徐々に学習できます。したがって、モデルが常に新しい情報に適応できるようにするため、リアルタイムアプリケーションに最適です。

モデルのパフォーマンスを評価します

Kaggle Toxic Tweets Datasetを使用して、モデルを評価します。このデータセットには、有毒または非毒性として分類されるいくつかのツイートが含まれています。

 #Kaggleからデータをダウンロードします
od.download( "https://www.kaggle.com/datasets/ashwiniyer176/toxic-tweets-dataset")
#データをロードします
data = pd.read_csv( "toxic-tweets-dataset/finalbalanceddataset.csv"、usecols = [1,2])[["tweet"、 "毒性"]]]

#テキストとラベルを分離します
test_data = data.sample(n = 100)
テキスト= test_data ['tweet']。apply(clean_text)
ラベル= test_data ['毒性']

#テキストをベクトルに変換します
x_test = np.array([get_bert_embedding(テキスト)テキストのテキストのための]))
y_test = np.array(ラベル)

#予測を行います
y_pred = clf.predict(x_test)

#モデルのパフォーマンスを評価します
精度=精度_score(y_test、y_pred)
conf_matrix = compans_matrix(y_test、y_pred)

print( "分類レポート:")
print(classification_report(y_test、y_pred))

#混乱マトリックスをプロットします
plt.figure(figsize =(7、5))
sns.heatmap(conf_matrix、 
            annot = true、 
            fmt = 'd'、 
            cmap = 'blues'、 
            cbar = false、 
            xticklabels = ["non-toxic"、 "Toxic"]、 
            yticklabels = ["non-toxic"、 "Toxic"])
            
plt.xlabel( '予測ラベル')
plt.ylabel( 'True Labels')
plt.title( 'Confrish Matrix')
plt.show() 

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

オンライン学習とパッシブアグレッシブアルゴリズムのガイド

最初に、テストセットをロードし、以前に定義した「clean_text」メソッドでクリーニングしました。テキストは、Bert埋め込みを使用してベクターに変換されます。最後に、テストセットで予測を行い、分類レポートと混乱マトリックスを使用して、さまざまなメトリックでモデルのパフォーマンスを評価します。

結論

オンライン学習アルゴリズムの力を調査し、完全な再訓練を必要とせずに、大規模なデータセットを効率的に処理し、リアルタイムデータに適応するパッシブアグレッシブアルゴリズムの能力に焦点を当てました。また、ヒンジ損失の役割、攻撃性ハイパーパラメーター(C)、および正則化がノイズと外れ値の管理にどのように役立つかについても説明しました。また、受動的攻撃分類器を使用してRedditのヘイトスピーチ検出モデルを実装する前に、実際のアプリケーションと制限を確認しました。読んでくれてありがとう、そして私たちの次のAIチュートリアルを楽しみにしています!

よくある質問

Q1。パッシブアグレッシブアルゴリズムの基礎となる基本原則は何ですか?

A.パッシブアグレッシブアルゴリズムの背後にある基本原則は、間違った予測が行われたときに重みを積極的に更新し、正しい予測が行われたときに学習した重みを受動的に保持することです。

Q2。攻撃性パラメーターCはPAアルゴリズムでどのような役割を果たしますか?

A. Cが高いと、アルゴリズムがより積極的になり、新しいデータに迅速に適応し、学習が速くなります。 Cが低い場合、アルゴリズムの攻撃性が低下し、更新が小さくなります。これにより、ノイズの多いサンプルに過度に適合する可能性が低くなりますが、新しいインスタンスに適応するのが遅くなります。

Q3。パッシブアグレッシブ分類器は、サポートベクターマシン(SVM)にどのように似ていますか?

A.両方とも、決定境界とデータポイントの間のマージンを最大化することを目指しています。どちらも、ヒンジ損失を損失関数として使用します。

Q4。バッチ学習アルゴリズムよりもオンライン学習アルゴリズムの利点は何ですか?

A.オンライン学習アルゴリズムは、巨大なデータセットで動作し、ストレージの制限がなく、ゼロからの再訓練を必要とせずに急速に変化するデータに簡単に適応できます。

Q5。受動的な積極的なアルゴリズムが役立つ可能性のある実際のシナリオは何ですか?

A.パッシブアグレッシブアルゴリズムは、スパムフィルタリング、感情分析、ヘイトスピーチ検出、リアルタイム株式市場分析、推奨システムなど、さまざまなアプリケーションで使用できます。

この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。

以上がオンライン学習とパッシブアグレッシブアルゴリズムのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
LLMSでのツール呼び出しLLMSでのツール呼び出しApr 14, 2025 am 11:28 AM

大規模な言語モデル(LLM)は人気が急増しており、ツールコール機能は単純なテキスト生成を超えて機能を劇的に拡大しています。 これで、LLMSは動的なUI作成や自律的なaなどの複雑な自動化タスクを処理できます。

ADHDゲーム、ヘルスツール、AIチャットボットがグローバルヘルスを変える方法ADHDゲーム、ヘルスツール、AIチャットボットがグローバルヘルスを変える方法Apr 14, 2025 am 11:27 AM

ビデオゲームは不安を緩和したり、ADHDの子供を焦点を合わせたり、サポートしたりできますか? ヘルスケアの課題が世界的に急増しているため、特に若者の間では、イノベーターはありそうもないツールであるビデオゲームに目を向けています。現在、世界最大のエンターテイメントインダスの1つです

AIに関する国連入力:勝者、敗者、および機会AIに関する国連入力:勝者、敗者、および機会Apr 14, 2025 am 11:25 AM

「歴史は、技術の進歩が経済成長を促進する一方で、それ自体が公平な所得分布を確保したり、包括的な人間開発を促進したりしないことを示しています」とUNCTADの事務総長であるRebeca Grynspanは前文で書いています。

生成AIを介した交渉スキルを学ぶ生成AIを介した交渉スキルを学ぶApr 14, 2025 am 11:23 AM

簡単な、Generative AIを交渉の家庭教師およびスパーリングパートナーとして使用してください。 それについて話しましょう。 革新的なAIブレークスルーのこの分析は、最新のAIに関する私の進行中のフォーブス列のカバレッジの一部であり、特定と説明を含む

テッドは、Openai、Google、Metaが法廷に向かい、自分自身とセルフィーから明らかにしますテッドは、Openai、Google、Metaが法廷に向かい、自分自身とセルフィーから明らかにしますApr 14, 2025 am 11:22 AM

バンクーバーで開催されたTED2025会議は、昨日4月11日の第36版を締めくくりました。サム・アルトマン、エリック・シュミット、パーマー・ラッキーを含む60か国以上の80人の講演者が登場しました。テッドのテーマ「人類が再考された」は、仕立てられたものでした

ジョセフ・スティグリッツは、AI独占権の中で迫り来る不平等を警告しているジョセフ・スティグリッツは、AI独占権の中で迫り来る不平等を警告しているApr 14, 2025 am 11:21 AM

ジョセフ・スティグリッツは、2001年にノーベル経済賞を受賞した経済学者であり、2001年にノーベル経済賞を受賞しています。スティグリッツは、AIが既存の不平等を悪化させ、いくつかの支配的な企業の手に統合した力を悪化させ、最終的に経済を損なうと仮定しています。

グラフデータベースとは何ですか?グラフデータベースとは何ですか?Apr 14, 2025 am 11:19 AM

グラフデータベース:関係を通じてデータ管理に革命をもたらす データが拡大し、その特性がさまざまなフィールドで進化するにつれて、グラフデータベースは、相互接続されたデータを管理するための変換ソリューションとして浮上しています。伝統とは異なり

LLMルーティング:戦略、テクニック、およびPythonの実装LLMルーティング:戦略、テクニック、およびPythonの実装Apr 14, 2025 am 11:14 AM

大規模な言語モデル(LLM)ルーティング:インテリジェントタスク分布によるパフォーマンスの最適 LLMSの急速に進化する風景は、それぞれが独自の長所と短所を備えた多様なモデルを提供します。 創造的なコンテンツGenに優れている人もいます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、