Googles KI-Abteilung DeepMind wickelte alles ab Sternen Schiff mir faltbares Protein. Daher ist es wahrscheinlich keine Überraschung, dass sich die Entwickler schließlich einem zweifellos persönlichen Interesse zuwandten: der Computerprogrammierung. In der Donnerstagsausgabe von Science beschreibt das Unternehmen ein System, das es entwickelt hat und das Code als Reaktion auf die Programmierung produziert, die typisch für die ist, die bei menschlichen Programmierwettbewerben verwendet wird.
In der mittleren Herausforderung kann das KI-System nahe der oberen Hälfte der Teilnehmer punkten. Aber es hatte einige Schwierigkeiten mit der Skalierung, da es weniger wahrscheinlich war, dass es ein Programm produzierte, das an Problemen arbeitete, die normalerweise mehr Code erforderten. Dass es aber überhaupt funktioniert, ohne strukturelle Informationen über Algorithmen oder Programmiersprachen zu haben, ist schon etwas verwunderlich.
An der Aufgabe wachsen
Die Herausforderungen bei der Computerprogrammierung sind ziemlich einfach: Menschen erhalten eine Aufgabe, um Code zu vervollständigen und zu produzieren, der die erforderliche Aufgabe erfüllen muss. In dem Beispiel in dem neuen Artikel erhielten Programmierer zwei Zeichenfolgen und wurden gebeten, zu bestimmen, ob die kürzere der beiden erzeugt werden könnte, indem sie einige der Tastenanschläge, die zum Eingeben der größeren Zeichenfolge erforderlich sind, durch Backspaces ersetzen. Eingereichte Programme werden daraufhin überprüft, ob sie eine allgemeine Lösung des Problems bieten oder beim Testen weiterer Beispiele fehlschlagen.
Bei genügend Beispielen für Software, die ein einzelnes Problem lösen kann, sollte es einem KI-System wahrscheinlich möglich sein, die für den Erfolg erforderliche algorithmische Struktur abzuleiten. Dies wird jedoch keine allgemeine Lösung sein, um Probleme anzugehen. Eine KI, die auf eine Herausforderungskategorie trainiert ist, wird scheitern, wenn sie gebeten wird, eine nicht verwandte Herausforderung anzugehen.
Um etwas verallgemeinerbarer zu machen, behandelte das DeepMind-Team es eher wie ein Sprachproblem. Bis zu einem gewissen Grad ist die Beschreibung der Herausforderung ein Ausdruck dessen, was der Algorithmus tun soll, während der Code ein Ausdruck derselben Sache ist, nur in einer anderen Sprache. Die fragliche KI ist also so konzipiert, dass sie aus zwei Teilen besteht: Ein Teil nimmt die Beschreibung und verwandelt sie in eine interne Darstellung, und der zweite Teil verwendet die interne Darstellung, um Funktionscode zu generieren.
Das Training des Systems war ebenfalls ein zweistufiger Prozess. In der ersten Phase musste das System lediglich einen Snapshot des Materials auf GitHub verarbeiten, was insgesamt mehr als 700 GB Code umfasste. (Heutzutage, wo Sie das auf einen USB-Stick packen können, hört sich das vielleicht nicht nach viel an, aber denken Sie daran, dass der Code nur Rohtext ist, sodass Sie viele Zeilen pro Gigabyte erhalten.) Beachten Sie, dass diese Daten auch Kommentare enthalten. die Sie verwenden sollten Eine natürliche Sprache, um zu erklären, was der benachbarte Code tut, und sollte daher sowohl bei Eingabe- als auch bei Ausgabeaufgaben helfen.
Sobald das System trainiert ist, durchläuft es eine Anpassungsphase. DeepMind richtet seine eigenen Programmierwettbewerbe ein und speist dann die Ergebnisse in das System ein: Problembeschreibung, funktionierender Code, fehlerhafter Code und Testfälle, die zur Überprüfung verwendet werden.
Ähnliche Ansätze wurden bereits früher ausprobiert, aber DeepMind berichtet, dass es mehr Ressourcen in das Training stecken konnte. In dem Papier heißt es, dass „ein wesentlicher Treiber der Leistung von AlphaCode von der Erhöhung der Anzahl der Modellmuster auf Größenordnungen größer als bei früheren Arbeiten herrührte“.