Share
Embed
LLM_Prompt_Recovery
payanotty
May 16, 2024
Transcript
28 slides
-
自己紹介 • 名前 ◦ 早野 康太 • お仕事 ◦ 自然言語モデルの改善
• 今期アニメ (豊作すぎます!) ◦ ガールズバンドクライ ◦ 夜のクラゲは泳げない ◦ 変人のサラダボウル ◦ ささやくように恋を唄う ◦ 終末トレイン ◦ このすば 3期 (神とさせてください) ◦ 響け!ユーフォニアム 3期 (神とさせてください) -
Kaggleとは • Kaggleは、データサイエンスの目標を達成するための 強力なツールとリソースを提供する世界最大の データサイエンス・コミュニティです Kaggle is the world's largest
data science community with powerful tools and resources to help you achieve your data science goals. (https://www.kaggle.com/) -
Kaggleとは • コンペティション ◦ 企業や政府などが主体となって データサイエンスのコンペティションを開催し 世界中のデータサイエンティストが順位を競います 出典:
チェンソーマン © 藤本タツキ / 集英社 -
Kaggleとは • コンペティション ◦ 企業や政府などが主体となって データサイエンスのコンペティションを開催し 世界中のデータサイエンティストが順位を競います •
順位に応じてメダルがもらえます ◦ ゴールド: 上位1パーセント以内 ◦ シルバー: 上位5パーセント以内 ◦ ブロンズ: 上位10パーセント以内 -
Kaggleとは 参加者 Public Score モデルや コードを提出 (submission) テストデータセット Public Private
開催期間中は 参加者はこれしか見えない Private Score Public + Privateで算出 最終的な順位はこれで決まる スコアは運営側が用意した 環境で計算される -
コンペ概要: LLM Prompt Recovery LLM (ChatGPTとか) を利用すると、文章を書き換えることができる • コンペテーマ: 書き換えの前後の文章からプロンプトを当てられるか?
(実際の書き換えにはGemmaを使用) 書き換えプロンプト 元の文章 書き換え後の文章 -
コンペ概要: LLM Prompt Recovery LLM (ChatGPTとか) を利用すると、文章を書き換えることができる • コンペテーマ: 書き換えの前後の文章からプロンプトを当てられるか?
(実際の書き換えにはGemmaを使用) 書き換えプロンプト 元の文章 書き換え後の文章 -
むずかしいポイント • データがない ◦ サンプルデータとして与えられているのはこの一例のみ original_text rewrite_prompt rewritten_text
The competition dataset comprises text passages that have been rewritten by the Gemma LLM according ... Convert this into a sea shanty: """The competition dataset comprises text passages that have been re... Here is your shanty: (Verse 1) The text is rewritten, the LLM has spun, With prompts so clever, they... -
コンペ中のアプローチ方針 • いい感じのMean Promptをみつける • LLM プロンプトエンジニアリング • LLM
fine-tuning -> 最終的に諦めた • 出力プロンプトアンサンブル -> 最終サブミッションはコレだった -
いい感じのMean Promptをみつける • Rewrite Promptをすべて同じ文章にしてサブミットして パブリックスコアを調べる → テストデータで使われているプロンプトの傾向を知りたいため id
rewrite_prompt 0 Improve that text. 1 Improve that text. 2 Improve that text. Mean Prompt ここを変えてスコアの変動を 調べる -
いい感じのMean Promptをみつける • 試したパターン (一部抜粋) ◦ Please improve this text
using the writing style with maintaining the original meaning but altering the tone. ▪ ↑いちばんよかったやつ ◦ Develop the argument’s persuasiveness through strategic use of statistical evidence and compelling anecdotes. ◦ Summarize this text emphasizing the significance of research and preparation. • Please improve…から始まるプロンプトでスコアが高くなる傾向 -
LLMプロンプトエンジニアリング • 多段階で推論させる → パブリックスコアには寄与せず ◦ プロンプト推定 → 推定したプロンプトをRefineさせるみたいな流れ ▪
多段階にしたことで推論時間がかかってしまう • 最終的には1段階の推論でRewrite Promptを出力させてた ◦ 入力としてRewrite Promptのサンプルをいくつか追加 ◦ プラスアルファで、軽いPost Processing (若干スコア上がった) ▪ プロンプトが以下から始まる場合はMean Promptのみにする • I, prompt, the, this, it, sure, here (これらは経験則から) -
最終的に採用しなかったやつ • 多段階推論 • 出力のPrefixを指定して推論させる ◦ Improve…とか、Rewrite…とかから始まるっていうのを LLMに渡す
• 出力の形式をもうすこし具体的にする ◦ 具体的な人物・地名は入れない ◦ 数字は出さない ◦ …みたいなルールをプロンプト内に書いておく -
fine-tuneはダメだった • LoRAでLLMをfine-tuningするアプローチを途中まで試していたが断念 ◦ 手元のValidation/Testスコアとパブリックスコアが相関しない Wikipedia
passages original_text ChatGPTから 作成 rewrite_prompt Gemmaから 作成 rewritten_text + Train/Validation/Test Data -
fine-tuneはダメだった • LoRAでLLMをfine-tuningするアプローチを途中まで試していたが断念 ◦ 手元のValidation/Testスコアとパブリックスコアが相関しない Wikipedia
passages original_text ChatGPTから 作成 rewrite_prompt Gemmaから 作成 rewritten_text + Train/Validation/Test Data 出典:テニスの王子様 © 許斐 剛/集英社 -
fine-tuneはダメだった • LoRAでLLMをfine-tuningするアプローチを途中まで試していたが断念 ◦ 手元のValidation/Testスコアとパブリックスコアが相関しない Wikipedia
passages original_text ChatGPTから 作成 rewrite_prompt Gemmaから 作成 rewritten_text + Train/Validation/Test Data 出典:テニスの王子様 © 許斐 剛/集英社 ※ fine-tuneで結果出してたチームもあり、データの作り方次第で有効だった -
プロンプトアンサンブル • コンペ中盤、複数の出力を結合するとスコアが上昇することが発覚 ◦ Predict1 + Predict2 みたいな感じ ◦ 最終的に、Mean
Prompt + LLM Predictが最も良かった • (推測の域を出ないが) ◦ sentence-t5-baseはmean poolingを採用していて embeddingは全トークンベクトルの平均となっている ◦ 複数の出力を結合する ≒ ベクトルの平均を取る (厳密には違う) ◦ 一般に行われるような出力値を平均するアンサンブルと 似たような効果が表れたのではないか? -
採用しなかったアプローチ • 出力の結合数を増やす (推論回数を増やして) ◦ Mean Prompt + Predict1 +
Predict2 • t5 embeddingの埋め込み空間上で近いベクトルを結合する ◦ あらかじめローカルデータでembedding空間上でPCA + k-means → プロンプトを何種類かに分類 ◦ 分類した中で、書き換え後の文章と近いプロンプトをくっつける -
1位のアプローチ • 1st place solution: adversarial attack
Append this string to your model prediction and see score going up for up to +0.05: " 'it 's ' something Think A Human Plucrarealucrarealucrarealucrarealucrarealucrarealucrarealucrarea" -
1位のアプローチ • 1st place solution: adversarial attack
Append this string to your model prediction and see score going up for up to +0.05: " 'it 's ' something Think A Human Plucrarealucrarealucrarealucrarealucrarealucrarealucrarealucrarea" • プロンプトにsentence-t5の</s>トークンを複数追加すると cos類似度が上昇する (Torch版) • LBのスコア計算ではTF版のsentence-t5が使われていて </s>がスペシャルトークンではない ◦ </s>に近い埋め込み値になる文字列を、しらみつぶしに探した -
3位のアプローチ • 3rd place solution ◦ fine-tuningのためのデータ作成の工夫 ▪ rewrite_promptの意味はそのままに表現を微妙に変えて バリエーションをもたせた
▪ rewrite_promptをt5 embeddingでクラスタリングして クラスタごとにtrain dataのバランスを調整した -
12位のアプローチ • 12th place soluition🥇 : Modifying mean prompt using
LLM, ML and logic-based approach ◦ リーダーボードと相関するスコアが出るような validation dataを作成して指針とした ▪ mean promptでサブミットしたときのスコアに基づいて作成 ▪ 40から90のmean promptを使ってデータを作成 ◦ ハイスコアが出るようなmean promptを探索 ▪ “Rewrite”から始めて CVスコアが上がるような単語を探索して付け足していった -
まとめ • コンペを通してプロンプトエンジニアリングやcos類似度に 関する知見が広がった • 1位の解法がかなりトリッキーだった ◦ メトリクスをハックするようなもので ある意味勉強になった •
train/test dataの作成に労力を割いていた チームが上位に多くいる印象 ◦ やはりKaggleの基本はデータ 出典:テニスの王子様 © 許斐 剛/集英社