実践におけるFew-shot学習:GPT-Neoと🤗高速推論API
Few-shot学習の実践:GPT-Neoと高速推論API
多くの機械学習のアプリケーションでは、利用可能なラベル付きデータの量が高性能なモデルの作成の障害となります。NLPの最新の発展では、大きな言語モデルで推論時にわずかな例を提供することで、この制限を克服することができることが示されています。これはFew-Shot Learningとして知られる技術です。このブログ投稿では、Few-Shot Learningとは何かを説明し、GPT-Neoという大きな言語モデルと🤗 Accelerated Inference APIを使用して独自の予測を生成する方法を探ります。
Few-Shot Learningとは何ですか?
Few-Shot Learningは、機械学習モデルに非常に少量の訓練データを与えて予測を行うことを指します。つまり、推論時にいくつかの例を与えるということです。これは、標準的なファインチューニング技術とは異なり、事前に訓練されたモデルが所望のタスクに適応するために比較的大量の訓練データが必要とされるものです。
この技術は主にコンピュータビジョンで使用されてきましたが、EleutherAI GPT-NeoやOpenAI GPT-3などの最新の言語モデルを使用することで、自然言語処理(NLP)でも使用することができるようになりました。
NLPでは、Few-Shot Learningは大規模な言語モデルと組み合わせて使用することができます。これらのモデルは、大規模なテキストデータセットでの事前トレーニング中に暗黙的に多くのタスクを実行することを学習しています。これにより、モデルはわずかな例だけで関連するが以前に見たことのないタスクを理解することができます。
Few-Shot NLPの例は主に以下の3つの主要な要素から構成されます:
- タスクの説明:モデルが行うべきタスクの短い説明、例えば「英語からフランス語への翻訳」
- 例:モデルに予測してほしいことを示すいくつかの例、例えば「sea otter => loutre de mer」
- プロンプト:モデルが欠落しているテキストを生成するために完了するべき新しい例の先頭部分、例えば「cheese => 」
画像は、言語モデルはFew-Shot Learnersであることを示しています
これらのFew-Shotの例を作成することは難しいです。というのも、モデルに実行してほしい「タスク」を明確に伝える必要があるからです。一般的な問題は、モデル、特に小規模なモデルは、例の書き方に非常に敏感であるということです。
本番環境でFew-Shot Learningを最適化するアプローチの一つは、タスクごとに共通の表現を学習し、この表現の上にタスク固有の分類器をトレーニングすることです。
OpenAIはGPT-3の論文で、few-shotのプロンプト能力が言語モデルのパラメータ数とともに向上することを示しました。
画像は、言語モデルはFew-Shot Learnersであることを示しています
それでは、GPT-Neoと🤗 Accelerated Inference APIを使用して独自のFew-Shot Learning予測を生成する方法を見てみましょう!
GPT-Neoとは何ですか?
GPT-Neoは、GPTアーキテクチャに基づくEleutherAIのトランスフォーマーベースの言語モデルのファミリーです。EleutherAIの主な目標は、GPT-3と同じサイズのモデルを訓練し、オープンなライセンスの下で一般に利用できるようにすることです。
現在利用可能なすべてのGPT-Neoチェックポイントは、Pileデータセットで訓練されています。これは大規模なテキストコーパスであり、(Gao et al., 2021)で詳細に文書化されています。そのため、設計する例には、訓練テキストの分布に一致するテキストでの動作が期待されます。
🤗 Accelerated Inference API
Accelerated Inference APIは、簡単なAPI呼び出しを介して、🤗 Model Hubで公開されている10,000以上のモデルのいずれか、または独自のプライベートモデル上で推論を実行するためのホストされたサービスです。このAPIには、Transformersのデフォルトのデプロイメントと比較してCPUとGPUのアクセラレーションが含まれており、最大100倍の高速化が可能です。
独自のアプリケーションでFew-Shot Learningの予測をGPT-Neoと統合するには、以下のコードスニペットを使用して🤗 Accelerated Inference APIを利用することができます。アカウントがない場合は、こちらからAPIトークンを取得できます。
import json
import requests
API_TOKEN = ""
def query(payload='',parameters=None,options={'use_cache': False}):
API_URL = "https://api-inference.huggingface.co/models/EleutherAI/gpt-neo-2.7B"
headers = {"Authorization": f"Bearer {API_TOKEN}"}
body = {"inputs":payload,'parameters':parameters,'options':options}
response = requests.request("POST", API_URL, headers=headers, data= json.dumps(body))
try:
response.raise_for_status()
except requests.exceptions.HTTPError:
return "エラー:"+" ".join(response.json()['error'])
else:
return response.json()[0]['generated_text']
parameters = {
'max_new_tokens':25, # 生成トークン数
'temperature': 0.5, # 生成のランダム性を制御
'end_sequence': "###" # 生成の停止シーケンス
}
prompt="...." # フューショットプロンプト
data = query(prompt,parameters,options)
実用的な洞察
以下は、GPT-Neo
と🤗 Accelerated Inference APIを使用して始めるための実用的な洞察です。
GPT-Neo
(2.7B)はGPT-3
(175B)よりも約60倍小さいため、ゼロショットの問題に対しては汎用性が低く、良い結果を得るには3〜4の例が必要です。より多くの例を提供することで、GPT-Neo
はタスクを理解し、end_sequence
を考慮に入れるため、生成されるテキストをかなり制御できます。
ハイパーパラメータのEnd Sequence
、Token Length
、Temperature
を使用してモデルのtext-generation
を制御することができ、必要なタスクを解決するためにこれを活用することができます。 Temperature
は生成のランダム性を制御し、低い温度ではよりランダム性の少ない生成が行われ、高い温度ではよりランダム性の多い生成が行われます。
この例では、ハイパーパラメータの定義の重要性がわかります。これらは、タスクを解決するか、惨めな失敗を招くかの違いを生むことができます。
責任ある使用
フューショット学習は強力な技術ですが、使用方法を設計する際に考慮する必要のあるユニークな落とし穴も存在します。これを説明するために、ウィジェットで提供されるデフォルトのSentiment Analysis
設定を考えてみましょう。感情分析のための3つの例を見た後、モデルはtemperature
を0.1に設定した場合に5回中4回、次の予測を行います:
ツイート: “I’m a disabled happy person” 感情: ネガティブ
何が問題になる可能性がありますか?オンラインショッピングのウェブサイトで商品のレビューを集計するために感情分析を使用していると想像してみてください。障害を持つ人々にとって有用な商品が自動的に低評価される可能性があります – これは自動的な差別の形です。この特定の問題については、ACL 2020の論文「Social Biases in NLP Models as Barriers for Persons with Disabilities」をおすすめします。フューショット学習は、事前学習から得られた情報や関連性により直接的に依存しているため、このようなタイプの失敗に対してより敏感です。
危害のリスクを最小限に抑える方法は何でしょうか?以下にいくつかの実践的な推奨事項を示します。
責任ある使用のためのベストプラクティス
- ユーザーエクスペリエンスのどの部分がMLシステムの出力に依存しているかを人々に知らせる
- 可能であれば、ユーザーに選択の権限を与える
- モデルの意思決定に対してフィードバックをユーザーに与えるメカニズムを提供し、それを上書きできるようにする
- 特に影響を受ける可能性のあるユーザーグループのフィードバック、特にモデルの失敗を監視する
最も避けるべきなのは、ユーザーが入力を提供したり出力を修正する機会を与えずに、モデルを使用してユーザーについての意思決定を自動化することです。GDPRなどの規制では、ユーザーに対して彼らに関する自動的な意思決定の説明を提供する必要があります。
自分のアプリケーションでGPT-NeoやHugging Faceのモデルを使用するには、🤗 加速推論APIの無料トライアルを開始することができます。モデルやAIシステムのバイアスを軽減するためのサポートが必要な場合や、Few-Shot Learningを活用したい場合は、🤗 エキスパートアクセラレーションプログラムを通じてHugging Faceチームから直接プレミアムサポートを提供してもらえます。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles