Zero-Shot- und Few-Shot-Lernen
In diesem Artikel wird das Zero-Shot-Lernen und das Few-Shot-Lernen für Prompt Engineering in .NET erläutert, einschließlich ihrer primären Anwendungsfälle.
Die GPT-Modellleistung profitiert von Prompt Engineering, der Praxis, Anweisungen und Beispiele für ein Modell bereitzustellen, um seine Ausgabe zu verfeinern. Zero-Shot-Lernen und Few-Shot-Lernen sind Techniken, die Sie beim Bereitstellen von Beispielen verwenden können.
Mit Zero-Shot-Lernen verwenden Sie Eingabeaufforderungen, aber keine wörtlichen Vervollständigungen. Sie können Vervollständigungen einschließen, die nur aus Cues bestehen. Zero-Shot-Lernen basiert vollständig auf dem vorhandenen Wissen des Modells, um Antworten zu generieren, was die Anzahl der erstellten Token reduziert und Ihnen dabei helfen kann, Kosten zu kontrollieren. Das Zero-Shot-Lernen fügt dem Modell jedoch kein Wissen hinzu.
Es folgt eine Beispielaufforderung mit Zero-Shot-Prompt, die das Modell anweist, die Benutzereingabe auszuwerten, um zu bestimmen, welche von vier möglichen Absichten die Eingabe darstellt, und dann die Antwort mit „Absicht: “ einzuleiten.
prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent:
""";
Mit Few-Shot-Lernen verwenden Sie Eingabeaufforderungen, die mit wörtlichen Vervollständigungen gekoppelt sind. Im Vergleich zum Zero-Shot-Lernen bedeutet dies, dass das Few-Shot-Lernen mehr Token produziert und das Modell dazu veranlasst, sein Wissen zu aktualisieren, was dazu führen kann, dass das Few-Shot-Lernen ressourcenintensiver ist. Aus denselben Gründen hilft das Few-Shot-Lernen dem Modell jedoch auch, relevantere Antworten zu produzieren.
prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage
User Input: Can you send the full update to the marketing team?
Intent: SendEmail
User Input: {request}
Intent:
""";
Anwendungsfälle für Zero-Shot-Lernen
Beim Zero-Shot-Lernen werden Aufforderungen weitergegeben, die nicht mit wörtlichen Vervollständigungen verbunden sind, obwohl sie mit einem Cue verbunden sein können. Es gibt zwei primäre Anwendungsfälle für Zero-Shot-Lernen:
- Arbeiten mit fein abgestimmten LLMs: Da es sich auf das vorhandene Wissen des Modells stützt, ist das Zero-Shot-Lernen nicht so ressourcenintensiv wie das Few-Shot-Lernen, und es eignet sich gut für LLMs, die bereits auf Anweisungsdatensets abgestimmt wurden. Möglicherweise können Sie sich ausschließlich auf Zero-Shot-Lernen verlassen und die Kosten relativ niedrig halten.
- Einrichten von Leistungsbaselines: Zero-Shot-Lernen kann Ihnen dabei helfen zu simulieren, wie Ihre App für tatsächliche Benutzer ausgeführt wird. Auf diese Weise können Sie verschiedene Aspekte der aktuellen Leistung Ihres Modells auswerten, z. B. Genauigkeit oder Präzision. In diesem Fall verwenden Sie in der Regel Zero-Shot-Lernen, um eine Leistungsbasislinie einzurichten und dann mit wenigen Schritten zu experimentieren, um die Leistung zu verbessern.
Anwendungsfälle für Few-Shot-Lernen
Beim Few-Shot-Lernen werden Eingabeaufforderungen mit wörtlichen Vervollständigungen (Few-Shot-Prompts) kombiniert, um Ihrem Modell zu zeigen, wie es reagieren soll. Im Gegensatz zum Zero-Shot-Lernen kann Few-Shot-Lernen dem Modell Wissen hinzufügen. Sie können sogar eigene Datasets verwenden, um automatisch Few-Shot-Prompts zu generieren, indem Sie die Retrieval-Augmented Generierung durchführen.
Few-Shot-Lernen hat zwei primäre Anwendungsfälle:
- Optimieren eines LLM: Da es das Wissen des Modells erweitern kann, kann das Few-Shot-Lernen die Leistung eines Modells verbessern. Es führt auch dazu, dass das Modell mehr Token erzeugt als beim Zero-Shot-Lernen, was letztendlich sehr teuer oder sogar undurchführbar werden kann. Wenn Ihr LLM jedoch noch nicht optimiert ist, erhalten Sie mit Zero-Shot-Prompts keine gute Leistung und Few-Shot-Lernen ist besser geeignet.
- Beheben von Leistungsproblemen: Sie können Few-Shot-Lernen im Anschluss an Zero-Shot-Lernen verwenden. In diesem Fall verwenden Sie Zero-Shot-Lernen, um eine Leistungsbasislinie einzurichten und experimentieren dann mit Few-Shot-Lernen basierend auf den verwendeten Zero-Shot-Prompts. Auf diese Weise können Sie das Wissen des Modells erweitern, nachdem Sie gesehen haben, wie es derzeit reagiert. So können Sie iterieren und die Leistung verbessern, während Sie die Anzahl der Token, die Sie einführen, minimieren.
Vorbehalte
- Beispielbasiertes Lernen funktioniert nicht gut für Aufgaben, die komplexe Erläuterungen umfassen. Das Hinzufügen von Anweisungen kann jedoch helfen.
- Few-Shot-Lernen erfordert das Erstellen langer Eingabeaufforderungen. Eingabeaufforderungen mit einer großen Anzahl von Token können die Berechnung und Latenz erhöhen. Dies bedeutet in der Regel höhere Kosten. Es gibt auch ein Limit für die Länge der Eingabeaufforderungen.
- Wenn Sie mehrere Beispiele verwenden, kann das Modell falsche Muster lernen, z. B. „Die Wahrscheinlichkeit, dass die Stimmung positiv ist, ist doppelt so hoch wie die, dass sie negativ ist.“