Code, der Code schreibt, und was Machine Learning damit zu tun hat

Machine Learning Driven Programming – Revolution in der IT?
Kommentare

Maschinelles Lernen und kein Ende: in immer weiteren Bereichen des IT-Sektors wird versucht, die Potentiale künstlicher Intelligenz (KI) auszunutzen. Der harte Kern des Entwicklerberufs, das Programmieren, wurde dabei bislang nicht angetastet. Durch Machine Learning Driven Programming könnte sich das langsam aber sicher ändern. Auch Google-Personal hat seine Finger im Spiel.

MLDP, das ist nicht das Akronym einer linken Splitterpartei, sondern steht für Machine Learning Driven Programming. Die Idee: Eine auf dem Prinzip des maschinellen Lernens basierende KI schreibt selbstständig Programme und nimmt so Entwicklern vor allem lästige Kleinarbeiten ab. Bislang steckt das Prinzip selbstcodender Software aber noch in den Kinderschuhen.

Machine Learning und KI

In einer seit 2013 erscheinenden, dreiteiligen Artikelserie (Teil 1, Teil 2, Teil 3) beschreibt Kory Becker seine Versuche, einer künstlichen Intelligenz das Programmieren beizubringen. Die KI sollte in der Sprache Brainfuck, die Becker nach eigener Auskunft selbst kaum beherrscht, kleinere Programme entwickeln, ohne dabei bereits existente Bestandteile wiederzuverwerten. Dazu hat der Autor zwei Prinzipien kombiniert, nämlich einerseits das Infinite Monkey Theorem, demzufolge es einem Affen, auf einen unendlichen Zeitraum gesehen, nur durch Zufall irgendwann gelingen sollte, ein Werk von Shakespeare zu reproduzieren.

Dieses Prinzip kombinierte Becker mit einer Vorgehensweise, die er Genetic Algorithm nennt. Dabei werden nach dem biologischen Prinzip der Vererbung aus einer Vielzahl von Versuchen der Künstlichen Intelligenz, ein Problem zu lösen, die zwei besten ausgewählt, um einen Erben zu produzieren. In der Natur besser bekannt als Evolution.

Software Architecture Summit 2017

The Core of Domain-Driven Design

mit Carola Lilienthal (Workplace Solutions)

Distributed Systems

mit Kyle Kingsbury (Independent Consultant)

Fitness Function

Becker konnte damit recht beeindruckende Ergebnisse erzielen. Er brachte seine KI dazu, Programme sowohl für einfachste Aufgaben, wie dem Output von „Hello World“, als auch für komplexere Operationen, etwa die Errechnung der Fibonacci-Folge unter Ausnutzung selbstgeschriebener Funktionen, zu schreiben. Er gibt aber zu, dass mit der sogenannten Fitness Function, die das Ziel des Programms vorgibt und die Versuche der KI bewertet, ein Rest an Programmierarbeit bleibt – und diese wird je nach Komplexität des Ziels größer.

KIs, die Computerspiele schreiben und klüger sind als Siri

Auch die ANGELINA getaufte KI des Londoner Doktoranden Michel Cook nutzt Evolutionsmethode und Fitness Function. Sie überprüft damit Spiele, die sie selbst designt hat. Die KI kontrolliert eigenständig, ob die Levels des von ihr entwickelten Games auch für Menschen spielbar sind. Beeindruckender noch ist ihre Fähigkeit, eigene Spielmechaniken zu kreieren, die wiederum beim Level-Design berücksichtigt werden. Die KI erfand eigenständig eine Teleportations- sowie eine Gravitationsumkehrmechanik und ging sogar soweit, Schwachstellen im Code auszunutzen. Mittlerweile erstellt ANGELINA sogar Spiele in 3D.

Dynamic Program Generation

Einen anderen Weg hat Dag Kittlaus, ein Schöpfer der Spracherkennungssoftware Siri, eingeschlagen. Er arbeitet zurzeit an einer Personal-Assistent-Software, die nicht nur passende Suchergebnisse und Produkte heraussuchen kann, sondern über die Zeit hinweg seinen User kennenlernt. „When you ask your app or device for something, you won’t have to explain every bit of detail each time. It starts to know you,“ so Kittlaus.

Dazu nutzt das System ein Prinzip namens Dynamic Program Generation, mit dem es im Bruchteil einer Sekunde Code-Fragmente schreibt, die schlussendlich flüssigere Interaktionen zwischen User und Gerät ermöglichen sollen. Es wandelt also die Anfrage des Nutzers in neuen Code um. Mit dieser Software, so glauben Kittlaus und sein Team, werden sie die UI-Entwicklung revolutionieren. Das im folgenden Video Gezeigte sieht auf jeden Fall äußerst vielversprechend aus:

Machine Learning Driven Programming

Der Research Director von Google, Peter Norvig, hat in einem Vortrag im März dieses Jahres umrissen, wie die Entwicklung von selbstcodender Software einen weiteren Schub durch Machine Learning Technologien bekommen könnte. Mit ihnen könnte der Entwicklerberuf einen gravierenden Wandel erleben.

Bislang gestaltet sich Softwareentwicklung so, dass ein Programmierer eine Funktion anhand bestimmter Spezifikationen geschrieben hat. Machine Learning dagegen geht von einem Input/Output-Paar aus und rät in mehreren Anläufen die Funktion – so lange, bis Input/Output zueinander passen. Danach kann die Funktion generalisiert werden, um auch auf andere Inputs anwendbar zu sein. Deep Learning dagegen arbeitet mit Repräsentationen, die über mehrere Abstraktionensebenen verfügen, anstatt einen direkten Weg von Input zu Output zu gehen. Um eine Funktion zu generalisieren, eignet sich dieses Verfahren gut.

Schnell und überall: Datenzugriff mit Entity Framework Core 2.0

Dr. Holger Schwichtenberg (www.IT-Visions.de/5Minds IT-Solutions)

C# 7.0 – Neues im Detail

Christian Nagel (CN innovation)


Entscheidend ist, dass der Programmierer hier vollkommen aus dem Entwicklungsprozess herausgenommen wurde. Menschen, die die Machine-Learning-Algorithmen trainieren, wären eher als Datenwissenschaftler zu bezeichnen. Programmteile sollen sich so bereits problemlos schreiben lassen, kleinere Programme ebenfalls.

Mögliche Auswirkungen auf die Branche

Die rasante Entwicklung der Informationstechnologie und gerade künstlicher Intelligenzen hat in der letzten Zeit für vielerlei, teils blumige Reaktionen gesorgt. Manche sehen die Singularität herannahen, manche den vollautomatisierten Roboterkommunismus und andere fürchten zunächst einmal nur um ihre Jobs. Oftmals ja auch nicht zu unrecht. Kehrt die Jobunsicherheit jetzt also in der IT-Branche zurück?

Bert Selman, ein Informatiker an der Cornell University, glaubt jedenfalls, dass die Wahrscheinlichkeit, dass Entwicklerjobs der Automation zum Opfer fallen, in nächster Zeit rapide ansteigen wird. Gewöhnlich werden solche Befürchtungen mit dem Argument gekontert, durch die neuen Technologien entstünden Jobs in anderen Bereichen – gefördert vom qua Automatisierung eingesparten Kapital. Das Problem liegt also eher bei der Ökonomie, die auffangen muss, was der technische Fortschritt – den sie natürlich selbst begünstigt – an Arbeitskräften freisetzt.

Interessanter ist vielleicht, wie das Berufsbild des ITlers sich wandeln könnte. Oben wurde schon angedeutet, dass Programmierer bald eher als Datenanalysten angesehen werden könnten. Guillaume Bouchard, ein weiterer Wissenschaftler vom University College London, findet den bezeichnenden Begriff „Trainer“ treffender. Tritt also wirklich langsam das „Ende des Codes“ ein, wie es die US-Ausgabe von Wired letztens ausgerufen hat?

Fazit

Heute lässt sich darauf noch keine Antwort geben. Bislang ermangelt es Künstlichen Intelligenzen noch an Verständnis für die einfachsten (Sinn-)Zusammenhänge und an Kreativität. Nichtsdestotrotz lassen sich die heute schon erreichten Ergebnisse gedanklich in die Zukunft verlängern und geben so einen realistischen Einblick auf das, was bald möglich sein wird. Unter Umständen könnten die daran ablesbaren Entwicklungen die Branche von Grund auf verändern.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -