Home

Quantum Computing Basics, Quantaum Machine Learning, and Pennylane

What is PennyLane?

PennyLane provides a powerful framework for creating and executing quantum circuits in quantum machine learning (QML) projects. It is a cross-platform Python library for differentiable programming of quantum computers. This means that you can use PennyLane to access quantum computers from different providers, while making it easy to write and run quantum computing programs.

What is Quantum Machine Learning?

Quantum Machine Learning leverages quantum mechanical phenomena such as superposition and entanglement to process information and perform machine learning tasks. It aims to harness the unique properties of quantum systems to solve complex problems more efficiently than classical computers.

Key Aspects

  • Quantum Advantage: QML algorithms can potentially offer significant speedups for certain machine learning tasks, especially those involving high-dimensional data or complex optimization problems.
  • Hybrid Approaches: Many current QML implementations use hybrid quantum-classical algorithms, where quantum processors work in tandem with classical computers.
  • Quantum Data: QML can work with both classical data encoded into quantum states and inherently quantum data.

Basic Concepts

What is a Qubit?

Qubits (“cue-bit”) are the quantum analog of bits. While a classical bit can only be in one of two states (0 or 1), a qubit can exist in a superposition of both states simultaneously. They are the basic unit of quantum computing.

A general pure qubit state is expressed as:

|ψ⟩ = α |0⟩ + β |1⟩

Where:

  • α and β are complex probability amplitudes, |α|² + |β|² = 1
  • |0⟩ and |1⟩ are the computational basis states

Key Properties of a Qubit

  • Superposition: Unlike classical bits, qubits can exist in superposition. Superposition describes a quantum system that exists in multiple states simultaneously. It is in state |0⟩ with amplitude α and state |1⟩ with amplitude β.
  • Measurement: When measured, a qubit collapses to either |0⟩ or |1⟩ with probabilities |α|² and |β|² respectively. Thus, |α|² and |β|² = 1. The probability amplitudes determine the probability of measuring the qubit in either state when a measurement is made. The act of measuring fundamentally changes the state. If the outcome of the measurement is 0 then after the measurement the qubit is actually in the |0⟩ state and if the outcome is 1 the new state is |1⟩.
  • Entanglement: Qubits can be entangled with other qubits, creating correlated quantum states.

Example

Consider the qubit in the state (1√2) |0⟩ + (1√2) |1⟩.

If we measure, the probability of measuring |0⟩ is |1√2|² = 1/2, and the probability of measuring |1⟩ is also |1√2|² = 1/2.

If the outcome happens to be |0⟩, our qubit will collapse to the state |0⟩. Now, if we measure again, the probability of measuring |0⟩ is |1|² = 1, while the probability of measuring |1⟩ is |0|² = 0. This shows that the act of measuring has fundamentally changed our qubit.

Now remember that the coefficients in the superposition can be complex. For example, we might have a qubit in the state 13 |0⟩ + (2 + 2i)3 |1⟩.

The probability of measuring |0⟩ is |13|² = 19, and the probability of measuring |1⟩ is |(2 + 2i)3|² = (4+4)9 = 89.

Quantum Gates

Now that we know about qubits, how do we use them to perform computations? We manipulate qubits by applying operations, such as gates or measurements to them. The gates we use are similar to those found in classical computation such as “AND”, “OR”, and “NOT”. Some of the quantum gates we use are the “NOT” (or “X”) gate, rotations around the x, y and z axes “RX”, “RY”, and “RZ”, and the “Hadamard” gate. Quantum gates are used to entangle qubits, put them into superposition, change the outcome probabilities of measurements, and more. When a measurement happens, any superposition that might have existed is said to collapse into a classical state.

Quantum Circuits

Every computation has three elements: data, operations, and results. For quantum circuits:

  • Data = qubits
  • Operations = quantum gates
  • Results = measurements

Defining a Quantum Circuit

import pennylane as qml

def my_quantum_circuit(x, y):
    qml.RZ(x, wires=0) # applies RZ rotation (by x radians) gate to qubit on wire 0 
    qml.CNOT(wires=[0,1]) # applies a CNOT gate between two qubits
                          # wire 0 is control qubit and wire 1 is target qubit
    qml.RY(y, wires=1) # applies  RY rotation (by y radians) gate to  qubit on wire 1
    return qml.expval(qml.PauliZ(1)) # measures the expectation value of the Pauli Z 
                                      # operator on wire 1
                        

This function describes a simple quantum circuit with rotations and a CNOT gate, followed by a measurement.

For most standard quantum devices, each wire represents a single qubit.

Creating a Quantum Device

Before running your circuit, you need to specify a quantum device:

dev = qml.device('default.qubit', wires=2)
                        

This creates a simulator with two qubits. You can easily switch to other devices, including hardware backends, by changing the device name.

Note that the choice of a device significantly determines the speed of your computation. PennyLane offers some basic devices such as the 'default.qubit', 'default.mixed', lightning.qubit, 'default.gaussian', 'default.clifford', and 'default.tensor' simulators.

Quantum Node (QNode)

A quantum node is used to declare the quantum circuit, and also ties the computation to a specific device that executes it. To execute the quantum circuit, wrap it in a QNode:

# Step 1: Choose a device
dev = qml.device('default.qubit', wires=2) # creating a quantum device

# Step 2: Define the quantum circuit with qnode decorator
@qml.qnode(dev) # qnode decorator converts function to a runnable QNode circuit
def circuit(x):
    qml.RZ(x, wires=0)
    qml.CNOT(wires=[0,1])
    qml.RY(x, wires=1)
    return qml.expval(qml.PauliZ(1))

result = circuit(0.543)
                        

The QNode connects your quantum function to the specified device. Now you can run the circuit to get your result.

Quantum Machine Learning in PennyLane

In the modern viewpoint, quantum computers can be used and trained like neural networks. We can systematically adapt the physical control parameters, such as an electromagnetic field strength or a laser pulse frequency, to solve a problem.

For example, a trained circuit can be used to classify the content of images, by encoding the image into the physical state of the device and taking measurements.

With the ability to calculate the gradients of quantum circuits, you can use a quantum circuit as a node (a QNode) in a classical neural network.