Im Jahr 2015 führte Andrej Karpathy, der derzeitige Leiter der AI-Abteilung bei Tesla, Doktor der Stanford University, Tests des Recurrent Neuron Networks (RNN) unter Verwendung des LSTM-Typs (Long Short Term Memory) durch. Der Autor des Experiments lehrte seine Modelle über verschiedene verfügbare Textquellen, so dass sie ihren eigenen Inhalt generieren.

RNNs werden als rekursiv/wiederholbar bezeichnet, da sie für jedes Element der Sequenz die gleiche Aufgabe ausführen und die Ausgangsdaten von vorherigen Berechnungen abhängen. Wir können auch von den RNNs denken, dass sie über ein “Gedächtnis” verfügen, das Informationen darüber enthält, was bisher berechnet wurde.

Ein interessanter Teil des Experiments war die Verwendung des vollständigen Quellcodes des Linux-Kernels als Lehrtext zusätzlich neben den Arbeiten von Shakespeare oder Wikipedia-Artikeln. Dies ist der Quellcode der C-Sprache, die 474 MB belegt. Das Netzwerk, das mit diesem Satz gelernt wurde, erzeugte die folgende Codeliste:

/* 
 * Increment the size file of the new incorrect UI_FILTER group information
 * of the size generatively.
 */  
static int indicate_policy(void)
{ 
  int error;
  if (fd == MARN_EPT) { 
    /* 
     * The kernel blank will coeld it to userspace.
     */ 
    if (ss->segment < mem_total)
      unblock_graph_and_set_blocked();
    else
      ret = 1;
    goto bail;
  } 
  segaddr = in_SB(in.addr); 
  selector = seg / 16; 
  setup_works = true; 
  for (i = 0; i < blocks; i++) { 
    seq = buf[i++]; 
    bpf = bd->bd.next + i * search; 
    if (fd) { 
      current = blocked; 
    } 
  } 
  rw->name = "Getjbbregs";
  bprm_self_clearl(&iv->version);
  regs->new = blocks[(BPF_STATS << info->historidac)] | PFMR_CLOBATHINC_SECONDS << 12;
  return segtable; 
} 

Den vollständigen Artikel, in dem Karpathy seine Experimente beschreibt, ist hier zu finden.

Der obige Code kann wahrscheinlich nicht kompiliert werden und macht im Linux-Kernel sicherlich nichts. Er kann jedoch der Beginn einer interessanten Diskussion über die Möglichkeit sein, die Arbeit des Programmierers durch die Maschine zu ersetzen.

Laut den futuristischen Projektionen, die auf Carl Benedikt Frey und Michael A. Osborne Publikationen “The Future of Employment: How susceptible are jobs to computerisation?” basieren, besteht eine Wahrscheinlichkeit von 48%, einen Programmierer durch die Maschine zu ersetzen.

Es klingt nach Fantasien und Schweben in den Wolken, aber an ernsthaften maschinellen Lernanwendungen wird immer noch gearbeitet, um Code zu schreiben. Microsoft und die Cambridge University haben ein System namens DeepCoder geschaffen, das auf der Technik der “Programmsynthese” basiert, d. h. neue Programme erstellt, wobei Codezeilen verwendet werden, die von vorhandener Software abgeleitet werden.

Die Autoren sagen voraus, dass das Tool in naher Zukunft helfen wird, Routineprogramme zu erstellen, die beispielsweise Informationen von Webseiten abrufen oder Fotos oder Dokumente ohne Programmierer automatisch katalogisieren, und zwar nur auf der Grundlage der Beschreibung eines Geschäftsproblems durch einen Laien im Bereich Code schreiben.

Wird es möglich sein, den Programmierer vollständig zu ersetzen? Wahrscheinlich nur, wenn wir die sogenannte starke künstliche Intelligenz (artificial general intelligence) erstellen können – also solche, die die Annahme erfüllt, dass bestimmte Formen künstlicher Intelligenz alle für den menschlichen Geist verfügbaren Eigenschaften besitzen.

Es ist jedoch nicht so weit weg – AI wird Programmierer bis 2040 ersetzen, warnen Wissenschaftler vom Oak Ridge National Laboratory. Sie behaupten, dass bis 2040 maschinelles Lernen und natürliche Sprachverarbeitungstechnologien so weit fortgeschritten sein werden, dass sie in der Lage sind, besseren Softwarecode zu schreiben und schneller als die besten “menschlichen” Codierer. Eine der größten Herausforderungen besteht darin, dass es Unterschiede zwischen Hardwarearchitektur und Softwareanforderungen gibt und auch weiterhin geben wird.

In einer von Evans Data Corp durchgeführten Umfrage wurden 550 Softwareentwickler zu den meist beunruhigenden Aspekten ihrer Karriere befragt. 29 Prozent sagten: „Ich und meine Entwicklungsanstrengungen werden durch künstliche Intelligenz ersetzt.“. Daher ist es kein wichtiger und wahrnehmbarer Aspekt der Technologieentwicklung.

Computer können jetzt viel tun.

Sie schaffen Lieder

Magenta ist ein Projekt des Google Brain-Teams. Das Team arbeitet mit TensorFlow – einer Machine Learning Library von Google. Nun können Sie den ersten computergenerierten Song hören – komponiert ohne menschliche Hilfe.

 

Sie besiegen Menschen in Spielen

In New York gewann 1997 der IBM Deep Blue-Computer ein Schachspiel mit Garry Kasparov. Es war das erste Mal, dass die Maschine den Weltmeister im Schach unter Turnierbedingungen besiegte.

Im Jahr 2011 nahm ein weiterer IBM-Computer – Watson – am Fernsehwettbewerb “Jeopardy” gegen vorherige Gewinner teil. Watson musste Fragen hören und sie in einer natürlichen menschlichen Sprache beantworten. Er war nicht mit dem Internet verbunden.

Im März 2016 besiegte AlphaGo – ein Computerprogramm von Google DeepMind, das für das Go-Brettspiel entwickelt wurde – Lee Sedol, den damaligen Go-Weltmeister.

Sie malen Bilder

Im Februar 2016 verkaufte Google in San Francisco in einer Wohltätigkeitsauktion 29 Bilder. Sie wurden alle von der künstlichen Intelligenz von Google gemacht. Diese Veranstaltung wurde „DeepDream: die Kunst neuronaler Netzwerke” genannt.

Sie machen medizinische Entdeckungen

Im Jahr 2013 wurde künstliche Intelligenz für die Erkennung von Brustkrebs eingesetzt. Das neuronale Netzwerk wurde ausgebildet, um Anzeichen von Krebs mithilfe zehntausender Mammographiebilder zu erkennen.

Das neuronale Netzwerk hat jedoch gelernt, dass es nicht so wichtig ist, nur nach Tumoren zu suchen, sondern nach anderen Gewebeveränderungen, die sich nicht in unmittelbarer Nähe der Krebszellen befinden. Es war neues Wissen für die Menschheit. Bis 2013 wusste die Medizin nichts davon.

Dies ist sicherlich nicht alles und es ist nur eine Frage der Zeit, bis die Maschine ihr erstes Computerprogramm schreibt. In Kürze wird es Tools für maschinelles Lernen und künstliche Intelligenz geben, um die Programmierer zu unterstützen – intelligenter Code-Vorschlag, Erkennung möglicher Fehler oder Probleme.

In etwas weiterer Zukunft wird es Mechanismen geben, um immer komplexere Anwendungen basierend auf ihrer Geschäftsbeschreibung zu erstellen. Vielleicht werden wir sogar mit dem Computer über unsere Idee sprechen können – und er wird den Anwendungscode für uns generieren?