DEV Community

Tutty
Tutty

Posted on

Survey: Prefix-Tuning: Optimizing Continuous Prompts for Generation

選定理由

少リソースでドメイン適応させる技術はLLM活用上必須となると予想。

Paper: https://arxiv.org/abs/2101.00190
Code: https://github.com/XiangLi1999/PrefixTuning
Youtube: https://www.youtube.com/watch?v=TwE2m6Z991s
TechBlog: https://medium.com/@vincentchen0110/alternative-for-fine-tuning-prefix-tuning-may-be-your-answer-a1ce05e95464

概要

【社会課題】
LLMは様々な社会実装が予想されるがダウンストリームタスクやドメイン適応には巨大なモデルの学習が必要となってしまい、膨大なデータや計算機リソースを用意するコストが問題となる。

【技術課題】
生成される信号の精度はタスクやドメインに対してどれだけ特化させるかであるが、これは要求されるリソースとのトレードオフになる。

【従来手法】
最も基本的なドメイン適応はfinetuningであるが、モデルの全パラメータを更新するため計算量が大きい。一方で、モデルに対し3-4%程度のパラメータを持つタスク特化のレイヤを付与した Adapter-tuning があるがモデルに多少の改造が必要になる点がややコストが大きい。

【提案】
prompt engineering から着想し、ダウンストリームタスクを解くにあたって良いコンテキスト(Prefix)を与えればLLMの回答は改善されるという仮定。タスク別に学習可能なPrefixを入力に付与し(Encoder/Decoderの場合は入出力)、事前学習済み言語モデルのパラメーター自体は固定する。

fig1

【効果】
Prefix-Tuningによって新しいタスクやドメインに対して、LLMのパラメータを更新する必要がなくなる。実験ではtable-to-text においてGPT-2、summarizationにおいてBARTから生成された文章の品質が向上したことが示された。又、Prefix-Tuningは、課題に合わせて柔軟にプロンプトを設定することができ、より高度なタスクにも適用可能であることが示された。

提案

LLMに単語(例:オバマ)を生成させたい場合、共通のコロケーション(例:バラク)をコンテキストとして前置することで、LLMはよりユーザーが期待する単語列の生成ができる点に着眼した。直感的には、入力プロンプト x から何を抽出するかをコンテキストによって誘導し、x の埋め込みベクトルと出力信号 y の生成に影響を与えることができる。ただし、そのようなコンテキストが存在するかどうかは明らかではない。

fig2

自然言語タスクの指示(例:「以下の表を1文で要約する」)は、そのドメインのエキスパートには分かるが、事前学習済みのほとんどのLLMは失敗する。入力プロンプトは離散空間であり、データ駆動型(学習ベースの)の最適化を行うことで解決できる可能性はあるが、一般的に離散最適化は計算困難である場合が多い。そこで、離散最適化を行う代わりに連続空間上の単語埋め込みベクトルを最適化する。これは、実在する単語の埋め込みベクトルとの一致が必要なプロンプトエンジニアリングより表現力がある定式化となる。一方、活性化のすべてのレイヤーに介入するよりも表現力が低いため長距離依存関係を回避することができ、一方で調整可能なパラメータを含むため、Prefix-tuningは、Prefixのすべてのレイヤーを最適化することができる。

eq3

prefix-tuning における定式化は式3である。この式が示すようにprefix-tuningはLMモデルの前置的な拡張である。ここでθはprefix-tuningのパラメータ、Pidxはprefixの長さ、hiはTransformerが出力となる隠れ層のパラメータである。なお学習時は Pθ を直接更新すると学習が不安定になるため、少し小さい行列であるPθ'を更新する。

実験

tb1

GPT-2のtable-to-text タスクの実験において、生成された文章の主観評価は多くの場合、finetuningやAdapter-tuningよりも高い。これをモデルパラメータと比較してわずか0.1%のパラメータの prefix-tuningによって実現できている。

fig3

上記は少データ学習時のfinetuningとの比較である。データ量が少ない場合はprefix-tuningの方が性能が良い。

prefix-tuningの活用法としてPersonalizationが言及されている。1利用者ごとにprefixパラメータθを用意すれば少ないデータ量でPersonalizationを実現できる。

Top comments (0)