qiskit-qec
qiskit-qec copied to clipboard
Add Decoder: Efficient Machine-Learning-based decoder for Heavy Hexagonal QECC
Include the decoder from the paper arxiv
Efficient Machine-Learning-based decoder for Heavy Hexagonal QECC
by Debasmita Bhoumik, Ritajit Majumdar, Dhiraj Madan, Dhinakaran Vinayagamurthy, Shesha Raghunathan, Susmita Sur-Kolay
Errors in heavy hexagonal code and other topological codes like surface code were usually decoded using the Minimum Weight Perfect Matching (MWPM) based decoders. Recent advances have shown that topological codes can be efficiently decoded by deploying machine learning (ML) techniques, for example, neural networks. In this work, we first propose an ML based decoder and show that this decoder can decode heavy hexagonal code efficiently, in terms of the values of threshold and pseudo-threshold, for various noise models. We show that the proposed ML based decoding method achieves ∼5 times higher values of threshold than that by MWPM. Next, exploiting the property of subsystem codes, we define gauge equivalence in heavy hexagonal code, by which two different errors can belong to the same error class. We obtain a quadratic reduction in the number of error classes for both bit flip and phase flip errors, thus achieving a further improvement of ∼14% in the threshold o ver the basic ML decoder. A novel technique of rank based gauge equivalence minimization to minimize the number of classes is further proposed, which is empirically faster than the previously mentioned gauge equivalence minimization.
This should be done in stages.
Stage 1: Include as a specialized decoder with the code independent of the framework but with a interface built to access and use it.
Stage 2: Modularize the code and move it in to a framework decoder
Steps taken so far:
- Nov 28, 2022: Discussions with Dhiraj Madan, Dhinakaran Vinayagamurthy, and Shesha Raghunathan to introduce the framework and establish how to proceed.
- Creation of Issue
Steps to do:
- Make code available to @dsvandet and @grace-harper
- Establish a slack channel for discussions beyond github discussions
- Check code for licenses and packages used
- Further introduction to framework