Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

LLM_Prompt_Recovery

payanotty
May 16, 2024
820

 LLM_Prompt_Recovery

payanotty

May 16, 2024
Tweet

Transcript

  1. 自己紹介
 • 名前
 ◦ 早野 康太
 • お仕事
 ◦ 自然言語モデルの改善


    • 今期アニメ (豊作すぎます!)
 ◦ ガールズバンドクライ
 ◦ 夜のクラゲは泳げない
 ◦ 変人のサラダボウル
 ◦ ささやくように恋を唄う
 ◦ 終末トレイン
 ◦ このすば 3期 (神とさせてください)
 ◦ 響け!ユーフォニアム 3期 (神とさせてください)

  2. Kaggleとは
 • コンペティション
 ◦ 企業や政府などが主体となって
 データサイエンスのコンペティションを開催し
 世界中のデータサイエンティストが順位を競います
 
 
 •

    順位に応じてメダルがもらえます
 ◦ ゴールド: 上位1パーセント以内
 ◦ シルバー: 上位5パーセント以内
 ◦ ブロンズ: 上位10パーセント以内

  3. Kaggleとは
 参加者
 Public Score
 モデルや
 コードを提出
 (submission)
 テストデータセット
 Public
 Private


    開催期間中は
 参加者はこれしか見えない 
 Private Score
 Public + Privateで算出 
 最終的な順位はこれで決まる 
 スコアは運営側が用意した 
 環境で計算される

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

  5. コンペ中のアプローチ方針
 
 • いい感じのMean Promptをみつける
 • LLM プロンプトエンジニアリング
 • LLM

    fine-tuning -> 最終的に諦めた
 • 出力プロンプトアンサンブル -> 最終サブミッションはコレだった
 

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

  7. LLMプロンプトエンジニアリング
 • 多段階で推論させる → パブリックスコアには寄与せず
 ◦ プロンプト推定 → 推定したプロンプトをRefineさせるみたいな流れ
 ▪

    多段階にしたことで推論時間がかかってしまう
 • 最終的には1段階の推論でRewrite Promptを出力させてた
 ◦ 入力としてRewrite Promptのサンプルをいくつか追加
 ◦ プラスアルファで、軽いPost Processing (若干スコア上がった)
 ▪ プロンプトが以下から始まる場合はMean Promptのみにする
 • I, prompt, the, this, it, sure, here 
 (これらは経験則から)
 

  8. 最終的に採用しなかったやつ
 
 
 • 多段階推論
 • 出力のPrefixを指定して推論させる
 ◦ Improve…とか、Rewrite…とかから始まるっていうのを
 LLMに渡す


    • 出力の形式をもうすこし具体的にする
 ◦ 具体的な人物・地名は入れない
 ◦ 数字は出さない
 ◦ …みたいなルールをプロンプト内に書いておく

  9. fine-tuneはダメだった
 
 
 • LoRAでLLMをfine-tuningするアプローチを途中まで試していたが断念
 ◦ 手元のValidation/Testスコアとパブリックスコアが相関しない
 
 
 Wikipedia

    
 passages
 original_text
 ChatGPTから
 作成
 rewrite_prompt
 Gemmaから
 作成
 rewritten_text
 +
 Train/Validation/Test Data

  10. fine-tuneはダメだった
 
 
 • LoRAでLLMをfine-tuningするアプローチを途中まで試していたが断念
 ◦ 手元のValidation/Testスコアとパブリックスコアが相関しない
 
 Wikipedia 


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


    passages
 original_text
 ChatGPTから
 作成
 rewrite_prompt
 Gemmaから
 作成
 rewritten_text
 +
 Train/Validation/Test Data
 出典:テニスの王子様 © 許斐 剛/集英社 ※ fine-tuneで結果出してたチームもあり、データの作り方次第で有効だった

  12. プロンプトアンサンブル
 • コンペ中盤、複数の出力を結合するとスコアが上昇することが発覚
 ◦ Predict1 + Predict2 みたいな感じ
 ◦ 最終的に、Mean

    Prompt + LLM Predictが最も良かった
 • (推測の域を出ないが)
 ◦ sentence-t5-baseはmean poolingを採用していて
 embeddingは全トークンベクトルの平均となっている
 ◦ 複数の出力を結合する ≒ ベクトルの平均を取る (厳密には違う)
 ◦ 一般に行われるような出力値を平均するアンサンブルと
 似たような効果が表れたのではないか?
 
 

  13. 採用しなかったアプローチ
 • 出力の結合数を増やす (推論回数を増やして)
 ◦ Mean Prompt + Predict1 +

    Predict2
 • t5 embeddingの埋め込み空間上で近いベクトルを結合する
 ◦ あらかじめローカルデータでembedding空間上でPCA + k-means
 → プロンプトを何種類かに分類
 ◦ 分類した中で、書き換え後の文章と近いプロンプトをくっつける
 
 

  14. 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"

  15. 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>に近い埋め込み値になる文字列を、しらみつぶしに探した

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

  17. まとめ
 • コンペを通してプロンプトエンジニアリングやcos類似度に
 関する知見が広がった
 • 1位の解法がかなりトリッキーだった
 ◦ メトリクスをハックするようなもので
 ある意味勉強になった
 •

    train/test dataの作成に労力を割いていた
 チームが上位に多くいる印象
 ◦ やはりKaggleの基本はデータ
 
 
 
 出典:テニスの王子様 © 許斐 剛/集英社