Ein Bereich, in dem ich arbeite, ist die Bildverarbeitung. Bildverarbeitung alleine ist ein großes Thema: Neben den üblichen Klassifizierungsproblemen arbeiten meine Kollegen und ich unter anderem an der Bildsegmentierung.
Ziel dieses Blogbeitrags ist nicht wirklich, Quantentheorie oder Quantencomputer zu erklären. Das Internet ist voll von sehr guten Texten, Bildern und Video-Tutorials dazu. Tatsächlich wollte ich einfach mal schauen, ob mir Quantencomputer dabei helfen können, unsere KI zu beschleunigen – und dabei skizzieren, was mir so begegnet ist.
Was sind Quantencomputer?
Quantencomputer erinnern zunächst an die siebziger und achtziger Jahre, als Rechner noch ganze Räume eingenommen haben. Die Miniaturisierung, die seither stattgefunden hat, hat wahrscheinlich alle verblüfft – und tut dies weiterhin. Zwangsläufig muss ich an den legendären Ausspruch von Thomas Watson denken, seinerzeit Chef von IBM. Er soll gesagt haben: „Ich denke, dass es einen Weltmarkt für vielleicht fünf Computer gibt.“
Die Stimmen vor zehn Jahren, klangen in Bezug auf Quantencomputer ganz ähnlich. Aber auch hier ist eindeutig eine Miniaturisierung zu erkennen. Diese hängt sehr eng mit der Art und Weise zusammen, wie Quantencomputer betrieben werden: Die meisten Quantencomputer brauchen eine Abkühlung ihrer Rechenelemente auf eine Temperatur nahe dem absoluten Nullpunkt. Aktuelle Forschungen haben es geschafft, mit neuen Materialen zu arbeiten und die Funktionsweise bestimmter Rechenelemente schon bei Raumtemperatur hinzubekommen (Infos dazu gibt es hier).
Um Quantencomputing zu verstehen, sollte man zumindest die folgenden vier Begriffe schon mal gehört haben: Qubits, Superposition, Verschränkung und Tunneln. In einem klassischen Computer werden sämtliche Informationen als bits dargestellt.
Strom – kein Strom. Ja – nein. Eins – Null.
In einem Quantencomputer werden die Informationen als Qubits dargestellt. Null, Eins oder ein beliebiger Wert dazwischen. Die beliebigen Werte dazwischen gibt es nur während einer bestimmten Dauer. Während dieser Dauer ist nicht entschieden, ob der Wert des Qubits 0 oder 1 ist. Der Wert ist dann quasi in einer Superposition. Erst durch das Messen, wird die Superposition aufgelöst und „entschieden“, ob das Qubit den Wert 0 oder 1 annimmt. Der Akt des Messens zwingt das Qubit also, sich für einen Wert zu entscheiden. Das ist nicht nur sehr merkwürdig, es bringt auch noch keine Geschwindigkeit ins System. Schauen wir weiter.
Eine weitere wichtige Besonderheit ist die Verschränkung von Qubits. Man kann in einem Paar verschränkter Qubits zwei klassische Bits so speichern, dass es möglich ist, durch Manipulation von nur einem Qubit den Wert beider Bits unabhängig voneinander beliebig zu verändern. Das ist überhaupt nicht mehr intuitiv. Schauen wir genauer hin. Misst man ein Qubit und hat dieses mit anderen Qubits verschränkt, dann ändern sich alle verschränkten Qubits augenblicklich mit. Geht man davon aus, dass sich im Universum nichts schneller als mit Lichtgeschwindigkeit bewegen kann, dann sollte das dem Anschein nach nicht funktionieren. Diese sogenannte spukhafte Fernwirkung ist also erstmal nicht zu begreifen: Man zwingt ein Qubit dazu, sich für einen Zustand zu entscheiden und sofort kann an allen Enden des „Qubit-Systems“ das passende Ergebnis messen, ohne dass die Zeit verstreicht, die eine Information bräuchte, um sich zu verteilen. Denn es ist in diesem Fall egal, ob man das System nur in einem kleinen Labor misst oder verteilt über die ganze Erde.
Dass sich nichts schneller als das Licht bewegen kann, wird in diesem spannenden Video besprochen: Warum ist nichts schneller als Licht?
Versuchen wir es mit einer Metapher zu konkretisieren: Alice und Bob bekommen jeweils ein verschlossenes Päckchen, in dem eine bunte Kugel ist. Sie wissen nicht, welche Farbe die Kugel hat, aber sie wissen, dass die Kugeln in beiden Päckchen die gleiche Farbe haben. Die Ungewissheit, welche Farbe eine Kugel hat, steht hierbei für die Superposition; es gibt verschiedene Zustände (Farben) und erst durch eine Messung (das Öffnen des Päckchens) werden diese herausgefunden (determiniert). Die Information „Beide Kugeln haben die gleiche Farbe“ ist die Verschränkung in diesem Beispiel. Wenn nun Alice ihr Päckchen öffnet, weiß sie sofort auch, welche Farbe die Kugel von Bob hat.
Wie bei jeder Metapher oder Analogie gibt es Unstimmigkeiten zwischen Original und Metapher. Der Fehler liegt hier darin, dass das Ergebnis nicht erst durch das Messen entschieden wird. Gäbe es eine magische Art von Kugel, welche tatsächlich erst ihre Farbe annimmt, sobald das Päckchen geöffnet wird, so wäre die Metapher präzise.
Ein weiteres Problem besteht darin, dass das Messen von Quantensystemen nicht so eindeutig ist. Meistens benötigt es mehrere Messvorgänge, bis das Ergebnis gesichert ist. Das wiederum hängt mit der Fragilität von Quantensystemen zusammen. Erschütterungen, magnetische Strahlung, ja sogar kosmische Hintergrundstrahlung können die Ergebnisse von Quantencomputern beeinflussen.
Kommen wir zur vierten Komponente des Quantenrechnens, dem Tunneln. In der Bildverarbeitung mit KI und insbesondere mit neuronalen Netzen, geht es häufig darum, die Fehler zu minimieren, die ein neuronales Netz während des Trainings macht. Dazu legt man den Input (meist ein Bild) an das neuronale Netz an und betrachtet den Output. Sagen wir, wir möchten Bilder von handgeschriebenen Ziffern 0-9 anlegen und die entsprechende Zahl als Output bekommen. Sagen wir außerdem, dass wir 1000 verschiedene Bilder als Input haben und wir dem Netz nach jedem Anlegen sagen, ob es den richtigen Output gegeben hat. Wenn nicht, muss weiter trainiert werden. Das heißt, die Gewichte werden gezielt verändert, sodass beim nächsten Bild das Netz schon ein klein wenig besser ist. Dazu nutzt man eine Fehlerfunktion, die den tatsächlichen Output mit dem gewünschten Output vergleicht.
Häufig wird das Optimierungsverfahren, in dem das Minimum der Fehlerkurve gesucht wird, so beschrieben, als ob eine Person nachts mit Laterne auf einem Berg steht und möglichst tief ins Tal hinabsteigen möchte. Sie sieht immer nur einen Schritt weit und steigt immer in die Richtung hinab, die ihr den steilsten Abstieg ermöglicht. Dabei kann sie natürlich in ein Nebental hinabsteigen, das gar nicht das tiefste ist. Wieder hinaufsteigen ist aber zu mühsam und so verweilt die Personin dem Nebental. Das ist suboptimal.
Das Tunneln der Quantenmaschinen geht ganz anders vor. Es fängt an, Tunnel durch das Gebirge zu bohren und findet so sehr schnell die tiefste Stelle im Gebirge. Einen systematischen Einstieg in dieses Thema findet man auch hier.
Wir wissen also, dass Quantencomputer immer kleiner werden, nicht mehr unter allen Umständen auf den absoluten Nullpunkt gekühlt werden müssen, empfindlich sind, mit 0, 1 und einer Superposition von Qubits und mit Verschränkung arbeiten. Aber wie hilft mir das bei meinen KI-Aufgaben?
Wer hat die meisten Qubits?
Zunächst habe ich gedacht, dass ein Quantencomputer so viele Qubits hat wie ein klassischer Computer Bits. Falsch! Die Hersteller von Quantencomputern haben einen regelrechten Wettkampf gestartet, wer die meisten Qubits, möglichst fehlerfrei zu Quantensystemen zusammenschließen kann und sie für möglichst lange Zeit stabil halten kann. Dabei sprechen wir über wenige Sekunden.
Über wie viele Qubits sprechen wir also? Google hat den Begriff der Quantenüberlegenheit ins Spiel gebracht. Quantenüberlegenheit wird der Zeitpunkt genannt, ab dem ein Quantencomputer eine mathematische Aufgabe in vernünftiger Zeit lösen kann, für die ein klassischer Computer Jahre bräuchte. Die Quantenüberlegenheit ist allerdings unabhängig vom Nutzen der Aufgabenlösung definiert. Also es geht nicht um sinnhafte Aufgaben, wie z.B. aus der Logistik, sondern eher akademischen Aufgaben.
Die Hoffnung der Industrie oder in diesem Fall von IBM für die weitere Entwicklung von Qubits sieht in etwa so aus:
Aber es gibt noch eine ganze Reihe weiterer Akteure in diesem Spiel, wie z.B. Microsoft, Amazon, Honeywell, Rigetti und DWave. Auch die Zahl der Firmen, die über Quantencomputer verfügt wächst stetig. Hier seien nur diese genannt: BASF, BMW, Bosch, Infineon und Trumpf. Und was passiert zugleich im Rest der Welt? Hier habe ich einen interessanten Artikel dazu gefunden.
Auch wenn noch kein allgemein akzeptiertes Maß für die Leistungsfähigkeit eines Quantencomputers existiert, so gibt es dennoch die ersten Algorithmen für Quantencomputer. Einer der richtungsweisenden ist der von Peter Shor. Der Mathematiker hat bereits 1994 gezeigt, dass man mit wenigen Qubits ein asymmetrisches Verschlüsselungsverfahren in vernünftiger Zeit auflösen kann. Solch ein Verfahren beruht auf der Tatsache, dass es sehr viel leichter ist, große Primzahlen zu multiplizieren, als das Ergebnis wieder in Faktoren zu zerlegen. Das nennt man auch eine Einwegfunktion. Shor hat bewiesen, dass Quantencomputer diese Zerlegung sehr schnell meistern können. Der Shor-Algorithmus war der erste Quantenalgorithmus, der nicht nur ein wirklich praktisches Problem löste, sondern auch nachweislich exponentiell schneller zum Ergebnis kam als der bislang beste bekannte Algorithmus für herkömmliche Computer. Man darf Qubits jedoch auch nicht einzeln betrachten. Es geht immer um ganze Qubit-Systeme mit einer Quantenkorrelation. Nachdem die Quantensysteme miteinander verschränkt wurden, sind sie als ein Gesamtsystem zu betrachten.
Ich halte fest: Es läuft ein Wettkampf der Quantencomputer-Systeme unter den Firmen ab, der zu immer mehr Quanten mit immer größerer Stabilität auf immer kleinerem Raum führt. Außerdem müssen nicht mehr alle Quantencomputer so stark gekühlt werden, was die Wirtschaftlichkeit der Systeme verbessert. Aber kann ich so einen Computer überhaupt als „normaler“ IT-Berater nutzen? Lassen wir uns überraschen.
Wie kann ich Quantencomputer nutzen?
Kann ich als „normaler“ IT-Berater einen Quantencomputer nutzen? Ja und Nein. Oder doch? Ein erster Rundumblick verrät, dass Google ein Framework oder zumindest eine Bibliothek namens Cirq und IBM eines namens Quiskit anbietet. Schaut man ein wenig weiter, findet man auch etwas unter Microsoft Azure und Amazon mit Braket. Wo also anfangen?
Mein Einstieg fand über das Buch Quantum Machine Learning with Python: Using Cirq from Google Research and IBM Qiskit von Pattanayak Santanu. Besonders das Kapitel 5 hat mich neugierig gemacht ( Quantum Machine Learning) und noch mehr Kapitel 6 (Quantum Deep Learning). Ich habe mir den Beispielcode angesehen und die ersten Schritte in Richtung Quantencomputing gemacht. Die Beispiele von Google konnte ich direkt in Colab ausführen und verändern.
Was für ein Geschenk! Es gibt sogar Beispiele, die CNNs verarbeiten. Das Buch machte mich auf die entsprechende Bibliothek aufmerksam: https://www.tensorflow.org/quantum. Ein großartiger Einstieg! Ein erstes QCNN war schnell geschrieben. Es gibt weitere Beispiele und sogar das „Hello World“ der KI, MNIST ist als Quantenversion verfügbar: https://www.tensorflow.org/quantum/tutorials/mnist. Und richtig cool ist das folgende Programm: https://www.tensorflow.org/quantum/tutorials/qcnn Ein echtes Quanten-CNN!
Bin ich schon am Ziel? Leider nicht. Was wirklich sehr ernüchternd ist, die Beispiele laufen gar nicht wirklich auf Quantencomputern, sondern werden simuliert! Die Firmen bieten quasi ihre Frameworks an, damit man vorab schon mal lernen kann, wie man in Zukunft programmiert. Wenn man das Glück hat, an einem Forschungszentrum zu arbeiten, in dem es echte Quantencomputer gibt, kann man das Coding vielleicht sogar nutzen. Oder andersherum: Die Leute, die die Frameworks schreiben, bieten den Code schon mal der Programmiergemeinde an. Eigentlich ein feiner Zug. Dennoch für mich erst mal enttäuschend, da ich sehr wahrscheinlich die kommenden Jahre nicht damit arbeiten können werde.
Aber das erste Programm, das nicht mehr „Hallo Welt“, sondern bezeichnender Weise „Hallo, viele Welten“ heißt, erklärt alles, was für den Einstieg nötig ist, um mit Quantencomputern zu programmieren: https://www.tensorflow.org/quantum/tutorials/hello_many_worlds. Danke Google!
Leicht ernüchtert, wollte ich mehr wissen und habe mir noch dieses Buch gekauft: Dancing with Qubits: How quantum computing works and how it can change the world von Robert S. Sutor. Hier wird deutlich stärker auf die Hintergründe eingegangen. Für einen tieferen Einstieg braucht man auf jeden Fall gesunde Grundlagen in Algebra und insbesondere sollte man mit komplexen Zahlen auf Du und Du sein.
Doch eigentlich wollte ich ein Programm auf einem Quantencomputer ausführen, um zu sehen, wie er meine Bilderkennungsprobleme in einer tausendstel Sekunde löst. Ein Freund hat mich direkt mit der Nase darauf gestupst. Es gibt zwei Arten von Quantencomputern, die momentan verbreitet sind. Quanten-Annealing-Maschinen, die auf Optimierungsaufgaben spezialisiert sind und universelle Quantengattercomputer, die im Prinzip beliebige Berechnungen ausführen können. In beiden Fällen unterscheidet sich die Programmierung ganz grundlegend von der Art, wie man klassische Computer programmiert. Der riesige Vorteil von Quanten-Annealing-Maschinen liegt darin, dass man sie „in echt“ benutzen kann. Hier und heute.
Quantencomputer sind teuer und zickig
Arineo geht es sehr gut. Können wir nicht einfach einen Quantencomputer kaufen? Dieser Traum ist so schnell ausgeträumt, wie ein Qubit blinzeln kann. So titelt etwa die Berliner Morgenpost: Zwei Milliarden Euro für Quantencomputer „Made in Germany“. Damit hat sich das Thema der universelle Quantengattercomputer für mich erst mal erledigt.
Lieber den Spatz in der Hand als die Taube auf dem Dach
Eine Entscheidung war für mich schon mal gefallen. Wenn ich mit universellen Quantengattercomputern, zwar alle möglichen Probleme superschnell lösen kann, mir so ein Quantengattercomputer aber nicht wirklich zur Verfügung steht, dann muss eine andere Lösung her. Die Firma Dwave wirbt damit, Quantencomputer mit einem sogenannten Annealing-Verfahren als Cloudservice anzubieten. Die einzige Einschränkung des Annealing-Verfahrens besteht darin, dass man nur bestimmte Optimierungsaufgaben lösen kann. Macht erst mal nichts, das möchte ich genauer wissen. Hier der Einstieg: https://www.dwavesys.com/
Man findet haufenweise Anwendungen aus bekannten Industrieunternehmen mit echten Problemen, die allgemein bekannte sind. So zum Beispiel das Travelling Salesman Problem. An diesem Problem haben wir 1997 bereits mit Turbo Pascal unsere ersten neuronalen Netze getestet. Wie funktioniert nun dieses Annealing-Verfahren? Die Antwort findet man hier. Das hat mich erst mal überzeugt. Ich registriere mich und kann loslegen.
Als erstes schaue ich mir die bestehenden Beispiele unter „Explore our examples“ an und finde unter dem Stichwort „Machine Learning“ ein Beispiel zur Image Segmentierung. In der Dwave eigenen IDE „leap“. Hier finde ich erstmal fast nur Standardpython, allerdings auch den LeapHybridDQMSampler. Hierin vermute ich die Magie.
from dwave.system import LeapHybridDQMSampler
Um mehr darüber zu erfahren, kann man z.B. hier einsteigen:
Mit einer ungefähren Vorstellung davon, wie der Solver genau funktioniert, starte ich das erste Programm – ein Schwarzweißbild mit nur 2 Segmenten. Ist das Nessy?
Hier der Aufruf:
python image_segmentation.py test_2_segments.png
Hier das Ergebnis:
Das Vorbereiten des DQM Objektes dauert in etwa 1 Minute und der DQM solver läuft nochmal ungefähr 5 Minuten. Über das Dashboard habe ich den Überblick über meine verbrauchte, kostenfreie Zeit.
Hier der snapshot vor dem Durchlauf (da hatte ich bereits 3 Versuche gemacht).
Hier der Snapshot nach dem Durchlauf:
Die genaue Betrachtung der Kosten wird bestimmt noch interessant, wenn ich mehr mit Dwave arbeiten möchte. Egal, was man nun von diesem konkreten Ergebnis hält – das Programm tut, was es soll. Nun kann man einwenden, dass man hierfür keine Quantencomputer braucht. Das stimmt, aber das hätte man auch in den jungen Jahren der Informatik über die ersten Rechner sagen können.
Die ersten Schritte zu einer Bildverarbeitung sind gemacht. Auf einem Quantencomputer mit Annealing-Verfahren. In der Cloud. Wow!
Schauen wir uns ein weiteres Beispiel an. Diesmal keine Segmentierung, sondern eine Klassifizierung zwischen Bienen und Ameisen. Über pennylane bekommt man Zugang zu vielen weiteren Beispielen:
Auch hier muss man darauf achten, ob man einen Simulator oder ein echten Quantenrechner vor sich hat. Und es gibt noch mehr. Bei Amazon findet man unter dem Stichwort „braket“ eine ganze Reihe von Quantencomputer-Anbietern, die man minutenweise buchen kann: https://aws.amazon.com/de/braket/
Fazit
Meine Ausgangsfrage war: Können Quantencomputer bei der Bilderkennung mit Hilfe von KI unterstützen? Die Antwort lautet prinzipiell ja. Auch wenn es noch ein weiter Weg zur kompletten Integration ist, aber: Es gibt neben den teuren und noch nicht wirklich gut verfügbaren universellen Quantengattercomputer sogenannte Quanten-Annealing-Maschinen, die auf Optimierungsaufgaben spezialisiert sind und in der Cloud verfügbar sind. Man muss jetzt sehen, ob man KI-Bilderkennungsprobleme so formulieren kann, dass sie mit Quanten-Annealing-Maschinen gelöst werden können. Die ersten Hybrid-Ansätze funktionieren, wie der Pennylane-Beitrag zeigt. Kurz: Da liegen wirklich spannende Aufgaben vor meinem Team und mir!