Slide 1

Slide 1 text

【Kaggle】
 プロンプトを取り戻せ!
 LLM Prompt Recoveryコンペを解説
 
 
 早野康太


Slide 2

Slide 2 text

自己紹介
 ● 名前
 ○ 早野 康太
 ● お仕事
 ○ 自然言語モデルの改善
 ● 今期アニメ (豊作すぎます!)
 ○ ガールズバンドクライ
 ○ 夜のクラゲは泳げない
 ○ 変人のサラダボウル
 ○ ささやくように恋を唄う
 ○ 終末トレイン
 ○ このすば 3期 (神とさせてください)
 ○ 響け!ユーフォニアム 3期 (神とさせてください)


Slide 3

Slide 3 text

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/)


Slide 4

Slide 4 text

Kaggleとは
 ● コンペティション
 ○ 企業や政府などが主体となって
 データサイエンスのコンペティションを開催し
 世界中のデータサイエンティストが順位を競います
 
 
 出典: チェンソーマン © 藤本タツキ / 集英社 


Slide 5

Slide 5 text

Kaggleとは
 ● コンペティション
 ○ 企業や政府などが主体となって
 データサイエンスのコンペティションを開催し
 世界中のデータサイエンティストが順位を競います
 
 
 ● 順位に応じてメダルがもらえます
 ○ ゴールド: 上位1パーセント以内
 ○ シルバー: 上位5パーセント以内
 ○ ブロンズ: 上位10パーセント以内


Slide 6

Slide 6 text

Kaggleとは
 参加者
 Public Score
 モデルや
 コードを提出
 (submission)
 テストデータセット
 Public
 Private
 開催期間中は
 参加者はこれしか見えない 
 Private Score
 Public + Privateで算出 
 最終的な順位はこれで決まる 
 スコアは運営側が用意した 
 環境で計算される


Slide 7

Slide 7 text

Kaggle LLM コンペティションに参加しました
 122th / 2,664 teams で銅メダルでした!


Slide 8

Slide 8 text

コンペ概要: LLM Prompt Recovery
 LLM (ChatGPTとか) を利用すると、文章を書き換えることができる
 ● コンペテーマ: 書き換えの前後の文章からプロンプトを当てられるか?
 (実際の書き換えにはGemmaを使用)
 書き換えプロンプト
 元の文章
 書き換え後の文章


Slide 9

Slide 9 text

コンペ概要: LLM Prompt Recovery
 LLM (ChatGPTとか) を利用すると、文章を書き換えることができる
 ● コンペテーマ: 書き換えの前後の文章からプロンプトを当てられるか?
 (実際の書き換えにはGemmaを使用)
 書き換えプロンプト
 元の文章
 書き換え後の文章


Slide 10

Slide 10 text

コンペ概要: LLM Prompt Recovery
 推測プロンプト
 真のプロンプト
 embedding
 sentence-t5-base embedding
 cos類似度


Slide 11

Slide 11 text

むずかしいポイント
 ● データがない
 ○ サンプルデータとして与えられているのはこの一例のみ
 
 
 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...


Slide 12

Slide 12 text

コンペ中のアプローチ方針
 
 ● いい感じのMean Promptをみつける
 ● LLM プロンプトエンジニアリング
 ● LLM fine-tuning -> 最終的に諦めた
 ● 出力プロンプトアンサンブル -> 最終サブミッションはコレだった
 


Slide 13

Slide 13 text

いい感じのMean Promptをみつける
 ● Rewrite Promptをすべて同じ文章にしてサブミットして
 パブリックスコアを調べる
 → テストデータで使われているプロンプトの傾向を知りたいため
 
 id
 rewrite_prompt
 0
 Improve that text.
 1
 Improve that text.
 2
 Improve that text.
 Mean Prompt
 ここを変えてスコアの変動を 
 調べる


Slide 14

Slide 14 text

いい感じの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…から始まるプロンプトでスコアが高くなる傾向
 
 


Slide 15

Slide 15 text

LLMプロンプトエンジニアリング
 ● 早い段階でいくつかモデルを試して、
 以降はずっとモデルを固定で実験を繰り返してた
 ○ gemma-7b-it
 ○ mistral-7b-instruct
 ○ mixtral-8x7b-instruct <- これを採用
 
 


Slide 16

Slide 16 text

最終的に採用したプロンプト
 
 


Slide 17

Slide 17 text

LLMプロンプトエンジニアリング
 ● 多段階で推論させる → パブリックスコアには寄与せず
 ○ プロンプト推定 → 推定したプロンプトをRefineさせるみたいな流れ
 ■ 多段階にしたことで推論時間がかかってしまう
 ● 最終的には1段階の推論でRewrite Promptを出力させてた
 ○ 入力としてRewrite Promptのサンプルをいくつか追加
 ○ プラスアルファで、軽いPost Processing (若干スコア上がった)
 ■ プロンプトが以下から始まる場合はMean Promptのみにする
 ● I, prompt, the, this, it, sure, here 
 (これらは経験則から)
 


Slide 18

Slide 18 text

最終的に採用しなかったやつ
 
 
 ● 多段階推論
 ● 出力のPrefixを指定して推論させる
 ○ Improve…とか、Rewrite…とかから始まるっていうのを
 LLMに渡す
 ● 出力の形式をもうすこし具体的にする
 ○ 具体的な人物・地名は入れない
 ○ 数字は出さない
 ○ …みたいなルールをプロンプト内に書いておく


Slide 19

Slide 19 text

fine-tuneはダメだった
 
 
 ● LoRAでLLMをfine-tuningするアプローチを途中まで試していたが断念
 ○ 手元のValidation/Testスコアとパブリックスコアが相関しない
 
 
 Wikipedia 
 passages
 original_text
 ChatGPTから
 作成
 rewrite_prompt
 Gemmaから
 作成
 rewritten_text
 +
 Train/Validation/Test Data


Slide 20

Slide 20 text

fine-tuneはダメだった
 
 
 ● LoRAでLLMをfine-tuningするアプローチを途中まで試していたが断念
 ○ 手元のValidation/Testスコアとパブリックスコアが相関しない
 
 Wikipedia 
 passages
 original_text
 ChatGPTから
 作成
 rewrite_prompt
 Gemmaから
 作成
 rewritten_text
 +
 Train/Validation/Test Data
 出典:テニスの王子様 © 許斐 剛/集英社

Slide 21

Slide 21 text

fine-tuneはダメだった
 
 
 ● LoRAでLLMをfine-tuningするアプローチを途中まで試していたが断念
 ○ 手元のValidation/Testスコアとパブリックスコアが相関しない
 
 Wikipedia 
 passages
 original_text
 ChatGPTから
 作成
 rewrite_prompt
 Gemmaから
 作成
 rewritten_text
 +
 Train/Validation/Test Data
 出典:テニスの王子様 © 許斐 剛/集英社 ※ fine-tuneで結果出してたチームもあり、データの作り方次第で有効だった


Slide 22

Slide 22 text

プロンプトアンサンブル
 ● コンペ中盤、複数の出力を結合するとスコアが上昇することが発覚
 ○ Predict1 + Predict2 みたいな感じ
 ○ 最終的に、Mean Prompt + LLM Predictが最も良かった
 ● (推測の域を出ないが)
 ○ sentence-t5-baseはmean poolingを採用していて
 embeddingは全トークンベクトルの平均となっている
 ○ 複数の出力を結合する ≒ ベクトルの平均を取る (厳密には違う)
 ○ 一般に行われるような出力値を平均するアンサンブルと
 似たような効果が表れたのではないか?
 
 


Slide 23

Slide 23 text

採用しなかったアプローチ
 ● 出力の結合数を増やす (推論回数を増やして)
 ○ Mean Prompt + Predict1 + Predict2
 ● t5 embeddingの埋め込み空間上で近いベクトルを結合する
 ○ あらかじめローカルデータでembedding空間上でPCA + k-means
 → プロンプトを何種類かに分類
 ○ 分類した中で、書き換え後の文章と近いプロンプトをくっつける
 
 


Slide 24

Slide 24 text

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"


Slide 25

Slide 25 text

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のトークンを複数追加すると
 cos類似度が上昇する (Torch版)
 ● LBのスコア計算ではTF版のsentence-t5が使われていて
 がスペシャルトークンではない
 ○ に近い埋め込み値になる文字列を、しらみつぶしに探した


Slide 26

Slide 26 text

3位のアプローチ
 ● 3rd place solution
 ○ fine-tuningのためのデータ作成の工夫
 ■ rewrite_promptの意味はそのままに表現を微妙に変えて
 バリエーションをもたせた
 ■ rewrite_promptをt5 embeddingでクラスタリングして
 クラスタごとにtrain dataのバランスを調整した
 
 
 


Slide 27

Slide 27 text

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スコアが上がるような単語を探索して付け足していった
 
 
 


Slide 28

Slide 28 text

まとめ
 ● コンペを通してプロンプトエンジニアリングやcos類似度に
 関する知見が広がった
 ● 1位の解法がかなりトリッキーだった
 ○ メトリクスをハックするようなもので
 ある意味勉強になった
 ● train/test dataの作成に労力を割いていた
 チームが上位に多くいる印象
 ○ やはりKaggleの基本はデータ
 
 
 
 出典:テニスの王子様 © 許斐 剛/集英社