少数ショット学習における SetFit によるテキスト分類

少数ショット学習における SetFit によるテキスト分類

翻訳者 |陳俊

レビュー | Chonglou

この記事では、「少量学習」の概念を紹介しテキスト分類で広く使用されているSetFit法に焦点を当てます。

従来の機械学習 (ML)

教師あり機械学習では、正確な予測を行う能力を磨くために、大規模なデータセットを使用してモデルをトレーニングしますトレーニングプロセスが完了したら、テストデータを使用してモデルの予測結果を取得できます。しかし、この従来の教師あり学習アプローチには、エラーのない大量のトレーニング データ セットが必要になるという重大な欠点があります。しかし、すべての分野でこのようなエラーのないデータセットを提供できるわけではありません。そこで、「少数サンプル学習」という概念が生まれました。

Sentence Transformer の微調整( SetFit )について詳しく説明する前に、自然言語処理 ( NLP )の重要な側面である「少量学習」について簡単に確認しておく必要があります

少数ショット学習

少数ショット学習とは、限られたトレーニング データ セットを使用してモデルをトレーニングすることを意味します。モデルは、サポート セットと呼ばれるこれらの小さなセットから知識を獲得できます。このタイプの学習は、トレーニング データ内の類似点と相違点を識別するために、少数ショット モデルを学習させることを目的としています。たとえば、モデルに特定の画像を猫か犬に分類するように指示するのではなく、さまざまな動物の共通点と相違点を理解するように指示します。ご覧のとおり、このアプローチは入力データの類似点と相違点を理解することに重点を置いています。そのため、メタ学習や学習のための学習も呼ばれます

少数ショット学習のサポート セットは、 k方向nショット学習とも呼ばれることに留意してください。ここで、「 k 」はサポートセット内のカテゴリの数を表します。たとえば、バイナリ分類では、 k2に等しくなります。一方、「 n 」はサポート セット内の各クラスで利用可能なサンプルの数を表します。たとえば、陽性クラスに10 個のデータ ポイントがあり陰性クラスに10 個のデータ ポイントがある場合、 n は10になります。要約すると、このサポート セットは双方向の10ショット学習として説明できます。

少数ショット学習の基本を理解したので、 SetFit の使用方法を簡単に学習し、それを e コマース データセットのテキスト分類に適用してみましょう。

SetFitアーキテクチャ

Hugging Faceと Intel Labs のチーム共同で開発したSetFit は少数ショットの写真分類用のオープンソース ツールです。 SetFit に関する包括的な情報は、プロジェクト リポジトリ リンク (https://github.com/huggingface/setfit?ref=hackernoon.com) で参照できます。

出力の場合、 SetFit は顧客レビュー ( CR ) 感情分析データセットからカテゴリごとに 8 つの注釈付き例のみを使用します。結果は、3,000 個の例の完全なトレーニング セットで微調整されたRoBERTa Largeの結果に匹敵しますサイズの点では、わずかに最適化されたRoBERTaモデルはSetFitモデルの 3 倍の大きさであることは強調する価値があります。次の図は SetFit アーキテクチャを示しています。

画像ソース: https://www.sbert.net/docs/training/overview.html?ref=hackernoon.com

SetFitによる高速学習

SetFitのトレーニング速度は非常に速く、効率的です。 GPT-3T-FEWなどの大型モデル比較しても、その性能は非常に競争力があります次の図を参照してください。

SetFitとT-Few 3Bモデルの比較

下の図に示すように、 SetFit は、Few-Shot 学習においてRoBERTaよりも優れています

SetFit と RoBERT の比較、画像ソース: https://huggingface.co/blog/setfit?ref=hackernoon.com

データセット

以下では、書籍、アパレルとアクセサリー、電子機器、家庭用品の 4 つの異なるカテゴリで構成される独自の e コマース データセットを使用します。このデータセットの主な目的は、電子商取引 Web サイトの製品説明を指定されたラベルに分類することです。

少数ショットのトレーニング アプローチを容易にするために、4 つのカテゴリのそれぞれから 8 つのサンプルを選択し、合計32 個トレーニング サンプルを作成します。残りのサンプルはテスト用に保管されます。簡単に言うと、ここで使用するサポート セットは4 8ショットの学習です。次の図は、カスタム e コマース データセットの例を示しています。

カスタム e コマース データセット サンプル

テキストデータをさまざまなベクトル埋め込みに変換するために、all-mpnet-base-v2というSentence Transformersの事前トレーニング済みモデルを採用しています。このモデルは、入力テキストに対して768次元のベクトル埋め込みを生成できます

以下のコマンドに示すように、 conda環境 (オープンソースのパッケージ管理システムおよび環境管理システム)に必要なパッケージをインストールして、 SetFitの実装を開始します。

 !pip3 install SetFit !pip3 install sklearn !pip3 install transformers !pip3 install sentence-transformers

パッケージをインストールしたら、次のコードを使用してデータセットを読み込むことができます。

 from datasets import load_dataset dataset = load_dataset('csv', data_files={ "train": 'E_Commerce_Dataset_Train.csv', "test": 'E_Commerce_Dataset_Test.csv' })

トレーニングサンプルとテストサンプルの数を確認するには、下の図を参照してください。

トレーニングおよびテストデータ

テキスト ラベルをエンコードされたラベルに変換するには、 sklearnパッケージLabelEncoderを使用します

 from sklearn.preprocessing import LabelEncoder le = LabelEncoder()

LabelEncoderを使用して、トレーニング データセットとテスト データセットをエンコードし、エンコードされたラベルをデータセットの「ラベル」列に追加します。次のコードを参照してください:

 Encoded_Product = le.fit_transform(dataset["train"]['Label']) dataset["train"] = dataset["train"].remove_columns("Label").add_column("Label", Encoded_Product).cast(dataset["train"].features) Encoded_Product = le.fit_transform(dataset["test"]['Label']) dataset["test"] = dataset["test"].remove_columns("Label").add_column("Label", Encoded_Product).cast(dataset["test"].features)

次に、 SetFitモデルと sentence-transformers モデルを初期化します

 from setfit import SetFitModel, SetFitTrainer from sentence_transformers.losses import CosineSimilarityLoss model_id = "sentence-transformers/all-mpnet-base-v2" model = SetFitModel.from_pretrained(model_id) trainer = SetFitTrainer( model=model, train_dataset=dataset["train"], eval_dataset=dataset["test"], loss_class=CosineSimilarityLoss, metric="accuracy", batch_size=64, num_iteratinotallow=20, num_epochs=2, column_mapping={"Text": "text", "Label": "label"} )

両方のモデルを初期化したら、トレーニング手順を呼び出すことができます。

 trainer.train()

2 回のトレーニング エポックを完了したらeval_datasetでトレーニング済みモデルを評価します

 trainer.evaluate()

テストの結果、トレーニング済みモデルの最高精度は87.5%でした 87.5%という精度は高くありません、結局のところ、私たちのモデルはトレーニングに32 個のサンプルしか使用しませんでした。つまり、データセットのサイズが限られていることを考慮すると、テスト データセットで87.5%の精度を達成することは、実はかなり印象的です。

さらに、 SetFit はトレーニング済みのモデルをローカル ストレージに保存し、後でディスクからロードして将来の予測に使用することもできます。

 trainer.model._save_pretrained(save_directory="SetFit_ECommerce_Output/") model=SetFitModel.from_pretrained("SetFit_ECommerce_Output/", local_files_notallow=True)

次のコードは、新しいデータに基づく予測結果を示しています。

 input = ["Campus Sutra Men's Sports Jersey T-Shirt Cool-Gear: Our Proprietary Moisture Management technology. Helps to absorb and evaporate sweat quickly. Keeps you Cool & Dry. Ultra-Fresh: Fabrics treated with Ultra-Fresh Antimicrobial Technology. Ultra-Fresh is a trademark of (TRA) Inc, Ontario, Canada. Keeps you odour free."] output = model(input)

予測出力は 1 であり、ラベルのLabelEncoded値は「衣類とアクセサリー」であることがわかります従来の AI モデルでは、安定したレベルの出力を実現するために、大量のトレーニング リソース (時間とデータを含む) が必要になります。それらと比較すると、私たちのモデルは正確かつ効率的です。

この時点で、基本的には「少量学習」の概念と、テキスト分類などのアプリケーションでSetFit を使用する方法を習得できたと思います。もちろん、より深い理解を得るためには、実際のシナリオを選択し、データセットを作成し、対応するコードを記述し、プロセスをゼロショット学習とワンショット学習に拡張することを強くお勧めします。

翻訳者紹介

51CTO コミュニティの編集者である Julian Chen 氏は、IT プロジェクトの実装で 10 年以上の経験があります。社内外のリソースとリスクの管理に長けており、ネットワークと情報セキュリティの知識と経験の普及に重点を置いています。

原題:テキスト分類のための SetFit による Few-Shot 学習の習得、著者: Shyam Ganesh S)


<<: 

>>:  マルチモーダル生成AIの深掘り

ブログ    

推薦する

データが増えるほど、AIの意思決定モデルは脆弱になる

データは人工知能システムを構築するために必要な重要なインフラストラクチャです。データは、AI システ...

安全なパスワード保存の業界標準: bcrypt アルゴリズム

パスワードを安全に保護するための標準アルゴリズムである bcrypt アルゴリズムについて説明します...

中間レビュー: 2021 年に最も注目される AI スタートアップ 10 社

[[407377]] 2021年はまだ半分しか経っていませんが、人工知能に注力する人気のスタートアッ...

AI投資は2025年までに2,320億ドルに達する

KPMGが最近発表したレポートによると、2025年までに人工知能(AI)、機械学習、ロボティック・プ...

GPT-4より18倍高速、世界最速の大型モデルGroqが登場!毎秒500トークンが記録を破る、自社開発LPUはNVIDIA GPUの10倍

気がつくと、1 秒あたり 500 トークンを出力できる Groq モデルがインターネット上に広まって...

IoTとAIがコロナウイルスの流行中に企業の事業再開をどのように可能にしているか

[[333668]]数か月に及ぶ極度の不確実性、経済の閉鎖、孤立の後、ようやくゆっくりと経済が機能し...

新技術により大規模人工知能モデルの処理性能が効果的に向上

MIT と Nvidia の研究者は、高性能コンピューティング タスクで使用されるデータ構造であるス...

機械学習でデータを実用的な洞察に変換する

ビジネスが今やデータ主導型になっていることは誰もが知っています。データ収集の増加に伴い、分析はビジネ...

DeepFakeはもう人々を騙せません!米国の大手テクノロジー企業7社が共同でAI生成コンテンツに透かしを追加

最近、OpenAIとGoogleが率いるアメリカのテクノロジー大手7社が共同で次のような発表を行った...

AI主導のサプライチェーンが業界の変革を加速させる方法

アラブ首長国連邦(UAE)の企業がほぼ全面的にクラウドに移行する前に、政府はすでに大規模なデジタル変...

世界図書デー: スマートテクノロジーがいかにして優れた読書環境を作り出すか

4月23日は第25回「世界本の日」です!今日は本を読みましたか?ゴーリキーはかつてこう言った。「本は...

...