AlphaCode ist Deepminds erste eigenständig programmierende Künstliche Intelligenz. Bei einem Test erreicht die KI bereits menschliches Niveau.
Mit dem Siegeszug der Transformer-Modelle bei der Verarbeitung natürlicher Sprache realisierten Forschende die Nützlichkeit der Text generierenden Modelle für die Generierung von Code Zeilen. So zeigte etwa OpenAIs GPT-3-Modell in den Tagen nach seiner Veröffentlichung versteckte Code-Fähigkeiten wie die Umwandlung von Textbeschreibungen in HTML-Code.
Auch OpenAI erkannte das Potenzial der NLP-Modelle für das Programmieren und entwickelte Codex, ein auf die Generierung von Code spezialisiertes Transformer-Modell, das über OpenAIs API verfügbar ist und in einer Variante in Microsofts Copilot für GitHub steckt.
OpenAIs Beitrag zum maschinellen Programmieren ist mehr als eine Autovervollständigung für Code: Die Künstliche Intelligenz kann aus simplen Anweisungen einfache Programme schreiben. Von der menschlichen Fähigkeit, komplexere Probleme zu lösen, die über die einfache Übersetzung von Anweisungen in Code hinausgehen, ist Codex jedoch weit entfernt.
Deepminds AlphaCode soll neuartige Lösungen finden
Deepmind, Alphabets KI-Unternehmen hinter AlphaZero, MuZero, AlphaFold und AlphaStar, zeigt nun AlphaCode, ein KI-Modell, das Code auf "Wettbewerbsebene" schreiben soll. Deepmind testete AlphaCode dafür mit Programmierwettbewerben von Codeforces, eine auf Code-Wettbewerbe spezialisierte Plattform.
Wie OpenAIs Codex setzt auch Deepminds AlphaCode auf eine Transformer-Architektur. Anders als Codex ist AlphaCode jedoch ein Encoder-Decoder-Modell. Codex ist wie GPT-3 lediglich ein Decoder-Modell.
Der wesentliche Unterschied zwischen den beiden Modellen ist, wie sie den Kontext der Eingabedaten verarbeiten: Ein Decoder-Modell wie GPT-3 betrachtet bei der Verarbeitung einer Eingabe, zum Beispiel ein einzelner Satz, ausschließlich den Kontext vor oder nach einem Wort.
Ein Encoder-Modell wie Googles BERT verarbeitet bei der Repräsentation eines Wortes beide Richtungen. Ein Encoder repräsentiert daher besser die Bedeutung eines ganzen Satzes, ein Decoder eignet sich besser zur Textgenerierung.
Werden Encoder und Decoder kombiniert , etwa für Übersetzungen, kann der Decoder neben dem ersten Input, etwa einem Wort, die vom Encoder erstellte Repräsentation, etwa des kompletten Satzes, nutzen.
Ähnlich wie Übersetzungen lassen sich auch Programmierwettbewerbe als eine Sequenz-zu-Sequenz-Übersetzungsaufgabe verstehen: Erstelle anhand einer Problembeschreibung X in natürlicher Sprache eine Lösung in einer Programmiersprache Y.
Deepmind greift für AlphaCode daher auf ein Transformer-basiertes Encoder-Decoder-Modell mit Anpassungen im Modell und Trainingsmethoden zurück. Auch Salesforce CodeT5 setzt auf ein solches Modell.
AlphaCode ist viermal größer als Codex
Deepmind trainierte AlphaCode mit knapp 715 Gigabyte Code-Beispielen von GitHub in den Programmiersprachen C++, C#, Go, Java, JavaScript, Lua, PHP, Python, Ruby, Rust, Scala und TypeScript.
Das größte AlphaCode-Modell ist 41,4 Milliarden Parameter groß. Zum Vergleich: OpenAIs Codex ist knapp 12 Milliarden Parameter groß.
Deepmind trainierte AlphaCode anschließend zusätzlich mit CodeContests, einem von Deepmind zusammengestellten Datensatz von Problemen, Lösungen und Tests von Codeforces-Wettbewerben.
Nach dem Training verarbeitet der Encoder von AlphaCode Problembeschreibungen, der Decoder generiert Code-Zeilen. Für jedes Problem kann AlphaCode Millionen möglicher Lösungen generieren - von denen allerdings ein Großteil nicht funktioniert.
Deepmind filtert die zahlreichen möglichen Lösungen mit in den Problembeschreibungen mitgelieferten Beispieltests. Dieser Vorgang lässt allerdings immer noch tausende möglicher Programmkandidaten übrig.
AlphaCode setzt daher ein zweites, kleineres Modell ein, das weitere Tests generiert und alle übrigen Programmkandidaten nach gleichen Outputs für die generierten Tests gruppiert. Aus diesen Gruppen wählt AlphaCode im Anschluss zehn Lösungen für eine Problembeschreibung aus.
Deepminds AlphaCode programmiert auf menschlichem Niveau
Mit dieser Methode löste AlphaCode 34,2 Prozent aller Probleme im CodeContests-Datensatz. In zehn aktuellen Codeforce-Wettbewerben mit mehr als 5.000 Teilnehmer:innen erreichte AlphaCode eine durchschnittliche Platzierung unter den ersten 54,3 Prozent. Damit ist AlphaCode besser als knapp 46 Prozent der menschlichen Teilnehmer:innen. Laut dem AlphaCode-Team ist die eigene KI die erste, die dieses Niveau erreicht.
Eine Untersuchung zeige außerdem keine Hinweise, dass AlphaCode Code-Zeilen aus dem Trainingsdatensatz kopiert. Das demonstriere, dass das KI-Modell tatsächlich neue Probleme lösen könne, die es noch nie zuvor gesehen habe - auch wenn diese Probleme signifikante Denkleistungen erforderten.
Perfekten Code schreibt AlphaCode allerdings nicht: Gerade mit C++ habe die KI Probleme, so Deepmind. Das System soll weitere Forschung anstoßen, Verbesserungen für AlphaCode sind ebenso in Planung.
Wer tiefere Einblicke in AlphaCode möchte, kann das Modell auf der AlphaCode-Webseite erkunden. Weitere Informationen gibt es in Deepminds Blog.