Path: blob/main/notebooks/ch-quantum-hardware/open-quantum-systems.ipynb
3328 views
An introduction to open quantum systems
6.1 Qubit decoherence mechanisms: energy relaxation () and dephasing ()
Z.K. Minev, IBM TJ Watson Research Center
Abstract
In this brief chapter, we promote our closed-system treatment of a quantum bit (qubit) to an open-system one. Here, you will learn the basic ideas of open-system evolution. Our focus is on unwanted, incoherent processes. These are unavoidable in a physical system and are thus necessary to understand for any practical quantum computation. A "real" qubit does not exist in isolation, but rather as a physical system embedded in an environment. Due to the unavoidable coupling with the environment (here, considered unmonitored) the qubit evolution is profoundly affected. Typically, the coupling results in two chief decoherence mechanisms that limit qubit performance: unwanted loss of energy and loss of coherence. These are characterized by the energy-relaxation lifetime () and the total dephasing time (), respectively. We will explain these with a simple toy model based on the simplest possible quantum trajectory (used in the qiskit Aer simulator). We obtain the standard Linbdlad form of the master equation, which governs the evolution of the average quantum state (the density matrix). We explain how to characterize and noise. Finally, we comment on related notions such as , , and a hot, thermal environment. Finally, we will measure and on a real quantum device.
Contents
Open quantum system evolution: a simple model
Qubit and environment.
For simplicity and definitiveness of example, let us begin by restricting our attention to the simplest possible quantum system one that has two levels. A qubit [^1] cannot exist in isolation. It is part of a larger world that it is unavoidably coupled to. The coupling is an interaction between the qubit degree of freedom and the rest of the world, which we will refer to as the environment. Sometimes, the environment is also referred to as the bath or reservoir. As it consists of the rest of the world, we consider it large, or macroscopic composed of many degrees of freedom, which for all practical purposes we have no knowledge of or control over.
Environmental noise model: microscopic origin.
Let us begin with a semi-classical picture. If the environmental degrees of freedom are uncontrolled, we may imagine that each of them them jiggles about stochastically. However, as a degree jiggles, if it is coupled to the qubit, it effects a force on the qubit due to the system-environment coupling. The result is a stochastic force applied on the qubit that alters its states in an unknown manner. Even if the environmental degrees of freedom are very weakly coupled to the qubit, their multitude and continuous existence [^2] can lead to a signifiant alteration of the qubit dynamics. The coupling, which can serve to jiggle the qubit about stochastically, also acts in the reverse direction. Any energy (or information) stored in the system can leak out of the qubit into the environment [^3]. In summary, unavoidable coupling between our small qubit system and the macroscopic environment rapidly leads to loss of quantum coherence for the qubit a process known as decoherence.
Description of just the qubit system that accounts for the coupling to the environment.
Since we cannot track the environment, we will focus on a description of just the qubit system. The effect of the environment will be factored in an average sense we will discuss the density matrix rather than the pure state . We could at this stage write down a quantum description of both the system and the environment, considered as an infinite number of quantum degrees of freedom, and proceed to trace out the environment under some assumptions. This canonical approach is explicated in many textbooks, including Niselen and Chuang or Carmichael. Let us rather take a different tack. This is a slightly simpler approach that will lead to the same final result, while teaching us some new basic concepts along the way.
Review of preliminaries: Bloch-vector representation.
Before proceeding to look at the ensemble, average behavior that results from the interaction with the environment, let us review the description of the density matrix in terms of the Bloch vector representation. Let us briefly review the Bloch vector of a qubit. It consists of three components, denoted , and , which find values in the range bounded by -1 and +1. Each corresponds to the expectation value of a Pauli operator . For example Note that is a scalar variable, while is a quantum operator. These three components represent all informationally orthogonal directions. Together they specify the quantum state fully. For convenience, they can be grouped into a vector . The density matrix expressed in terms of the Bloch vector components is where in the last line, for notational convenience, we expressed the inner product between the vector of expectations and the vector of Pauli operators Note that there is no global phase when discussing the density matrix. The Bloch vector length is a number between zero and one. One indicates that the state is pure, while zero indicates that the state is completely mixed. It is important to keep in mind that the ground state () is denoted by , while the excited state () is represented by . This may at first seem at adds with your intuition.
The bit-flip quantum channel: random kicks
Model: to kick or not to kick
Consider the following elementary model of the interaction between the qubit and the environment. Suppose that at each instant in time the environment can only perform one of two possible actions on the qubit either it does nothing () or it flips the qubit bit (). Consider the case in which the environment does nothing we can think of this as the environment applying the identity gate to the qubit. This case occurs with a probability that we will denote [^4]. Denoting time by and the time increment by , the quantum state at time (conditioned on the identity gate having been applied by the environment) is where we have expressed the probability of the identity gate occurring as . If , then the environment always applies the identity and never performs a random action. This is the case of a closed quantum system. For all time, an initial pure state will remain pure.
What happens in the remainder of the instances, corresponding to the probability ? Let's say the environment randomly applies the bit-flip gate to the qubit. The resulting state at time is now If the qubit was initialized in , it will at the next time step be found in with probability .
Average state evolution
Since we cannot keep track of the environment, we must average these various possible outcomes together to obtain the (unconditional) ensemble state Note the interpretation of the last line in terms of a null and non-null operation weighted by some probabilities that sum to one. We will see this form repeatedly.
[[A bit of nomenclature]{.upright}]{.medium}
It is sometime useful to describe the environment operation on the density matrix as an operation called a channel. We can write it as where the calligraphic symbol denotes the channel map. Since it acts on density matrices, rather than wave-vectors, we call it, rather than an operator, a superoperator. Note that the channel, a map from to , is linear in .
Technically, what we wrote down in the preceding discussion is called a Kraus decomposition of a quantum channel. The channel here is the ensemble operation of the environment on the qubit. The Kraus operators are the probability-weighted identify and bit-flip gates. Let us not dwell on the technical aspect here, we will encounter it again soon enough. Rather, let us provide a more clear picture of the action of the above map.
Bloch picture
In terms of the Bloch representation, see the section entitled "Review of preliminaries: Bloch-vector representation," the action of the environment is to perform either or on the qubit resulting in: The bit-flip environment randomly flips the and Bloch components. Thus, on average, We observe that the states along are unaffected. However, the states in the plane are subjected to a decay. [^5]
Time evolution
What happens as time goes on? In other words, as we apply the quantum map repeatedly, and eventually continuously in time. First, let us divide time into even chunks of size , where is an integer; . The evolution of the Bloch vector becomes (this follows directly from the display equation above) Equivalently, we could have written the density matrix in terms of the channel map, , where denotes the repeated application of the channel times.
To take the continuum limit, we need to first express in terms of a time rate. Let , where is finite and is the bit-flip rate. Using the limit identity one finds (try this exercise yourself) What does equation this mean? We observe the exponential decay [^6] of the initial information stored in the and Bloch components. The information is scrambled by the environment, until we no longer know what has happened to it. This is a type of decoherence. The decay of the component describes the loss of polarization of the qubit. The decay time of this component is called the time, i.e., in this simple model .
However, the simple bit-flip model we have examined so far is not quite the processed that is typically observed in lab. We will cover the standard energy loss process in the following section by repeating the above analysis.
The amplitude damping channel: energy loss
Consider the physical case of the leakage (emission) of a photon from a qubit into the environment, and its detection by the environment. The total loss of a photon of energy of the in the qubit should annihilate the excited ground state. Thus instead of a bit-flip, in this model, the environment applies the annihilation (lowering) operator on the qubit, Note that this can no longer occur with fixed probability. If the atom is in the ground state, there should be no possibility for the environment to have detected a leaked photon from the excited states. Hence the probability to apply should be zero. In general, the probability to annihilate the excited state () will dictated by the excited state population, namely , where is a proportionality factor between zero and one. One can show [^7] that the correct random operations applied by the environment on the qubit for this scenario are the following two Kraus maps The probability of a click is thus succinctly expressed as , where is the population of the state, denoted . The probability of no-click event is . Combining these two weighted operators the amplitude damping ( noise map is which can be expressed in terms of its action on the Bloch vector components, We leave it as an exercise to show that the repeated application of the noise map leads to Using the limit results from the last section, you can show that in the continuous limit, setting , Observe the exponential decay of the population with a time constant , called the energy relaxation time, to the ground state . The coherence and Bloch components decay with a time constant .
Phase damping
If the environment randomly flips the phase of the qubit, the Kraus operators would be [^8]
Both amplitude and phase damping
Combining the above two processes, one finds (exercise), where
Footnotes
[^1]: A physical qubit might be an atom in free space or a superconducting circuit in a box
[^2]: We imagine that the coupling to the environment is present at all times and in this discussion unchanging. This will be related when we discuss low-frequency noise and .
[^3]: Here, we assume that the environment is not monitored directly by the observer. Hence, we will specialize to an unconditioned monitoring. By 'unconditioned' we mean that we will throw away any measurement record and only talk about the average evolution of the quantum system, not that conditioned on the record.
[^4]: Since we will label this outcome , formally, we can write that the probability of the identity outcome is .
[^5]: Since , if or , the process is deterministic. The noise is maximal for , a completely random coin.
[^6]: The exponential decay is the result of the stochastic Poison Markov process assumed in our model.
[^7]: Carmichael, Howard J., An Open Systems Approach to Quantum Optics (Springer, Berlin, Heidelberg, 1993).
[^8]: Alternatively,
II. Measuring and : Qiskit ignis
How to use ignis to measure
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
<ipython-input-22-27e1cedeb7a5> in <module>
----> 1 qubit_decay_pulses[0].draw(style=SchedStyle(figsize=(7, 4)),scale=1)
~\Anaconda3\lib\site-packages\IPython\core\displayhook.py in __call__(self, result)
260 self.start_displayhook()
261 self.write_output_prompt()
--> 262 format_dict, md_dict = self.compute_format_data(result)
263 self.update_user_ns(result)
264 self.fill_exec_result(result)
~\Anaconda3\lib\site-packages\IPython\core\displayhook.py in compute_format_data(self, result)
149
150 """
--> 151 return self.shell.display_formatter.format(result)
152
153 # This can be set to True by the write_output_prompt method in a subclass
~\Anaconda3\lib\site-packages\IPython\core\formatters.py in format(self, obj, include, exclude)
178 md = None
179 try:
--> 180 data = formatter(obj)
181 except:
182 # FIXME: log the exception
<decorator-gen-9> in __call__(self, obj)
~\Anaconda3\lib\site-packages\IPython\core\formatters.py in catch_format_error(method, self, *args, **kwargs)
222 """show traceback on failed format call"""
223 try:
--> 224 r = method(self, *args, **kwargs)
225 except NotImplementedError:
226 # don't warn on NotImplementedErrors
~\Anaconda3\lib\site-packages\IPython\core\formatters.py in __call__(self, obj)
339 pass
340 else:
--> 341 return printer(obj)
342 # Finally look for special method names
343 method = get_real_method(obj, self.print_method)
~\Anaconda3\lib\site-packages\IPython\core\pylabtools.py in <lambda>(fig)
246
247 if 'png' in formats:
--> 248 png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
249 if 'retina' in formats or 'png2x' in formats:
250 png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))
~\Anaconda3\lib\site-packages\IPython\core\pylabtools.py in print_figure(fig, fmt, bbox_inches, **kwargs)
130 FigureCanvasBase(fig)
131
--> 132 fig.canvas.print_figure(bytes_io, **kw)
133 data = bytes_io.getvalue()
134 if fmt == 'svg':
~\Anaconda3\lib\site-packages\matplotlib\backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)
2191 else suppress())
2192 with ctx:
-> 2193 self.figure.draw(renderer)
2194
2195 bbox_inches = self.figure.get_tightbbox(
~\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
39 renderer.start_filter()
40
---> 41 return draw(artist, renderer, *args, **kwargs)
42 finally:
43 if artist.get_agg_filter() is not None:
~\Anaconda3\lib\site-packages\matplotlib\figure.py in draw(self, renderer)
1862 self.patch.draw(renderer)
1863 mimage._draw_list_compositing_images(
-> 1864 renderer, self, artists, self.suppressComposite)
1865
1866 renderer.close_group('figure')
~\Anaconda3\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
130 if not_composite or not has_images:
131 for a in artists:
--> 132 a.draw(renderer)
133 else:
134 # Composite any adjacent images together
~\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
39 renderer.start_filter()
40
---> 41 return draw(artist, renderer, *args, **kwargs)
42 finally:
43 if artist.get_agg_filter() is not None:
~\Anaconda3\lib\site-packages\matplotlib\cbook\deprecation.py in wrapper(*inner_args, **inner_kwargs)
409 else deprecation_addendum,
410 **kwargs)
--> 411 return func(*inner_args, **inner_kwargs)
412
413 return wrapper
~\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in draw(self, renderer, inframe)
2746 renderer.stop_rasterizing()
2747
-> 2748 mimage._draw_list_compositing_images(renderer, self, artists)
2749
2750 renderer.close_group('axes')
~\Anaconda3\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
130 if not_composite or not has_images:
131 for a in artists:
--> 132 a.draw(renderer)
133 else:
134 # Composite any adjacent images together
~\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
39 renderer.start_filter()
40
---> 41 return draw(artist, renderer, *args, **kwargs)
42 finally:
43 if artist.get_agg_filter() is not None:
~\Anaconda3\lib\site-packages\matplotlib\collections.py in draw(self, renderer)
929 def draw(self, renderer):
930 self.set_sizes(self._sizes, self.figure.dpi)
--> 931 Collection.draw(self, renderer)
932
933
~\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
39 renderer.start_filter()
40
---> 41 return draw(artist, renderer, *args, **kwargs)
42 finally:
43 if artist.get_agg_filter() is not None:
~\Anaconda3\lib\site-packages\matplotlib\collections.py in draw(self, renderer)
383 else:
384 combined_transform = transform
--> 385 extents = paths[0].get_extents(combined_transform)
386 if (extents.width < self.figure.bbox.width
387 and extents.height < self.figure.bbox.height):
~\Anaconda3\lib\site-packages\matplotlib\path.py in get_extents(self, transform, **kwargs)
594 _, dzeros = curve.axis_aligned_extrema()
595 # as can the ends of the curve
--> 596 bbox.update_from_data_xy(curve([0, *dzeros, 1]), ignore=False)
597 return bbox
598
~\Anaconda3\lib\site-packages\matplotlib\bezier.py in __call__(self, t)
214 t = np.asarray(t)
215 return (np.power.outer(1 - t, self._orders[::-1])
--> 216 * np.power.outer(t, self._orders)) @ self._px
217
218 def point_at_t(self, t):
KeyboardInterrupt:
Job Status: job has successfully run