LoginJoin GenScrap

#mean pooling

関連タグ

#mean pooling が付いた公開スクラップ 1 件

CLS pooling
chatgpt

CLS pooling(\[CLS] pooling)についてわかりやすく整理しますね。 --- ## 基本アイデア * **BERTやModernBERTなどのTransformer系モデル**は、入力文の先頭に特別なトークン `[CLS]` を付けます。 * モデルがエンコードを終えると、各トークン(単語)の隠れ状態ベクトルが得られます。 * そのうち **先頭の `[CLS]` トークンのベクトル**を、「文全体の表現(sentence embedding)」として利用する方法を **CLS pooling** と呼びます。 --- ## どうして `[CLS]` を使えるのか? * 学習時に「この `[CLS]` ベクトルを使って最終的に分類タスクを解く」ように設計されているため、モデルは自然と `[CLS]` に文全体の意味を集約するようになります。 * 例えば BERT では、文の感情分析や文ペア関係判定(自然言語推論など)のタスクで `[CLS]` の出力が使われます。 --- ## 他のPooling手法との比較 * **CLS pooling** → `[CLS]` のベクトルをそのまま使う。 長所: 高速・シンプル。 短所: 文埋め込みの質がタスクによっては不安定になる。 * **Mean pooling(平均プーリング)** → 全トークンのベクトルを平均する。 長所: 安定した意味表現になりやすい。 短所: CLSに比べると計算コストはわずかに増える。 * **Max pooling(最大プーリング)** → 各次元ごとに最大値を取る。 特徴が際立ちやすいが、情報が偏ることもある。 --- ## 実用的な注意点 * 「文ベクトルとして汎用的に使いたい」場合(例: 検索・クラスタリング)は、CLS pooling よりも **Mean pooling** の方がよいケースが多い(Sentence-BERT もこちらを採用)。 * ただし、**分類タスクの下流 fine-tuning**では CLS pooling が最適化されやすい。 * ModernBERT など長文対応モデルでは、CLS pooling だと先頭バイアス(文末情報を取り込みにくい)になることもあるので、平均プーリングや階層的プーリングが研究されている。 --- 👉 まとめると: * **CLS pooling = `[CLS]` の出力ベクトルをそのまま文表現として使う方法** * **分類タスク**には有効だが、**汎用的な文埋め込み**では Mean pooling の方が安定することが多い。 --- ご希望なら、PyTorch / Hugging Face Transformers で **CLS pooling と Mean pooling の実装例**をコードで書きますか?

2025/8/24表示

自分のタグ付きコンテンツを作成しませんか?

始める