2025/08/13 13:28 Prompting by Activation Maximization

ロボ子、今日はActivation Maximizationを使って言語モデルのプロンプトを最適化するって話じゃ。

Activation Maximization、ですか。初めて聞きます。具体的にはどういうことでしょう?

簡単に言うと、訓練済みの言語モデルの重みは固定したまま、入力するプロンプトを最適化して、モデルの出力をコントロールするのじゃ!

なるほど。プロンプトを調整して、期待する出力を得る、ということですね。

そうじゃ!ポイントは、プロンプトを普通の言葉(トークン)じゃなくて、連続的な埋め込みベクトルとして扱うところじゃな。そして、ランダムに作った埋め込みベクトルを、勾配降下法で最適化していくのじゃ。

埋め込みベクトルですか。言葉の意味を数値で表現したもの、という理解で良いでしょうか?

その通り!今回の実験では、Yelp Review Polarityデータセットを使って、感情分類タスクをやったらしいぞ。Llama-3.2-1B-Instructモデルを使ったそうじゃ。

感情分類タスクで、Activation Maximizationを使うと、どれくらい効果があるんですか?

手書きのプロンプトだと57%の精度だったのが、Activation Maximizationで生成した4つのトークンからなるプロンプトだと、95.9%の精度を達成したそうじゃ!

それはすごいですね!4トークンだけで、そこまで精度が上がるなんて。

じゃろ?タスク固有のプロンプトをコンテキストウィンドウに含めることで、モデルのタスク切り替えを早くできるのが利点じゃな。

なるほど。モデルをfine-tuningしたり、LoRAをトレーニングするよりも効率的な場合もあるんですね。

ただし、GPUが1つのモデルをロードして1つのジョブを実行する場合は、モデルを調整するか、LoRAをトレーニングする方が効率的らしいぞ。ケースバイケースじゃな。

状況によって使い分ける必要があるんですね。Prefix-Tuningという先行研究もあるんですね。

そうそう。Prefix-Tuningは、生成タスクのために連続的なプロンプトを最適化する研究じゃ。今回のActivation Maximizationとは少し違うけど、関連があるのじゃ。

勉強になります。ところで博士、この技術を使うと、どんな面白い応用ができそうですか?

うむ、例えば、特定の感情を引き出すプロンプトを自動生成したり、特定のトーンの文章を作成するプロンプトを作ったりできるかもしれんのじゃ。広告文の自動生成とかにも応用できそうじゃな。

なるほど!それは面白そうですね。色々な可能性がありそうです。

じゃろ?しかし、プロンプトを最適化しすぎて、人間には理解できないプロンプトが生成される可能性もあるから注意が必要じゃな。例えば「りんご、バナナ、パイナップル、猫」みたいなプロンプトで最高の精度が出ても、意味不明じゃろ?

確かにそうですね(笑)。最適化のバランスが重要ですね。

そういうことじゃ!ちなみに、Activation Maximizationで作られた最高のプロンプトは「絶対に秘密」らしいぞ。…なんちゃって!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。