Der „CodeNet-Moment“: KI soll programmieren lernen

Der „CodeNet-Moment“: KI soll programmieren lernen

Riesige Datensätze haben zu großen Fortschritten in der Bildanalyse und Sprachverarbeitung durch Künstliche Intelligenz geführt. IBM möchte den KI-Fortschritt jetzt in die Welt der Software bringen – und könnte so die Programmierung revolutionieren.

2012 schlug das neuronale Netz AlexNet alle anderen Bildanalyse-Systeme im ImageNet-Wettbewerb mit deutlichem Abstand. Möglich war das durch Convolutional Neural Networks, die dank des für damalige Verhältnisse riesigen ImageNet-Datensatzes (14 Millionen Bilder in 20.000 Kategorien) gelernt hatten, Objekte mit einer bisher nicht gekannten Genauigkeit zu erkennen.

Dieser Erfolg wurde in den kommenden Jahren als „ImageNet-Moment“ bekannt, der Moment, in dem der Siegeszug des Deep Learning in der Bildanalyse begann und sich von dort auf andere Bereiche ausbreitete.

2018 rief der KI-Forscher Sebastian Ruder den ImageNet-Moment für die maschinelle Verarbeitung natürlicher Sprache aus. Sprachmodelle wie ULMFiT, ELMo und OpenAIs GPT zeigten, dass auch in der Sprachverarbeitung riesige Datenmengen mit großen Modellen der Weg zu neuen Fähigkeiten darstellte.

Seitdem schreitet die Entwicklung stetig voran: OpenAI hat mittlerweile mit GPT-3 eine Sprach-KI erfolgreich als Produkt am Markt platziert. Die neuartige Transformer-Architektur, dank der große Sprach-KIs wie GPT-3 mehr Kontext verarbeiten können und deshalb besser funktionieren, wirkt ihrerseits schon wieder umgekehrt: Sie verbessert die KI-Bildanalyse.

Schon bei GPT-2 zeigte sich, dass die Transformer-Modelle ein rudimentäres Code-Verständnis entwickeln können. GPT-2 wurde etwa als Autovervollständigung im Code-Editor Deep TabNine integriert. GPT-3 kann auf Zuruf simplen HTML-Code generieren, obwohl die Entwickler diese Funktion gar nicht vorsahen.

IBMs CodeNet soll „KI für Code“ vorantreiben

Doch wirklich umfassende Code-Fähigkeiten zeigen GPT-3 und andere Sprachmodelle bisher nicht. Ein möglicher Grund: Der größte Teil der Trainingsdaten ist herkömmlicher Text, gelegentliche Zeilen Code sind lediglich ein Nebeneffekt der Datensammelei im Internet.

Doch was, wenn es einen qualitativ hochwertigen Datensatz voller Code-Beispiele speziell für das KI-Training gäbe? Schon die Entwickler von Deep TabNine hatten GPT-2 explizit mit Code-Beispielen weiter trainiert und so deutliche Verbesserungen bei der Code-Auto-Vervollständigung erzielt.

Das Forschungsfeld, das sich mit diesen Fragen beschäftigt, läuft unter „KI für Code“ und könnte nun bald seinen ImageNet-Moment haben: Der IT-Konzern IBM hat den riesigen CodeNet-Datensatz veröffentlicht, von dem die Forscher glauben, er könne für das Feld das leisten, was der ImageNet-Datensatz vor knapp zehn Jahren für die Bildanalyse leistete.

500 Millionen Zeilen Code

CodeNet enthält laut IBM 14 Millionen Code-Beispiele in über 55 verschiedenen Programmiersprachen und kommt insgesamt auf 500 Millionen Zeilen Code. Der Datensatz besteht aus Code-Lösungen der Webseiten AIZU und AtCoder, auf denen zahlreiche Coder Lösungen für Programmierwettbewerbe hochladen. Die Beispiele umfassen Lösungen in modernen Programmiersprachen wie C++, Java oder Python und alte Sprachen wie COBOL, Pascal oder FORTRAN.

Da sich auf den Webseiten zahlreiche unterschiedliche Herausforderungen finden, enthält CodeNet Aufgaben für Codeähnlichkeit und -klassifizierung, Codeempfehlungsalgorithmen, Codeübersetzungen zwischen einer Vielzahl von Programmiersprachen oder Techniken für die Laufzeit- und Speicheroptimierung. Neben der schieren Größe sei diese Vielfalt an Aufgaben und Beispielen eine der großen Stärken von CodeNet für das KI-Training, so IBM.

Ein CodeNet-Moment für Programmierer könnte die Software-Entwicklung revolutionieren

Über 90 Prozent der Beispiele enthalten Problembeschreibungen, knapp die Hälfte bietet Beispiele für Eingaben und Ausgaben. Das erlaube, die Äquivalenz zweier Code-Beispiele in unterschiedlichen Sprachen zu bestimmen und könne etwa Algorithmen des bestärkenden Lernens (Erklärung) helfen, Code-Übersetzungen zu lernen, schreiben die Forscher.

Künstliche Intelligenz könnte so etwa lernen, Code intelligent zu durchsuchen, funktional doppelten Code zu finden, korrekten Code von problematischem Code zu unterscheiden, automatisiert Code zu verbessern, Code zwischen Programmiersprachen zu übersetzen oder selbstständig Code zu schreiben. Das könnte etwa die Modernisierung von altem Code und die Integration neuer Systeme extrem vereinfachen und Programmierern ihre Arbeit erleichtern.

Letzteres ist laut IBM bereits passiert: Ein großer Automobilhersteller habe mit IBMs „KI für Code“-Stack den normalerweise mehrere Jahre dauernden Code-Migrationsprozess einer 200 US-Millionen Dollar teuren Ressource aus 3.500 Java-Dateien mehrerer Generationen auf vier Wochen reduzieren können.

Alle Informationen und den CodeNet-Datensatz gibt es auf GitHub.

Titelbild: IBM | Via: IBM, Github (Paper)

Weiterlesen über Künstliche Intelligenz: