CodeRL: Beherrschung der Codegenerierung durch vortrainierte Modelle und tiefe Verstärkungslernverfahren

Programmsynthese oder Codegenerierung zielt darauf ab, einen Programmcode zu erzeugen, der eine gegebene Problembeschreibung erfüllt. Neuere Ansätze, die auf großskaligen vortrainierten Sprachmodellen (LMs) basieren, haben vielversprechende Ergebnisse erzielt, weisen jedoch kritische Einschränkungen auf. Insbesondere folgen sie in der Regel einem standardisierten Verfahren der überwachten Feinabstimmung, bei dem ein Codegenerierungsmodell ausschließlich anhand von Paaren aus natürlichsprachlichen Problembeschreibungen und korrekten Referenzprogrammen trainiert wird. Dieser Ansatz ignoriert jedoch wichtige, potenziell nützliche Signale innerhalb der Problembeschreibung, wie beispielsweise Einheitstests, was häufig zu schlechten Leistungen bei der Lösung komplexer, bisher unbekannter Programmieraufgaben führt. Um diese Einschränkungen zu überwinden, schlagen wir „CodeRL“ vor – ein neues Framework für Programmsynthese-Aufgaben, das vortrainierte Sprachmodelle und tiefe Verstärkungslernverfahren (Reinforcement Learning, RL) kombiniert. Konkret behandeln wir während des Trainings das Codegenerierungs-LM als Aktor-Netzwerk und führen ein Kritiker-Netzwerk ein, das darauf trainiert wird, die funktionale Korrektheit generierter Programme vorherzusagen und dem Aktor dichte Rückmeldeinformationen bereitzustellen. Während der Inferenz führen wir ein neues Generierungsverfahren mit einer entscheidenden Stichprobenstrategie ein, das es dem Modell ermöglicht, Programme automatisch erneut zu generieren, basierend auf Rückmeldungen aus Beispiel-Einheitstests und Kritiker-Scores. Für die Modellarchitekturen erweitern wir die Encoder-Decoder-Struktur von CodeT5 durch verbesserte Lernziele, größere Modellgrößen und qualitativ hochwertigere Vortrainingsdaten. Unsere Methode erreicht nicht nur neue SOTA-Ergebnisse auf dem anspruchsvollen APPS-Benchmark, sondern zeigt auch eine starke Zero-Shot-Transfer-Fähigkeit und erzielt neue SOTA-Ergebnisse auf dem einfacheren MBPP-Benchmark.