Kontext
Verwenden großer Sprachmodelle (LLMs), ICHN-COntext LDas Verdienst (ICL), wobei LLMs und Ausgabe vor dem Umgang mit dem nächsten Eingang von ihnen gelernt werden, hat sich als sehr effektiv in der richtigen Richtung erwiesen. Es wurden mehrere ICL -Strategien entwickelt. Einige beliebte sind One-Pictures (ein Beispiel), nur wenige Schüsse (mehrere Beispiele liefern), die Gedankenkette (in Beispielen Schritt-für-Schritt-Argumentation zeigen)… usw. Nehmen wir ein einfaches Beispiel, um das Lernen des Kontextes besser zu verstehen.
Wenn Sie ein LLM fragen: „Welches Tier macht den Sound“ Moo „und was ist sein Typ?“ Möglicherweise erwarten Sie eine Antwort als „Kuh, Säugetier“. LLMs geben jedoch weitere Informationen. Wenn beispielsweise die gleiche Frage gestellt wurde, gab Chatgpt die folgende Antwort:
Consumer: What animal makes the sound 'moo' and what's its kind?
The animal that makes the sound "moo" is a cow.
Animal: Cow
Kind: Mammal (particularly, a domesticated ungulate belonging to the species Bos taurus)
Different examples of non-mammals embrace birds (like eagles 🦅), reptiles (like snakes 🐍)
, fish (like salmon 🐟), and bugs (like butterflies 🦋).
Hyperlink: https://chatgpt.com/share/6886636f-7b48-8000-a477-54405edd7e43
Um dem LLM zu lehren, wie wir erwartet werden (Tiername, Typ), können wir die LLM entweder in unserem erwarteten Format optimieren (Zug), was kein praktikabler Ansatz ist, da das Coaching von LLMs erhebliche Ressourcen erfordert. Alternativ können wir während der Inferenz Beispiele angeben, bevor wir die Frage stellen, um dem LLM unser erwartetes Format zu unterrichten. Genau das ist das Lernen des Kontextes. LLMs lernen das Muster aus den bereitgestellten Beispielen, um die vorliegende Aufgabe auszuführen. Hier finden Sie die gleiche Interaktion mit CHATGPT mit Beispielen in Kontext:
Consumer: What animal makes the 'woof' sound and what's its kind?
Assistant: Canine, mammal
Consumer: What animal makes the 'meow' sound and what's its kind?
Assistant: Cat, mammal
Consumer: What animal makes the sound 'moo' and what's its kind?
Diesmal gab die LLM die richtige Antwort: Kuh, Säugetier.
Hyperlink: https://chatgpt.com/share/688664f0-96f0-8000-9125-6a40b24d2773
Wie wir sehen können, passen sich LLMs intestine an das In-Kontext-Lernen (ICL) an, um ihre Ziele zu erreichen. Forschung hat gezeigt, dass ICL die Leistung und Genauigkeit von LLMs erhöht. Aber ICL ist zerbrechlich. Die Leistung ist sehr empfindlich für die von Ihnen ausgewählten Beispiele, ihre Ordnung und sogar geringfügige Formatierungsänderungen. ICL arbeitet eher ein Muster -Matching als das wahre Lernen durch und stützt sich daher stark auf oberflächliche Hinweise. Stellen Sie sich vor, eine komplexe Aufgabe wie Codereparatur, Textual content-zu-SQL… usw., eine Reihe von Beispielen könnte intestine funktionieren, während eine andere Various die Genauigkeit erheblich fallen lassen kann. Daher ist die Hauptherausforderung von ICL “So wählen Sie Beispiele aus, die tatsächlich helfen (nicht irgendwelche Beispiele)? “
In diesem Beitrag werden wir uns die Forschungsarbeit ansehen AUPAIR: Goldene Beispielpaare für die Codereparatur veröffentlicht von Google DeepMind, um diese Probleme systematisch zu behandeln. AUPAIR wird die Beispielauswahl für Code -Reparaturaufgaben (Fixing Buggy Code) spezifisch angepasst. Dieser Beitrag zielt darauf ab, die Kernideen für ihre Arbeit zu erklären und eine Grundlage für das Verständnis aufzubauen, wie systematisch Beispiele für ICL generiert werden können.
Effektive Beispielauswahl
Jetzt verstehen wir, dass die erste Herausforderung von ICL darin besteht, die richtigen Beispiele zu finden. Bevor wir uns untersuchen, wie Auupairs Ansatz dieses Downside angeht, schauen wir uns den traditionellen Ansatz der Beispielauswahl an. Normalerweise wählen wir für domänenspezifische Probleme (z. Eine weitere Erweiterung davon ist, dass wir einen Beispielpool erstellen und Ähnlichkeitssuche verwenden, um die relevanten Beispiele zur Laufzeit zu ziehen, um als ICL zu injizieren.
Im traditionellen Beispiel für Kurationsprozess können wir nicht messen, welches Beispiel die LLM in der richtigen Richtung am effektivsten verankert. Schauen wir uns nun den Ansatz von Auupair an und wie er dieses Downside angeht. Anstatt zufällige Beispiele auszuwählen, erstellt AuPair zuerst einen großen Datensatz von Beispielpaaren und wendet dann einen gierigen Auswahlalgorithmus an, um die besten Efficiency-Paare auszuwählen. Schauen wir uns jeden Schritt eins nach dem anderen an.
Section 1: Beispielpaarerstellung

Der erste Schritt besteht darin, eine große Sammlung von Reparaturpaaren für Kandidaten zu erstellen. AuPair beginnt mit einem Datensatz mit Codierungsproblemen, die Testfälle aufweisen. Für jedes Downside wird das LLM aufgefordert, eine anfängliche Lösung zu generieren (Vermutung). Wenn diese Vermutung teilweise korrekt ist (Punktzahl zwischen 0 und 1), wird sie dem Trainingsdatensatz hinzugefügt.
Der Reparaturprozess nimmt diesen kaputten Code auf und fordert das LLM auf, ihn mit einer Eingabeaufforderung mit ok zufällig ausgewählten vorhandenen Paaren als Kontext zu beheben (ok = 32 wurde im Experiment verwendet). Wenn die generierten Repair -Bewertungen besser als die ursprüngliche Vermutung werden, wird dies zu einem Kandidatenpaar (Raten → Repair). Der clevere Teil ist, dass, wenn das Repair immer noch nicht perfekt ist, zu einem neuen „kaputten“ Code wird, der zum Trainingsdatensatz zurückgeführt wird, um die nächste Iteration weiter zu verbessern. Dies schafft Ketten mit inkrementellen Verbesserungen. AuPair wiederholt diesen Prozess tausend Male, um einen riesigen Pool von Kandidatenpaaren zu erstellen, die verschiedene Arten von Fehler und deren Korrekturen abdecken.
Section 2: Goldene (AU) -Paarextraktion
Sobald wir den Datensatz für Kandidatenpaare haben, müssen wir die effektivsten Paare auswählen. Dieser Vorgang erfolgt in 2 Schritten. Zunächst müssen wir messen, wie viel Einfluss jedes Reparaturpaar für Kandidaten hat, und zweitens müssen wir die besten mit einem gierigen Algorithmus auswählen.
Sehen wir uns zunächst an, wie die Effektivität von Reparaturpaaren Kandidaten gemessen wird.

Um die Effektivität zu messen, erstellen wir zunächst einen Validierungsdatensatz – im Grunde genommen eine Reihe von defekten Codeproblemen. Für jedes Downside im Validierungsdatensatz nehmen wir dann jedes Reparaturpaar für Kandidaten zusammen und verwenden es als 1-Shot-Beispiel zusammen mit dem Validierungsproblem, um eine Lösung zu generieren. Sobald das Repair erzeugt ist, wird es gegen die Unit -Testfälle getestet, und für dieses Validierungsproblem wird eine Punktzahl berechnet.
Wir erstellen eine Qualitätsmatrix M, in der M (i, j) darstellt, wie intestine ich das Kandidatenpaar hilft, das Validierungsproblem J zu lösen, was uns eine umfassende Übersicht darüber gibt, welche Paare bei verschiedenen Arten von Problemen am hilfreichsten sind.

Der nächste Schritt besteht darin, die Aupairs mit der berechneten Wirksamkeit zu finden. Der Algorithmus wählt das Kandidatenpaar mit der höchsten durchschnittlichen Punktzahl in allen Validierungsproblemen aus und fügt es der Auupair -Liste hinzu. Der entscheidende nächste Schritt besteht darin, den Beitrag dieses Paares von allen verbleibenden Paaren in der Matrix zu subtrahieren. Dies stellt sicher, dass wir keine redundanten Paare auswählen, sondern die Paare komplementär halten. Jeder neue Auupair muss unterschiedliche Probleme lösen als die zuvor ausgewählten. Dieser Prozess wird fortgesetzt, bis die Verbesserung unter einen Schwellenwert fällt, was zu einer geordneten Liste goldener Paare führt, in denen jeder etwas Einzigartiges lehrt.

Experimentergebnisse
AuPair wurde mit 5 verschiedenen LLM -Modellen über 7 verschiedene Datasets für Codierungsprobleme untersucht. Es übertraf die Selbstreflexion und Greatest-of-N-Stichprobenansätze zur Lösung von Problemen durchweg. Die Ergebnisse zeigen ferner, dass Auupairs 2–3x bessere Berechnungseffizienz erzielen. Es dauert nur 12 Auupairs, um die gleiche Leistung zu erreichen, die 32 Zufallspaare erfordert. Die Ergebnisse zeigen auch, dass Aupairs, die im Codeforces -Datensatz generiert wurden, effektiv auf völlig unterschiedlichen Datensätzen wie Hackerearth und ATCODER bearbeitet wurden. Dies beweist, dass wir, sobald wir eine gute Reihe von goldenen Paaren aufgebaut haben, die neuen Probleme in derselben Domäne sehr intestine abschneiden können.
Einschränkungen
AuPair zeigt vielversprechende Ergebnisse, hat aber auch einige Einschränkungen. Erstens erfordert es erhebliche Rechenkosten, um LLM -Anrufe zu tätigen, um Kandidatenbeispielpaare mit iterativer Reparatur zu generieren. Zweitens basiert es stark auf Bewertungsmetriken (wie Unit -Assessments für Code) zur Messung der Verbesserung, die möglicherweise nicht in allen Domänen verfügbar ist, und es wird angenommen, dass ergänzende Beispiele zu einer besseren Leistung führen. Dies funktionierte zwar für Codierungsprobleme, gilt zwar für alle Domänen möglicherweise nicht. Schließlich wurde Auupair eher gegen strukturierte Wettbewerbsprobleme als an komplexere reale Codebasen untersucht.
Abschluss
AuPair zeigt uns eine intelligentere Möglichkeit, in Kontext zu lernen, um Code-Reparaturaufgaben zu erledigen. Anstatt nach dem Zufallsprinzip für Beispiele auszuwählen, verwendet es einen systematischen Ansatz, um die effektivsten Reparaturmuster zu finden, die dem LLM tatsächlich helfen, besser abzuschneiden. Während es erhebliche Voraussetzungskosten benötigt und am besten funktioniert, wenn Sie gute Bewertungsmetriken haben, beweisen die Ergebnisse, dass es die Investition wert ist, zumal die goldenen Paare in verschiedenen Datensätzen intestine funktionieren. Diese Forschung eröffnet Möglichkeiten zur Anwendung ähnlicher Beispielauswahltechniken auf andere Domänen (z. B. Textual content-to-SQL), in denen wir die Effektivität des Beispiels systematisch generieren und messen können.
