Auf dem Weg zu Deep-Learning-Modellen, die Code wie Menschen verstehen können

Auf dem Weg zu Deep-Learning-Modellen, die Code wie Menschen verstehen können

27. April 2021 0 Von Horst Buchwald

Auf dem Weg zu Deep-Learning-Modellen, die Code wie Menschen verstehen können

New York, 27.4.2021

Produktivitäts-Tools wie Eclipse und Visual Studio schlagen Codeschnipsel vor, die Entwickler in ihre Arbeit einfügen können, während sie schreiben. Diese automatisierten Funktionen werden von hochentwickelten Sprachmodellen angetrieben, die gelernt haben, Computercode zu lesen und zu schreiben, nachdem sie Tausende von Beispielen aufgenommen haben. Aber wie andere Deep-Learning-Modelle, die auf großen Datensätzen ohne explizite Anweisungen trainiert wurden, haben Sprachmodelle, die für die Codeverarbeitung entwickelt wurden, eingebaute Schwachstellen.

„Wenn man nicht wirklich vorsichtig ist, kann ein Hacker die Eingaben in diese Modelle subtil manipulieren, um sie dazu zu bringen, irgendetwas vorherzusagen“, sagt Shashank Srikant, ein Doktorand im MIT Department of Electrical Engineering and Computer Science. „Wir versuchen, das zu verhindern.“

In einer neuen Arbeit stellen Srikant und das MIT-IBM Watson AI Lab eine automatisierte Methode vor, um Schwachstellen in Code-Verarbeitungsmodellen zu finden und sie so umzutrainieren, dass sie widerstandsfähiger gegen Angriffe sind. Dies ist Teil eines größeren Projekts der MIT-Forscherin Una-May O’Reilly und der mit IBM verbundenen Forscherin Sijia Liu, die KI zu nutzen, um automatisierte Programmierwerkzeuge intelligenter und sicherer zu machen. Das Team wird seine Ergebnisse nächsten Monat auf der International Conference on Learning Representations vorstellen.

https://openreview.net/forum?id=PH5PH9ZO_4

Auf GitHub und anderen Websites zum Austausch von Programmen trainiert, lernen Codeverarbeitungsmodelle, Programme zu generieren, so wie andere Sprachmodelle lernen, Nachrichten oder Gedichte zu schreiben. Dadurch können sie als intelligente Assistenten fungieren, die vorhersagen, was Softwareentwickler als nächstes tun werden, und eine Hilfestellung anbieten.

Sie können Programme vorschlagen, die für die jeweilige Aufgabe geeignet sind, oder Programmzusammenfassungen erstellen, um zu dokumentieren, wie die Software funktioniert. Code-Processing-Modelle können auch darauf trainiert werden, Fehler zu finden und zu beheben. Doch trotz ihres Potenzials, die Produktivität zu steigern und die Softwarequalität zu verbessern, bergen sie Sicherheitsrisiken, die Forscher gerade erst zu entdecken beginnen.

Srikant und seine Kollegen haben herausgefunden, dass Codeverarbeitungsmodelle getäuscht werden können, indem man eine Variable umbenennt, eine gefälschte Druckanweisung einfügt oder andere kosmetische Operationen in Programme einführt, die das Modell zu verarbeiten versucht. Diese auf subtile Weise veränderten Programme funktionieren normal, verleiten das Modell aber dazu, sie falsch zu verarbeiten und eine falsche Entscheidung zu treffen.

Diese Fehler können schwerwiegende Folgen für codeverarbeitende Modelle aller Art haben. Hier einige Beispiele:

● Ein Modell zur Erkennung von Malware könnte dazu verleitet werden, ein bösartiges Programm mit einem gutartigen zu verwechseln.

● Ein Modell zur Code-Vervollständigung kann dazu verleitet werden, falsche oder bösartige Vorschläge zu machen.

● In beiden Fällen können sich Viren an dem ahnungslosen Programmierer vorbeischleichen.

● Ein ähnliches Problem tritt bei Computer-Vision-Modellen auf: Bearbeiten Sie ein paar Schlüsselpixel in einem Eingabebild und das Modell kann Schweine mit Flugzeugen und Schildkröten mit Gewehren verwechseln, wie andere MIT-Forschungen gezeigt haben.

Wie die besten Sprachmodelle haben auch Code-Verarbeitungsmodelle einen entscheidenden Fehler: Sie sind Experten für die statistischen Beziehungen zwischen Wörtern und Sätzen, erfassen aber nur oberflächlich deren wahre Bedeutung. Das GPT-3-Sprachmodell von OpenAI zum Beispiel kann Prosa schreiben, die von eloquent bis unsinnig reicht, aber nur ein menschlicher Leser kann den Unterschied erkennen.

In der Arbeit schlagen die Forscher ein Framework zur automatischen Veränderung von Programmen vor, um Schwachstellen in den Modellen, die sie verarbeiten, aufzudecken. Es löst ein zweiteiliges Optimierungsproblem: Ein Algorithmus identifiziert die Stellen in einem Programm, an denen das Hinzufügen oder Ersetzen von Text dazu führt, dass das Modell die größten Fehler macht. Er identifiziert auch, welche Arten von Änderungen die größte Gefahr darstellen.

Das Framework offenbarte, wie brüchig manche Modelle sind. So versagte das Modell zur Textzusammenfassung in einem Drittel der Fälle, wenn eine einzige Änderung an einem Programm vorgenommen wurde; es versagte in mehr als der Hälfte der Fälle, wenn fünf Änderungen vorgenommen wurden. Auf der anderen Seite zeigten sie, dass das Modell in der Lage ist, aus seinen Fehlern zu lernen und dabei möglicherweise ein tieferes Verständnis der Programmierung zu erlangen.

„Unser Framework für den Angriff auf das Modell und das erneute Trainieren auf diese speziellen Exploits könnte möglicherweise dazu beitragen, dass Codeverarbeitungsmodelle ein besseres Verständnis für die Absicht des Programms bekommen“, sagt Liu, Co-Autorin der Studie. „Das ist eine spannende Richtung, die darauf wartet, erforscht zu werden.“

Im Hintergrund bleibt eine größere Frage: Was genau lernen diese Black-Box Deep-Learning-Modelle? „Denken sie über den Code so wie Menschen, und wenn nicht, wie können wir sie dazu bringen?“, sagt O’Reilly. „Das ist die große Herausforderung, die vor uns liegt.“