【ぷれふぃっくすちゅーにんぐ】
プレフィックスチューニング とは?
公開:
💡 全層に隠し命令書を差し込む効率的な学習法
ペンギン先生、プレフィックスチューニングってソフトプロンプトチューニングと何が違うの?
大きな違いは「どこにベクトルを挿入するか」だよ。ソフトプロンプトは入力の先頭だけだけど、プレフィックスチューニングは全Transformer層のキーとバリューに付け加えるんだよ。
全層に付けることの何がいいの?
深い層にも直接情報を届けられるから表現力が上がるんだよ。入力層だけに付けると、その影響が深い層まで届くのに層を通る処理で薄まってしまうことがあるんだ。
じゃあ全層に付けた方が常にいいんだね!
どんなタスクに向いているの?
テキスト生成・要約・翻訳など、各層の深い理解が必要なタスクに向いているよ。Stanfordが2021年に発表した研究では、通常のファインチューニングより少ないパラメータで匹敵する精度を出せたんだよ。
学習するパラメータがすごく少ないってこと、そんなに大事なの?
大事だよ。大規模モデルを全部ファインチューニングすると数百GBものパラメータを更新する必要があるけど、プレフィックスチューニングなら元モデルは凍結したまま小さなプレフィックスだけ保存すればいいから、コストが全然違うんだよ。
📖 おまけ:英語の意味
「Prefix Tuning」 = プレフィックスチューニング
💬 各Transformer層の「接頭辞(prefix)」として学習ベクトルを挿入するから、この名前が付いたよ