GENZITSU / UsefulMaterials

34 stars 0 forks source link

almost weekly useful materials - 1/10 - #142

Open GENZITSU opened 4 months ago

GENZITSU commented 4 months ago

Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4

LLMに対するプロンプトの書き方が性能に与える影響を調べることで、26の原則をまとめてくれている論文

各原則によってどれくらい性能が向上するかの定量評価がなされているのがユニークなポイント

スクリーンショット 2024-01-04 14 14 33

  1. LLMに対して丁寧な言葉遣いは不要 please, if you don’t mindなどのフレーズは不要

  2. 意図された聴衆の情報を入れる 成果物の使われ方を入れるということ…?

  3. 複雑なタスクはinteractiveな会話形式の連続した簡単なタスクに分解する

  4. don’t ではなく doを用いる

  5. 詳細に説明してほしい時には OOについて簡単な単語で教えてください XX歳の人に向けた説明にしてください 初心者に向けた説明にしてください

  6. 良い回答には$xxxのtipを進呈すると追加する

  7. few-shot を与える

  8. Instruction ###, ### Example ### といったセパレーターを利用する

  9. タスクを明示するための文言を追加する your task is you must

  10. 不適切な行動を抑止するには you will be penalized

  11. より自然な文章を生成してもらうためには Answer a question given in a natural, human-like manner

  12. think step by step を追加する

  13. 偏見や固定観念にとらわれないようにするためには Ensure that your answer is unbiased and does not rely on stereotypes

  14. モデルが必要な情報を得るためにinteractiveに質問をできるようにする “From now on, I would like you to ask me questions to…

  15. 説明と同時に理解を問うテストの生成を依頼する Teach me the OO and include a test at the end, but don’t give me the answers and then tell me if I got the answer right when I respond

  16. モデルに役割を持たせる

  17. 区切り文字を利用する

  18. 特定の単語を複数回プロンプトに入れる

  19. CoTとfew-shotを組み合わせる

  20. 理想とする出力の出だしをプロンプトの最後に追加する

  21. 詳細な文章を書いてもらう際に以下の文章を追加する Write a detailed [essay/text /paragraph] for me on [topic] in detail by adding all the information necessary

  22. 文意を変えずにスタイルの校正をお願いするには Try to revise every paragraph sent by users. You should only improve the user’s grammar and vocabulary and make sure it sounds natural. You should not change the writing style, such as making a formal paragraph casual

  23. 複数のファイルにまたがるコードを書いてもらうには From now and on whenever you generate code that spans more than one file, generate a [programming language ] script that can be run to automatically create the specified files or make changes to existing files to insert the generated code. [your question]

  24. 特定の単語を用いた、文章を作成してもらうには I’m providing you with the beginning [song lyrics/story/paragraph/essay...]: [Insert lyrics/words/sentence]’. Finish it based on the words provided. Keep the flow consistent.

  25. モデルが満たすべき要件をキーワードやルール、ヒントなどで簡潔に伝える

  26. サンプルに似た文章を生成してもらうには Please use the same language based on the provided paragraph[/title/text /essay/answer].

スクリーンショット 2024-01-04 14 15 26

コメント

パフォーマンスのグラフ的には 14, 26, 2, 5, 25, 24の影響がでかいっぽい。 ただ、14はプログラマティカルにはやるには厳しい 汎用的に使えて、効果が高いのは2, 5, 25, 16, 9あたりで、自分にとって斬新だったのは2くらいか

出典

GENZITSU commented 4 months ago

llm-translator

wikipediaの日英対訳コーパスを用いてmistralai/Mixtral-8x7B-Instruct-v0.1を学習させるスクリプトがまとまっているレポジトリ。

コメント

LLMを特定タスク用に学習させるためのスクリプトが綺麗に描かれていてとても参考になる。 学習に用いられていた対訳コーパスの存在も知らなかった。 また、学習結果のモデルも公開されており、ローカルで利用できるOSSの翻訳モデルとしても貴重。

出典

GENZITSU commented 4 months ago

Google Colab で vLLM を試す

LLMモデルの推論を高速化するためのライブラリvLLMの使い方を説明している記事。

複数のプロンプトに対する生成を一括で行うことも可能で、1つのプロンプトの生成が4秒だったところ、3つにしても5秒にしかならないという結果を確認している

コメント

代わりに消費GPUも増えるらしい(参考リンク)がここまで高速化できるのは便利すぎる。 ローカルLLMモデルに簡単なNLPタスクをお願いしたいケースが結構あるのでそういったときにマストになりそう。

出典

GENZITSU commented 4 months ago

言語モデルを用いたQuery Categorization

Query Understangindの1つの手法である、Query Categorizationを文書分類的な方法で実践する方法の紹介

Query Categorizationとは検索クエリが事前に定義された分類のどれに当てはまるかを分類する手法のこと

手法1: ルールベース

スクリーンショット 2024-01-05 11 06 41

シンプルかつ強力な手法であるが、ルールのメンテナンスが大変。 特に、キャンペーンなどのトレンド変化があるときはメンテナンスが大変そう

手法2: クエリログを用いたMLモデルの学習

2018年のLinらの論文ではxgboostやFasttextなどが使われていた

スクリーンショット 2024-01-05 11 09 16

メルカリでどのような特徴量/モデルが使われたかは不明だが、F1で0.72の精度だったのこと

条件・モデル構造は異なりますが弊チームでも同様にクエリログ及びクリックログを用い、クエリから商品の各カテゴリのクリックされやすさを予測するマルチクラス分類予測の学習をさせた機械学習モデルを作成しました。その結果、我々のテストデータではmicro-F1スコア 0.72となりました。

手法3: 言語モデルの適用

スクリーンショット 2024-01-05 11 11 00

自社データでFine TuningしたDistilBERT + 分類機を作成することで F1で0.8。なかなか良い結果が出ている。

前段部分にあたるDistilBERTは事前学習済みのモデルから自社のデータでFine Tuningしたものを流用しており、今回の検証では後段の分類器のみを先述の機械学習的アプローチと同様にクエリログ及びクリックログから学習させた形になります。学習させたモデルのパフォーマンスは、我々のテストデータでの評価ではmicro-F1スコア 0.80となりました。

実際に本モデル及び前項に記載した機械学習モデルをオンラインテストで比較したところ、変換対象となったキーワードのカバレッジが本構成において2倍になっており、今後改善を行う上で汎用性の高い言語モデルであるBERTを用いるメリットが確認できました。

コメント

query categorizationはRAGにも応用できそうだ。

出典

GENZITSU commented 4 months ago

Retrieval-Augmented Generationシステムの改善方法の紹介

表題の通りである。

個人的に面白かったのはColBERTについての言及

ColBERTというニューラル検索手法です。 ColBERTでは文書埋め込みではなく、単語やトークンの埋め込みを使用します。 このアプローチは、単語レベルの埋め込みを使用することで、文書の表現のバリエーションや単語の同義語を考慮しながら、キーワード検索の完全一致にも対応できます。 詳細についてはこちらを参照してください。

コメント

特になし

出典

GENZITSU commented 4 months ago

Advanced RAG Techniques: an Illustrated Overview

RAGの性能を高めるためのテクニック集を紹介している記事

個人的に勉強になったのはQuery Rewriterの部分

  • Step-back prompting uses LLM to generate a more general query, Here is a LangChain implementation.
  • Query re-writing uses LLM to reformulate initial query in order to improve retrieval. Both LangChain and LlamaIndex have implementations, tough a bit different, I find LlamaIndex solution being more powerful here.

コメント

色々調べてみると似たような事しか書いてないことがわかる

出典

GENZITSU commented 4 months ago

A Guide on 12 Tuning Strategies for Production-Ready RAG Applications

同じくRAGの性能を高めるためのテクニック集を紹介している記事

コメント

上記2記事とそこまで内容的な差はないが、念の為のメモ

出典