Zuverlässigeres, effizienteres und sichereres Programmieren durch maschinelles Lernen
Jedes Jahr werden Milliarden Euro für das Beheben von Softwarefehlern aufgebracht, die oftmals durch fehlerhaften Code verursacht werden. Eine zuverlässigere, effizientere und sicherere Software ist also dringend notwendig. Ihre Entwicklung ist – mit traditionellen Verfahren – jedoch schwierig, wenn nicht gar unmöglich. Genau da setzt das EU-finanzierte Projekt BIGCODE an. Indem Programmiersprachen und maschinelles Lernen kombiniert werden, entwickelt das Projekt neue Arten von Programmiersysteme, die, statistisch gesehen, mögliche Lösungen auf ansonsten unlösbare Probleme bieten können. „Das Projekt hat neuartige Modelle des maschinellen Lernens entwickelt, die sich mit Computercode trainieren lassen“, sagt Martin Vechev(öffnet in neuem Fenster), Leiter des (Secure, Reliable, and Intelligent Systems Lab) (SRI) an der Eidgenössischen Technischen Hochschule Zürich(öffnet in neuem Fenster) (ETH Zürich), und Projektkoordinator von BIGCODE. „Diese Modelle sollen verschiedene wichtige Aufgaben bewältigen, zum Beispiel neue Codes automatisch erstellen, Sicherheitsverstöße in vorhandenen Codes erkennen und von einer Programmiersprache in eine andere übersetzen – um nur ein paar zu nennen.“
Neuartige Modelle des maschinellen Lernens
Das wichtigste Ergebnis des vom Europäischen Forschungsrat(öffnet in neuem Fenster) unterstützten Projekts war die Entwicklung neuer grundlegender Modelle des maschinellen Lernens. „Diese Modelle sind so einzigartig, weil sie mit Code trainiert werden und Herausforderungen meistern können, die bisher als unbezwingbar galten“, erklärt Vechev. „Außerdem sind unsere Modelle interpretierbar. Das bedeutet, dass Menschen die von ihnen getroffenen Entscheidungen sowohl nachvollziehen als auch ergründen können.“ Bei der Entwicklung der Modelle des maschinellen Lernens stellten die Forscherinnen und Forscher fest, dass Computerprogramme über eine komplexe, formale Semantik verfügen. Um diese Semantik zu extrahieren, muss ein erfolgreiches Training mit Code symbolische Methoden in den Prozess einbinden können. Laut Vechev geht dies weit über die Methoden hinaus, durch die Modelle trainiert werden, die auf natürlicher Sprache oder Bildern beruhen. „Unsere Fortschritte haben also einen konzeptionellen Wert, der über den Code hinausgeht, zum Beispiel bei der Synthese gestörter Programme, der Verarbeitung natürlicher Sprache und der Entdeckung neuer formaler Grammatiken“, so Vechev. „In gewisser Hinsicht hat sich die Arbeit im Codebereich bei der Entwicklung neuer Methoden, die sich leicht verallgemeinern lassen, als erfolgreich erwiesen.“
Zuverlässigere und sicherere Software
Die im Rahmen des Projekts BIGCODE entwickelten Modelle, die Vechev „KI für Code“ nennt, werden bereits von Hunderttausenden Programmiererinnen und Programmierern genutzt, wodurch zuverlässigere und sicherere Software entsteht. Auf der Grundlage der während des Projekts durchgeführten Arbeiten haben Forscherinnen und Forscher außerdem ein erfolgreiches Start-up, DeepCode(öffnet in neuem Fenster), gegründet. Dieses wurde von Snyk(öffnet in neuem Fenster) übernommen, einem großen Unternehmen für Cybersicherheit, das DeepCode in viele Betriebsabläufe eingebunden hat. „Das BIGCODE-Projekt hat gezeigt, dass wir unser Wissen nicht nur erweitern und neue Forschungsgebiete ins Leben rufen können, sondern dass sich anhand dieser Fortschritte auch erfolgreiche Deep-Tech-Unternehmen gründen lassen, die einen enormen wirtschaftlichen Wert haben“, so Vechev abschließend.