これは私が現在取り組んでいるプロジェクトで、生成 AI インタビュー用の質問と回答のリストを作成しようとしています。
私はこのリファレンスをベースとして使用しており、このリファレンスを編集したのは彼らの功績ですが、質問と回答の編集にはかなりの自由を持っており、それらは完全に私自身のものです。
注:私はこのトピックに関して信頼できる情報源ではないため、自分で書く回答は最小限に抑えるよう努めています。私の能力の限り参考資料を提供させていただきます。読みやすくするため、またメンテナンスの複雑さを最小限に抑えるために、いかなる視覚補助も追加することは控えました。私が引用したリソースと参考文献には、ほとんどがビジュアルを含む豊富な情報が含まれています。
私はこれを言語だけでなく生成 AI 一般に拡張し、拡散モデルから視覚言語モデルまですべてをカバーする予定です。基本的な構造を理解し、暫定的な結果に満足したら、このリポジトリに貢献するための効率的な方法論の確立に取り組み、その後、貢献のためにリポジトリを公開しますが、今のところはそのままにしておきたいと思います。シンプルかつ集中的。
重要:
私が提供する回答は、それが私自身の文章であるか、出典を引用しているかに関係なく、いかなる形でも決定的なものではないことを明確にする必要があるかもしれません。私がやろうとしているのは、あなたが始めようとしていることです。正しい道を進み、何が期待できるかについての一般的なアイデアを提供するには、私が提供するすべてのリソースを必ず読んでから、いくつか読んでください。ここを最後の目的地にしたいのであれば、ここはあなたにとって間違った場所です。ここからが始まります。
また、まだ始めたばかりの方への私の唯一のアドバイスは次のとおりです。
論文は終わりがないので、快適に読んでください。
論文の読み方に関する論文: 論文の読み方
1. LLM とプロンプトの基本
2. 検索拡張生成 (RAG)
3. チャンク戦略
4. 検索用のモデルの埋め込み
5. ベクトル検索、データベース、インデックス
6. 高度な検索アルゴリズム
7. 言語モデルの内部動作
各データ ポイントが猫を表すデータセットを考えてみましょう。これを各タイプのモデルに渡して、それらがどのように異なるかを見てみましょう。
大規模言語モデル (LLM) の定義をゼロから構築してみましょう。
詳細: 一般的なクロール
大規模な言語モデルは複数の段階でトレーニングされることが多く、これらの段階は、多くの場合、事前トレーニング、微調整、および調整と呼ばれます。
この段階の目的は、教師なしの方法でモデルを言語のすべてに公開することです。これは多くの場合、トレーニングで最もコストがかかる部分であり、大量のコンピューティングを必要とします。事前トレーニングは Common Crawl データセットなどで行われることが多く、FineWeb や RedPajama などのデータセットの処理済みバージョンが事前トレーニングによく使用されます。この広範なタイプの学習を促進するために、マスク言語モデリング (MLM)、次文予測 (NSP) など、使用できる複数のトレーニング タスクが存在します。
マスク言語モデリングは、文内の単語をマスクし、モデルにそれを予測するように依頼する Cloze テストに基づいています。穴埋めテストと似ています。これは、モデルが単語のシーケンスだけでなく文のコンテキストを理解する必要があるため、モデルに文内の次の単語を予測するように依頼するのとは異なります。
次の文の予測は、モデルに 2 つの文が与えられ、2 番目の文が最初の文の後に続くかどうかを予測するタスクです。簡単そうに聞こえますが、モデルが最初の文のコンテキストと 2 つの文の間の関係を理解する必要があります。
これらのタスクについて詳しく学ぶための優れたリソースは、BERT の論文です。
モデルはすでに言語について多くのことを学習しているため、この段階は事前トレーニングよりもはるかに簡単です。後は特定のタスクについてモデルに教えるだけです。この段階で必要なのは、入力データ (プロンプト) とラベル (応答) だけです。
この段階は多くの場合、最も重要かつ複雑な段階であり、個別の報酬モデルの使用、強化学習などのさまざまな学習パラダイムの使用などが必要になります。
この段階の主な目的は、モデルの予測を人間の好みと一致させることです。この段階は、多くの場合、微調整段階と織り交ぜられます。この段階での必読書は InstructGPT 論文です。この論文では、近接ポリシー最適化を使用するヒューマン フィードバックからの強化学習 (RLHF) の概念が紹介されています。
モデルの予測を人間の好みに合わせる他の方法には、次のようなものがあります。
トークンは、モデルが理解できるテキストの最小単位であり、単語、サブワード、または文字にすることができます。
トークナイザーはテキストをトークンに変換する役割を果たします。トークナイザーは、テキストをスペースで分割するという単純なものもあれば、サブワードのトークン化を使用するような複雑なものも可能です。トークナイザーの選択は、テキストのコンテキストを理解するモデルの能力に影響を与える可能性があるため、モデルのパフォーマンスに大きな影響を与える可能性があります。
一般的なトークナイザーには次のものがあります。
推奨される読書 (および視聴):
これは非常に内容の多い質問ですが、このトピックをさらに詳しく調べるためのリソースをいくつか紹介します。
パラメータには次のものが含まれます。
これらの各パラメーターを調整して、モデルのパフォーマンスと生成されるテキストの品質を向上させることができます。
推奨読書:
デコード戦略は、シーケンス内の次のトークンを選択するために使用されます。デコード戦略は、単純な貪欲なデコードからより複雑なサンプリング戦略まで多岐にわたります。
一般的なデコード戦略には次のようなものがあります。
新しいデコード戦略には、突飛な概念である投機的デコード (デコード支援) が含まれます。これには、より小さな (したがって高速な) モデルからの候補トークンを使用して、より大きなモデルからの応答を非常に迅速に生成することが含まれます。
推奨読書:
デコード プロセスでは、LLM は自己回帰的に一度に 1 トークンずつテキストを生成します。テキストの生成をいつ停止するかを決定するために使用できる停止基準がいくつかあります。一般的な停止基準には次のようなものがあります。
A prompt contains any of the following elements:
Instruction - a specific task or instruction you want the model to perform
Context - external information or additional context that can steer the model to better responses
Input Data - the input or question that we are interested to find a response for
Output Indicator - the type or format of the output.
参考: プロンプトエンジニアリングガイド
推奨読書:
参考: プロンプトエンジニアリングガイド
推奨読書:
インコンテキスト学習は、自然言語処理における非常に直観的で理解しやすい学習パラダイムです。これには、少数ショット学習などの概念が含まれます。モデルに実行させたいタスクの例をいくつか提供するのと同じくらい簡単です。モデルはそれらの例から学習し、それに応じて応答を生成します。
推奨読書:
コンテキスト内学習は、モデルが特定のサイズにスケールされ、モデルがさまざまなタスクのセットでトレーニングされた場合にのみ現れることが示されています。モデルが複雑な推論タスクを実行できない場合、コンテキスト内学習は失敗する可能性があります。
推奨読書:
これは非常に幅広い質問ですが、次の内容は、特定のタスクのプロンプトをデザインする方法についての基本的な理解を助けるでしょう。
あるいは、新しい研究の方向性では、プロンプトを最適化するアルゴリズム的な方法を使用して調査しています。これは、これを行う手段を提供する DSPy パッケージで広範囲に調査されており、その成果もこの論文で公開されています。
この質問に対する答えはありません。この参考文献をリンクする口実として挙げておきます。
LLM に毎回解析可能な構造化出力を生成させる方法は複数あり、一般的な方法は LLM の関数呼び出しの概念に依存します。
推奨される読書と閲覧:
The term describes when LLMs produce text that is incorrect, makes no sense, or is unrelated to reality
参考資料: LLM 幻覚—タイプ、原因、および解決策 (Nexla 著)
推奨読書:
思考連鎖プロンプトの概念は、LLM の推論能力を強化することが知られています。この手法には、複雑なタスクを一連の単純なタスクに分割し、各タスクの中間出力をモデルに提供して最終出力に向けてガイドすることが含まれます。
推奨読書:
検索拡張生成 (RAG) は、LLM の回答を事実に基づいて行うための一般的な設計パターンです。この手法には、知識ベースから関連情報を取得し、それを使用して LLM によるテキスト生成をガイドすることが含まれます。
推奨読書:
検索拡張生成 (RAG) は、次の 2 つの主要コンポーネントで構成されます。
RAG の背後にある直感は、検索ベースのモデルと生成ベースのモデルの長所を組み合わせることで、事実に基づいたテキストを生成して幻覚を制限できるシステムを作成できるということです。
RAG は、モデルが外部情報を活用してより正確で有益な回答を提供できるため、ナレッジ ベースに基づいて複雑な質問に回答するための頼りになる手法であることがよくあります。独自のデータに基づいてモデルを微調整することは必ずしも実現可能ではありません。RAG は、微調整を必要とせずに外部の知識を組み込む方法を提供します。
RAG を利用してナレッジ ベースに基づいて複雑な質問に答える完全なソリューションには、次の手順が含まれます。
これは非常に内容の多い質問ですが、このトピックをさらに詳しく調べるためのリソースをいくつか紹介します。
テキストのチャンク化は、大きなテキストを、より小さく管理しやすいチャンクに分割するプロセスです。 RAG システムのコンテキストでは、チャンク化により取得コンポーネントがナレッジ ベースから関連情報を効率的に取得できるようになるため、チャンク化は重要です。クエリをより小さなチャンクに分割することで、取得者は各チャンクに関連する情報の取得に集中できるため、取得プロセスの精度と効率が向上します。
検索ツールとしてよく使用される埋め込みモデルのトレーニング中に、テキストの正と負のペアを使用して、テキストのどの部分が互いに対応するかを示します。例には、Wikipedia ページのタイトル、ヘッダー、サブヘッダー、およびそれらに対応する段落が含まれます。 、redditの投稿と投票数の多いコメントなど。
多くの場合、ユーザー クエリが埋め込まれ、インデックスがクエリされます。上位 k 件のヒットをクエリするためにインデックス内にドキュメント全体が含まれている場合、取得者はドキュメントがクエリされるため、最も関連性の高い情報を返すことができません。大きすぎて理解できないでしょう。
要約すると、テキストをチャンク化する理由は次のとおりです。
24 章、合計 240 ページを含む本があるとします。これは、各章に 10 ページが含まれ、各ページに 3 つの段落が含まれることを意味します。各段落に 5 つの文が含まれており、各文に 10 個の単語が含まれていると仮定します。合計すると、章ごとに 10 * 5 * 3 * 10 = 1500 ワードになります。また、本全体では 1500 * 24 = 36000 語を収録しています。簡単にするために、トークナイザーは空白トークナイザーであり、各単語がトークンです。
最大でも 8192 個のトークンを埋め込むことができる埋め込みモデルがあることがわかっています。
これらはすべて、テキストをチャンクする固定の方法はなく、テキストをチャンクする最良の方法は、自分のユースケースに最適なものを実験して確認することであることを示すためです。
このトピックに関する信頼できる情報源は、Greg Kamradt による優れたノートブックとそれに付随するビデオで、さまざまなレベルのテキスト分割について説明しています。
このノートブックでは、さまざまなレベルのテキスト分割を評価および視覚化する方法と、それらを検索システムで使用する方法についても説明します。
推奨される視聴方法:
ベクトル埋め込みは、ベクトルがテキストを表す N 次元空間へのテキストの意味論のマッピングであり、ベクトル空間内では、類似のテキストは類似のベクトルで表されます。
推奨読書:
埋め込みモデルは、テキストをベクトル化する目的でトレーニングされた言語モデルであり、多くの場合 BERT 派生であり、テキストのセマンティクスを学習するためにテキストの大規模なコーパスでトレーニングされます。ただし、最近の傾向では、より大規模な言語モデルを使用できることも示されています。ミストラルやラマなどのこの目的のために。
推奨される読書と閲覧:
埋め込みモデルは検索機能を活用するために検索機能として使用されることが多く、モデルによって生成されたベクトルの類似性がドット積、コサイン類似度などのメトリクスを使用して測定される場合、意味論的なテキストの類似性が使用されます。
推奨読書:
エンベディング モデルは、単純なコントラスト損失から、InfoNCE や複数のネガティブ ランキング損失などのより複雑な損失関数に至るまで、コントラスト損失を使用してトレーニングされます。ハード ネガティブ マイニングとして知られるプロセスもトレーニング中に利用されます。
推奨読書:
対照学習は、埋め込みモデルをトレーニングするために使用される手法であり、テキストの正のペアと負のペアを区別する学習が含まれます。モデルは、正のペア間の類似性を最大化し、負のペア間の類似性を最小化するようにトレーニングされます。
推奨読書:
クロスエンコーダーとバイエンコーダーは、テキスト検索タスクに使用される 2 種類のモデルです。 2 つの主な違いは、クエリとドキュメントをエンコードする方法です。
通常、リランカーはクロスエンコーダーであり、クエリとドキュメントを一緒にエンコードし、2 つの間の類似性を計算します。これにより、クエリとドキュメント間の対話をキャプチャでき、計算の複雑さは大幅に高くなりますが、バイエンコーダよりも優れた結果を生成できます。
テキスト埋め込みモデルは通常、バイエンコーダであり、クエリとドキュメントを別々にエンコードし、2 つの埋め込み間の類似性を計算します。これにより、クロスエンコーダーよりも計算効率が高くなりますが、クエリとドキュメント間の明示的な対話をキャプチャすることはできません。
テキスト埋め込みモデルでは、単一ベクトルの高密度表現が標準であることが多く、これらは通常、モデルからの前方パスの後にコンテキスト化された埋め込みをプールすることによって生成されます。プーリング手法には、平均プーリング、最大プーリング、および CLS トークン プーリングが含まれます。単一ベクトルの密な表現の背後にある直感は、実装が簡単で幅広いタスクに使用でき、インデックス付けと検索が容易であるということです。密な表現はテキストの意味を捉えることもでき、第 2 段階のランキングでよく使用されます。
マルチベクトルの密な表現は、単一ベクトルの密な表現よりも優れた結果を生み出すことが示されています。これらは、プーリングのステップをスキップし、マトリックスの形式でコンテキスト化された埋め込みを使用することによって生成されます。その後、クエリとドキュメントの埋め込みを使用して、クエリとドキュメントの埋め込み間の類似性が計算されます。 2 つ目は、ColBERT などのモデルは、単一ベクトルの密な表現よりも優れた結果を生み出すことが示されています。 MaxSim などの演算子は、クエリとドキュメントの埋め込み間の類似性を計算するために使用されます。マルチ ベクトルの密表現の背後にある直感は、テキストに関するより多くの情報を取得でき、単一ベクトルの密表現よりも優れた結果を生成できるということです。ColBERT などのモデルは、ドキュメントの埋め込みを事前計算する機能も提供し、非常に効率的な検索を可能にします。密な表現はテキストの意味を捉えることもでき、第 2 段階のランキングでよく使用されます。
推奨読書:
スパース テキスト表現は、情報検索におけるベクトル空間モデルの最も古い形式であり、通常は TF-IDF の派生モデルや BM25 などのアルゴリズムに基づいており、テキスト検索システムのベースラインであり続けています。それらの希薄さは、埋め込みの次元が語彙のサイズに対応することが多いという事実に由来しています。スパース表現の背後にある直観は、スパース表現が説明可能で、計算効率が高く、実装が簡単で、インデックス付けと検索が非常に効率的であるということです。スパース表現も語彙の類似性に焦点を当てており、第 1 段階のランキングでよく使用されます。
推奨読書:
スパース テキストの埋め込みにより、検索中に逆インデックスを使用できます。
推奨読書:
埋め込みモデルのパフォーマンスをベンチマークするためのメトリクスには、次のものが含まれます。
推奨される読書と閲覧:
埋め込みモデルの選択は、検索システムのパフォーマンスにおいて極めて重要な要素となる可能性があるため、選択する際には慎重に検討する必要があります。これは実験を伴う広範なプロセスであり、次のリソースは情報に基づいた決定を下すのに役立ちます。
推奨される視聴方法:
ベクトル データベースは、ベクトル データの保存とクエリのために最適化されたデータベースです。これにより、ベクトル埋め込みの効率的な保存と取得が可能になり、意味的な類似性検索を必要とするアプリケーションでよく使用されます。ベクター データベースは、GenAI アプリケーションの要求に応えるために必要な技術スタックの一部として登場した新しいパラダイムです。
推奨される視聴方法:
従来のデータベースは、テキスト、数値、日付などの構造化データの保存とクエリを行うために最適化されています。これらはベクトル データを効率的に処理するように設計されていません。一方、ベクトル データベースは、ベクトル データの保存とクエリを行うために特別に設計されています。特殊なインデックス作成技術とアルゴリズムを使用して、ベクトルの量子化やクラスタリングなどの高速かつ正確な類似性検索を可能にします。
通常、ベクトル データベースにはベクトルのインデックスが含まれており、これらのインデックスにはベクトル埋め込みの行列が含まれており、多くの場合、効率的にクエリできるように順序付けされたグラフ データ構造も使用されます。クエリが行われるとき、テキストまたはベクトル埋め込みが入力として提供され、テキストの場合は埋め込まれ、ベクトル データベースは適切なインデックスをクエリして、距離メトリックに基づいて最も類似したベクトルを取得します。通常、ベクトルはコサイン類似度、ドット積、ユークリッド距離などの指標を使用して比較されます。ベクトルは、ドキュメント ID、ドキュメント タイトル、対応するテキストなどの情報を含むメタデータの辞書にも関連します。
ベクトル データベースの検索戦略には次のようなものがあります。
推奨読書:
ベクトルにインデックスが付けられると、多くの場合、検索スペースを減らすためにクラスタ化されます。これは、検索プロセス中に比較する必要があるベクトルの数を減らすために行われます。クラスタリングは、類似したベクトルをグループ化し、クラスターにインデックスを付けることによって行われます。クエリが作成されると、検索は最初にクラスター レベルで実行され、次にクラスター内のベクトル レベルで実行されます。 K 平均法などのアルゴリズムは、クラスタリングによく使用されます。
推奨読書:
これは明らかに非常に内容の多い質問ですが、このトピックをさらに詳しく調べるためのリソースをいくつか紹介します。
Vector quantization, also called "block quantization" or "pattern matching quantization" is often used in lossy data compression. It works by encoding values from a multidimensional vector space into a finite set of values from a discrete subspace of lower dimension.
参照:ベクター量子化
One general approach to LSH is to “hash” items several times, in such a way that similar items are more likely to be hashed to the same bucket than dissimilar items are.
参照:大規模なデータセットのマイニング、第3版、第3章、セクション3.4.1
読書をお勧めします:
In short, PQ is the process of:
- Taking a big, high-dimensional vector,
- Splitting it into equally sized chunks — our subvectors,
- Assigning each of these subvectors to its nearest centroid (also called reproduction/reconstruction values),
- Replacing these centroid values with unique IDs — each ID represents a centroid
参照:製品の量子化
読書をお勧めします:
The Inverted File Index (IVF) index consists of search scope reduction through clustering.
参照:反転ファイルインデックス
読書をお勧めします:
階層的な航行可能な小さな世界(HNSW)は、ベクターの検索の最先端のアルゴリズムであることが多いことがよくあります。これは、ベクトルのグラフを構築し、それを使用して近隣の近隣検索を実行するために使用するグラフベースのアルゴリズムです。
読書をお勧めします:
ベクトル検索で使用される距離と類似性メトリックは次のとおりです。
推奨表示:
これは非常に積極的な研究トピックであり、権威ある情報源は存在しませんが、このトピックをさらに調査するためのリソースを次に示します。
また、情報検索、推奨システム、および検索エンジンの分野の確立されたパターンとアーキテクチャに基づいて、検索、検索、および再ランキングシステムが構築されていることも注目に値します。
あなたが探求したいかもしれないいくつかのシステムアーキテクチャは次のとおりです。
大規模システムで適切に検索するには、効率的なインデックス作成、検索、およびランキングテクニックの組み合わせが含まれます。大規模なシステムで適切な検索を実現するためのいくつかの戦略には次のものがあります。
プロセス全体が複雑さの増加の段階で行われていることに気付くかもしれません。これは、段階的ランキングまたは多段階検索として知られています。
読書をお勧めします:
しかし、大規模なシステムで適切な検索を達成することの最も重要な側面は、検索戦略とランキング戦略を実験して反復し、システムのパフォーマンスを継続的に監視および評価することです。
読書をお勧めします:
検索、検索、RAGシステムの改善に関する推奨講演:
高速検索の達成には、非自明のエンジニアリングの取り組みが必要なインデックス作成と検索プロセスの最適化が含まれます。以下は、検索および検索最適化の分野における現在の景観の例です。
ベクトル検索中の現在の最新法は、マルチベクトル埋め込み(後期相互作用)が単一のベクトル埋め込みよりも優れたパフォーマンスを示していますが、検索の最適化は重要なエンジニアリングの課題をもたらします。
BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document, regardless of their proximity within the document.
参照:BM25
再ランキングモデルは、クエリとドキュメントのペアを取得するように訓練されたシーケンス分類モデル、および生の類似性スコアを出力するシーケンス分類モデルです。
推奨読書、表示、視聴:
RAGシステムを評価するには、レトリバー、ジェネレーター、レランカーなど、システムの個々のコンポーネントを実験して評価する必要があります。
読書をお勧めします:
注:ここから、できる限り回答することを控え、論文や参照をリンクするだけで、この部分は間違いなくより複雑な部分の1つであるため、多くの読書と理解が必要です。
注意を理解するには、変圧器のアーキテクチャとその前身のアーキテクチャに精通する必要があります。ここにあなたが始めるためのいくつかのリソースがあります:
自己関節の主なボトルネックは、シーケンス長に関する二次の複雑さです。自己atentionの不利な点を理解するには、注意の代替手段に慣れる必要があります。以下は、始めるのに役立ちます。
LLMSで位置情報をエンコードする方法は複数あります。最も一般的な方法は、絶対位置エンコーディングとして知られる正弦波位置エンコーディングを使用することです。他の方法には、相対的な位置エンコーディング、および回転位置埋め込みなどの新しい方法が含まれます。ここにあなたが始めるためのいくつかのリソースがあります:
KVキャッシュを理解するには、変圧器アーキテクチャとその制限に精通する必要があります。
読書をお勧めします:
専門家の混合は、LLMSのアーキテクチャの一種であり、それがどのように機能するかを理解するために、最も顕著なMOEモデルをカバーする次のリソースを通過する必要があります。