Quantencomputing fĂĽr Data Science: ein Praxistest

Seite 4: Anwendungsfall 3: Quantum Neural Network

Inhaltsverzeichnis

Der letzte Anwendungsfall behandelt das Training eines künstlichen neuronalen Netzes. Ein mit Hilfe eines Quantencomputers trainiertes Netz nennt sich Quantum Neural Network (QNN). Technische Grundlage für dieses Beispiel ist die Bibliothek PennyLane. Sie ist wie Qiskit ebenfalls in Python geschrieben und auf Quantum Machine Learning (QML) spezialisiert. Das Framework basiert auf anderen Low-Level-Verfahren . Neben Qiskit sind Cirq und Q# eine mögliche Basis.

Auch der vollständige Quellcode für das QNN-Beispiel steht auf GitHub in einem Jupyter Notebook parat. Die Vorgehensweise orientiert sich an einem Tutorial von PennyLane, das Interessierten eine detailliertere Beschreibung bietet. Die nachfolgenden Codefragmente helfen dabei, ein grundlegendes Verständnis des Beispiels zu gewinnen.

Zunächst importiert das Notebook einige Bibliotheken:

import pennylane as pl
import tensorflow as tf
import numpy as np
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt

Neben PennyLane kommen die klassischen Libraries TensorFlow und Keras zum Einsatz. Sie fungieren als Werkzeuge für das Training des Netzes. Im nächsten Schritt wird ein passendes Backend gewählt. Das Notebook setzt den von PennyLane mitgelieferten Simulator ein. Der Code ist auch auf echten Quantencomputern ausführbar. Hierbei gibt es jedoch ein Problem, das im Folgenden noch diskutiert wird.

N_QUBITS = 2
backend = pl.device("default.qubit", wires=N_QUBITS)

Ziel des QNNs ist es, zwei Mengen voneinander zu trennen. Der Code konfiguriert hierzu ein Backend mit zwei Qubits, die beiden Mengen erzeugt die Funktion make_moons aus der Bibliothek scikit-learn. Der Trainingsdatensatz ist in Abbildung 4 visualisiert:

Visualisierung des Trainingsdatensatzes der Funktion "make_moons" aus der Bibliothek scikit-learn (Abb. 4)

Das neuronale Netz klassifiziert anhand der Koordinaten eines Punktes die Zugehörigkeit zu einem der beiden Monde – erkennbar anhand der Einfärbung. Sind die Punkte des oberen Mondes bei der Vorhersage komplett blau eingefärbt und die des unteren Mondes komplett orange beträgt die Accuracy 100 Prozent. Das Netz ist ein hybrides quantenklassisches Modell und besteht aus mehreren Layern. Ein klassischer Input-Layer nimmt die Koordinaten entgegen und gibt sie an einen Quanten-Layer weiter. Dieser berechnet mithilfe eines Schaltkreises Gewichte und übermittelt sie an einen klassischen Output-Layer, der schließlich die Klassenzugehörigkeit bestimmt. Das Netz ist im Detail wie folgt aufgebaut:

# Define classical layers
input_layer = tf.keras.layers.Dense(2)
output_layer = tf.keras.layers.Dense(2, activation="sigmoid")

# Define a quantum circuit with two qubits
@pl.qnode(backend)
def qnode(inputs, weights):
    pl.templates.AngleEmbedding(inputs, wires=range(N_QUBITS))
    pl.templates.BasicEntanglerLayers(weights, wires=range(N_QUBITS))
    return [pl.expval(pl.PauliZ(wires=i)) for i in range(N_QUBITS)]

# Convert quantum circuit to keras layer
N_LAYERS = 6
weight_shapes = {"weights": (N_LAYERS, N_QUBITS)}
qlayer = pl.qnn.KerasLayer(qnode, weight_shapes, output_dim=N_QUBITS)

Die Syntax zur Definition eines Quantenschaltkreises weicht bei PennyLane etwas von der von Qiskit ab. PennyLane definiert den Schaltkreis ĂĽber einen sogenannten QNode. Die grundlegende Funktionsweise ist aber bei beiden Frameworks identisch. Der Quanten-Layer wird anschlieĂźend in eine Keras-Komponente umgewandelt. Das Training des Netzes erfolgt dann in der ĂĽblichen TensorFlow/Keras-Syntax:

model = tf.keras.models.Sequential([input_layer, qlayer, output_layer])
opt = tf.keras.optimizers.Adam(learning_rate=0.1)
model.compile(optimizer=opt, loss="binary_crossentropy", metrics=["accuracy"])
fitting = model.fit(x, y_hot, epochs=10, batch_size=5, validation_split=0.25, verbose=2)

Nach einem Training mit zehn Epochen erzielt das Modell in einer Vorhersage eine Genauigkeit (Accuracy) von mehr als 90 Prozent. Da im Prozess auch Zufall eine Rolle spielt, kann das Ergebnis etwas variieren. Das Netz ist somit für über 90 Prozent der Datenpunkte in der Lage eine Zuordnung zum richtigen Mond zu treffen. Abbildung 5 zeigt die Qualität der Vorhersage:

Qualität der Vorhersage: Das Quantum Neural Network ordnet 90 Prozent der Datenpunkte richtig zu (Abb. 5)

In einem realen Anwendungsfall müssten Data Scientists das Modell professioneller entwickeln, um beispielsweise Probleme wie Overfitting zu vermeiden. Für das gewählte Beispiel ist das nicht notwendig. Dennoch stellt sich die Frage, wie praktikabel der Anwendungsfall ist. Sollten Data Scientists zum Trainieren neuronaler Netze klassische Rechner durch eine Quantum Processing Unit (QPU) ersetzen? Die Antwort ist: Nein.

Das Beispiel zeigt die prinzipielle Machbarkeit des Anwendungsfalls. Das trainierte QNN ist jedoch weder im Hinblick auf die Qualität noch auf die Trainingsdauer einer klassischen Variante überlegen. Im Gegenteil: Der Einsatz eines echten Quantencomputers anstelle eines Simulators würde mehrere Tage oder sogar Wochen dauern. Das liegt einerseits an den Wartezeiten, aber auch an der reinen Rechenzeit. Ein klassischer Computer mit Grafikbeschleuniger (Graphics Processing Unit – GPU) erledigt diese Aufgabe deutlich schneller. Die Praxistauglichkeit ist für diesen Anwendungsfall daher (noch) nicht gegeben.

Die Tests unterstreichen das grundsätzlich hohe Potenzial von Quantencomputern für den Bereich Data Science und maschinelles Lernen. Die aktuelle NISQ-Generation kann in einigen Anwendungsgebieten schon heute einen Mehrwert liefern. Für Quantum Sampling hat die Wissenschaft die Quantenüberlegenheit bereits gezeigt. Quantencomputer sind vor allem in Bereichen stark, die auf Zufallszahlen und Kombinatorik bauen. Ein mögliches Anwendungsgebiet sind Markov-Ketten.

Potenziell können Quantencomputer auch für neuronale Netze einen Mehrwert bieten, aber auf dem heutigen Stand der Technik sind sie dafür noch keine realistische Alternative. Hier bleiben klassische Rechner erste Wahl. Bis neuere Generationen verfügbar sind, sollten sich Data Scientists auf die naheliegenden Einsatzgebiete konzentrieren. Es lohnt sich aber in jedem Fall, die Entwicklung der Quantencomputer im Blick zu behalten.

Christian Koch
ist Datenarchitekt bei der TeamBank AG und Dozent an der Technischen Hochschule NĂĽrnberg Georg Simon Ohm. Seine Spezialgebiete umfassen Datenarchitekturen, Data Science und Machine Learning.

Eldar Sultanow
ist Architekt bei Capgemini. Seine Schwerpunkte sind moderne Softwarearchitekturen, Data Science und Unternehmensarchitekturmanagement.

(map)