LoginJoin GenScrap
公開ギャラリーに戻る
出典: k1ito-tech作成者: k1ito2 months ago

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 の実装例をコードで書きますか?

このスクラップブックについて
こちらもおすすめ

「k1ito-tech」の他のスクラップ

diskcache

いい選択です 👍 diskcache は ディスクにキャッシュを保存できるライブラリ で、メモリを圧迫せずに大量のデータをキャッシュできます。しかも API がシンプルで、Webアプリや機械学習の前処理結果キャッシュなどにもよく使われます。 --- インストール bash pip inst...

about 1 month ago
#python caching#diskcache+3

Best mcp server development sdk?

If by “MCP server” you mean a server implementing the Model Context Protocol (MCP) to allow LLMs / AI agents to interact with external tools/data sour...

about 1 month ago
#model context protocol#mcp sdk+3

# [2508.20722] rStar2-Agent: Agentic Reasoning Technical Report

[2508.20722] rStar2-Agent: Agentic Reasoning Technical Report URL: https://www.arxiv.org/abs/2508.20722 Captured: 2025/9/6 17:39:22 --- Computer ...

about 2 months ago
#agentic reinforcement learning#large language models+3

Daytona Sandbox:開発環境の新たな可能性

Daytona Sandbox:開発環境の新たな可能性 Daytona Sandboxとは Daytona Sandboxは、開発者がクラウド上で瞬時に開発環境を構築・共有できる革新的なプラットフォームです。従来のローカル開発環境の制約を取り払い、どこからでもアクセス可能な統一された開発体験...

about 2 months ago
#daytona#sandbox+3

E2B example in Python

step-by-step E2B example in Python that shows stateful execution, installing packages, uploading a file, and doing a quick SQLite query—all inside a s...

about 2 months ago
#e2b#python+3

# Agentic workflow patterns - AWS Prescriptive Guidance

Agentic workflow patterns integrate modular software agents with structured large language model (LLM) workflows, enabling autonomous reasoning and ac...

2 months ago
#aws#agentic ai+3

自分の投稿を作成してみませんか?

Get Started