Basismodelle generieren manchmal Ausgaben, die nicht faktisch korrekt sind. Wenn die sachliche Genauigkeit für Ihr Projekt wichtig ist, richten Sie sich für den Erfolg ein, indem Sie lernen, wie und warum diese Modelle manchmal Fakten falsch bekommen und wie Sie die generierte Ausgabe in richtigen Fakten erstellen können.
Warum Foundation-Modelle Fakten falsch bekommen
Fundamentmodelle können aus einigen Gründen falsch liegen:
- Vor dem Training werden Wortzuordnungen erstellt, nicht Fakten
- Datasets vor dem Training enthalten veraltete Fakten
- Datasets vor dem Training enthalten keine esoterischen oder domänenspezifischen Fakten und Fachjargon
- Die Decodierung von Stichproben ist wahrscheinlicher, dass sie sich von den Fakten entfernt.
Vor dem Training werden Wortzuordnungen erstellt, nicht Fakten
Während des Vortrainings baut ein foundation model ein Vokabular von Wörtern(Tokens) auf, die in den Vortrainingsdatensätzen vorkommen. Auch während des Vortrainings werden statistische Beziehungen zwischen diesen Wörtern in den Modellgewichtungen codiert.
Zum Beispiel erscheint der "Mount Everest" oft in der Nähe des "höchsten Berges der Welt" in vielen Artikeln, Büchern, Reden und anderen gängigen Vortrainingsquellen. Infolgedessen wird ein vortrainiertes Modell wahrscheinlich die Eingabeaufforderung "Der höchste Berg der Welt ist" korrekt vervollständigen. mit der Ausgabe "Mount Everest."
Diese Wortassoziationen können den Eindruck machen, dass Fakten auch in diesen Modellen codiert wurden. Für sehr allgemeines Wissen und unveränderliche Fakten, können Sie viel Glück haben, die sachlich genaue Ausgabe mit vortrainierten Basismodellen mit einfachen Aufforderungen wie dem höchsten-Berg Beispiel zu generieren. Es ist jedoch eine risikoreiche Strategie, sich nur auf vorab trainierte Wortzuordnungen zu verlassen, wenn Basismodelle in Anwendungen verwendet werden, bei denen Genauigkeit wichtig ist.
Datasets vor dem Training enthalten veraltete Fakten
Die Erfassung von Datasets vor dem Training und die Ausführung von Ausführungen vor dem Training können sehr viel Zeit in Anspruch nehmen, manchmal Monate. Wenn ein Modell vor einigen Jahren mit einem Dataset vortrainiert wurde, spiegeln das Modellvokabular und die Wortassoziationen, die in den Modellgewichtungen codiert sind, aktuelle Weltereignisse oder neu beliebte Themen nicht wider. Aus diesem Grund, wenn Sie die Eingabeaufforderung einreichen "Der jüngste Gewinner der Weltmeisterschaft des Fußballs (Fußball) ist" zu einem Modell, das auf Informationen vortrainiert ist, die ein paar Jahre alt sind, wird die generierte Ausgabe nicht auf dem neuesten Stand sein.
Datasets vor dem Training enthalten keine esoterischen oder domänenspezifischen Fakten und Fachjargon
Übliche Datensätze zum Vortraining von foundation model, wie z. B. The Pile (Wikipedia), enthalten Hunderte von Millionen von Dokumenten. Angesichts der Berühmtheit des Mount Everest kann man davon ausgehen, dass ein foundation model eine Beziehung zwischen "höchster Berg der Welt" und "Mount Everest" kodiert hat. Wenn jedoch ein Phänomen, eine Person oder ein Konzept nur in einer Handvoll von Artikeln erwähnt wird, sind die Chancen gering, dass ein foundation model Wortassoziationen zu diesem Thema in seinen Gewichten kodiert hat. Die Aufforderung eines vorab trainierten Modells zu Informationen, die sich nicht in den zugehörigen Datasets vor dem Training befanden, führt wahrscheinlich nicht zu einer sachlich korrekten generierten Ausgabe.
Die Decodierung von Stichproben ist wahrscheinlicher, dass sie sich von den Fakten entfernt.
Die Decodierung ist der Prozess, den ein Modell verwendet, um die Wörter (Tokens) in der generierten Ausgabe auszuwählen:
- Gierige Decodierung wählt immer das Token mit der höchsten Wahrscheinlichkeit aus
- Bei der Stichprobenentschlüsselung werden Tokens pseudo-zufällig aus einer Wahrscheinlichkeitsverteilung ausgewählt
Die Greedy-Decodierung generiert eine besser vorhersehbare und sich wiederholende Ausgabe. Die Stichprobenentschlüsselung ist eher zufällig, was sich "kreativ" anfühlt. Wenn, basierend auf Daten vor dem Training, die wahrscheinlichsten Worte zu folgen "Der höchste Berg ist" sind "Mount Everest", dann könnte gierige Decodierung zuverlässig erzeugen, dass sachlich korrekte Ausgabe, während die Stichprobendecodierung manchmal den Namen eines anderen Berges oder etwas, das nicht einmal ein Berg ist.
So erden Sie die generierte Ausgabe in den richtigen Fakten
Stellen Sie nicht nur vorab trainierte Wortzuordnungen für sachliche Genauigkeit bereit, sondern stellen Sie Kontext in Ihrem Eingabeaufforderungstext bereit.
Verwenden Sie Kontext in Ihrem Eingabeaufforderungstext, um Fakten zu erstellen
Wenn Sie ein foundation model auffordern, eine Ausgabe zu erzeugen, werden die Wörter (Tokens) in der erzeugten Ausgabe von den Wörtern im Modellvokabular und den Wörtern im Aufforderungstext beeinflusst. Sie können Ihren Eingabeaufforderungstext verwenden, um sachlich korrekte Wortzuordnungen aufzuwerten.
Beispiel 1
Hier ist eine Eingabeaufforderung, um ein Modell zu veranlassen, einen Satz zu vervollständigen, der Ihre Lieblingsfarbe deklariert:
My favorite color is
Da nur Sie wissen, was Ihre Lieblingsfarbe ist, gibt es keine Möglichkeit, wie das Modell zuverlässig die richtige Ausgabe generieren kann.
Stattdessen wird eine Farbe aus Farben ausgewählt, die in den Daten vor dem Training des Modells erwähnt werden:
- Wenn gierige Decodierung verwendet wird, wird die Farbe ausgewählt, die am häufigsten mit Anweisungen zu bevorzugten Farben im Inhalt vor dem Training angezeigt wird.
- Wenn die Stichprobenentschlüsselung verwendet wird, wird eine Farbe zufällig aus den Farben ausgewählt, die am häufigsten als Favoriten im Vortrainingsinhalt erwähnt werden.
Beispiel 2
Hier ist eine Eingabeaufforderung, die Kontext zum Erstellen der Fakten enthält:
I recently painted my kitchen yellow, which is my favorite color.
My favorite color is
Wenn Sie ein Modell mit Text anfordern, der faktisch genauen Kontext wie diesen enthält, ist die vom Modell generierte Ausgabe wahrscheinlich genauer.
Weitere Beispiele für das Einschließen von Kontext in Ihre Eingabeaufforderung finden Sie in den folgenden Beispielen:
Weniger "kreative" Decodierung verwenden
Wenn Sie Kontext mit den erforderlichen Fakten in Ihre Eingabeaufforderung einschließen, wird die Verwendung von Greedy-Decodierung wahrscheinlich eine genaue Ausgabe generieren. Wenn Sie eine Vielfalt an Ausgabedaten benötigen, können Sie mit der Decodierung von Stichproben mit niedrigen Werten für Parameter wie Temperature
, Top P
und Top K
experimentieren. Die Verwendung der Stichprobendecodierung erhöht jedoch das Risiko einer ungenauen Ausgabe.
Abruf-Erweiterte Generierung
Das Muster für die abruferweiterte Generierung skaliert das Verfahren zum Extrahieren von Kontext in Eingabeaufforderungen. Wenn Sie über eine Wissensbasis verfügen, z. B. Prozessdokumentation auf Webseiten, legale Verträge in PDF-Dateien, eine Datenbank mit zu verkaufenden Produkten, ein GitHub -Repository mit C + + -Codedateien oder eine andere Sammlung von Informationen, können Sie das Muster für die abruferweiterte Generierung verwenden, um eine sachlich genaue Ausgabe auf der Basis der Informationen in dieser Wissensbasis zu generieren.
Die abruferweiterte Generierung umfasst drei grundlegende Schritte:
- Relevante Inhalte in Ihrer Wissensbasis suchen
- Extrahieren Sie den relevantesten Inhalt als Kontext in Ihre Eingabeaufforderung
- Kombinierten Eingabeaufforderungstext an das Modell senden, um Ausgabe zu generieren
Weitere Informationen finden Sie unter Retrieval-augmented generation
Übergeordnetes Thema: Tipps für Eingabeaufforderungen