一、关于量子计算
这是我关于量子机器学习(QML)的第二篇文章,这是第一篇,关于为什么你应该开始学习QML。
开始研究量子机器学习很困难,因为我不知道我需要了解多少量子力学和计算知识。我在101年上大学时上了量子力学2008,所以我记不住太多(我记得基本的想法和概念),量子计算对我来说是完全陌生的。
然后我问一个正在研究量子计算的朋友,他的回答是:这完全取决于你的目标。如果你想学习如何开发量子硬件,你必须学习量子力学,但如果你想专注于算法线性代数就足够了!
现在我认为他部分正确,尽管学习量子力学真的很有帮助。线性代数和统计是专门开始学习量子机器学习所需的最重要的概念。我旅程的下一步是如何开始学习量子计算的基本概念,以便以后继续学习QML?这是一个艰难的部分,因为我不想从非常理论化的文章开始学习,我想以简单的方式开始学习。论文往往过于理论化(它们应该是),并且过于重符号,这对于不习惯量子力学符号的人来说是苛刻的。
所以我开始通过阅读Qiskit和Pennylane教程来学习,这是两个最著名的模拟量子设备的Python库。但有时教程过多地介绍如何编写代码,而不是基于概念,所以我仍然觉得我并没有完全走在正确的道路上。此外,一些教程过于专注于构建量子电路,这很重要,但我仍然对在前往 QML 之前我应该成为构建量子电路的专家有疑问。
我还尝试阅读Medium上的QML帖子,这也非常有帮助。我强烈推荐Frank Zieckert博客和他的书,它们很好地介绍了量子计算和QML的基本概念。Medium上的Qiskit社区有一些不错的帖子,其中包含有趣的项目。迈向数据科学并不具体针对QML,但有时他们会发布一些关于该主题的好内容。
最后,经过几个月的QML学习,我建议的学习路径是:
- 阅读Frank Zieckert的书:它们是QML的一个很好的介绍。他们以一种非常说教的方式解释量子计算的基本概念,不急于概念解释,也不太依赖数学符号。此外,Qiskit上还有一堆电路设计和模拟代码,这真的很好。就我个人而言,我真的很喜欢变分量子特征求解器(VQE)和量子近似优化算法。
- 多练习。设计量子电路并对其进行仿真。您可以使用Qiskit,Pennylane或其他库。这对于充分理解量子叠加和纠缠在实践中如何工作以及量子门如何运作非常重要。非受控(CNOT)并不像它的名字所暗示的那么简单!在这里,我承认我应该多练习。
- 阅读 Medium 中的其他博客,了解其他人如何尝试使用 QML,因为我们仍在尝试了解这个工具的强大功能(这里和这里有一些不错的帖子)。尝试在数据科学中找到您已经喜欢的主题,以了解人们在QML中接近的内容。你也可以阅读我的博客,评论或批评我的错误(我真的鼓励你,我在这里学习)。
- 尝试使用量子和经典计算相结合来解决简单的优化和分类问题。
现在我希望我能帮你谈谈我自己的旅程。
二、我应该使用什么工具
显然,用真正的量子计算机开始学习是不切实际的,但这对初学者来说不是问题,有一些 Python 库可以模拟量子设备。我没有寻找其他语言的库,因为我已经在使用 Python 并且我找到了这种语言的大量材料。
我遇到了其中两个我分析的:Pennylane和Qiskit。
尽管Qiskit更广为人知,但我还是从Pennylane开始的,因为我看到它专注于QML,所以我开始研究它的文档。我不会做很长的文字,而是列出利弊。
Pennylane:
优势:
- 良好的文档和教程
- 它很容易安装并使教程的代码在您的机器中工作(至少对我来说)
- 灵活运行优化问题
弊:
- 我没有发现在教程上下文之外制作一些东西非常直观(也许那是我!
- 在Qiskit上设计量子电路更容易,这是我切换到Qiskit的主要原因。
当我不得不设计一个更复杂的电路时,我在Pennylane尝试时遇到了一些麻烦,然后我的印象是在Qiskit中设计它更容易。Pennylane有一个很好的Qiskit插件,然后我在Qiskit中设计了电路并导入Pennylane。但后来我在这个问题上挣扎着,然后我想:也许我应该在Qiskit上设计所有东西。嗯,Pennylane是一个非常好的图书馆,也许由于我的无能,我遇到了这些困难。
About Qiskit:
优势:
- 良好的文档和教程
- 灵活运行优化问题
- 易于设计的量子电路
- 易于部署的简单 QML 模型
- 拥有大量模块,包括 ML
弊:
- Qiskit 有一些不推荐使用的模块,我在运行使用这些弃用库中函数的 Medium 帖子中的代码时遇到了一些问题
但事实是:我真的很喜欢Qiskit,这是我的选择(对不起Pennylane!
但是一开始你需要一些东西:耐心!这些是量子设备模拟器,所以它们确实使用量子计算逻辑的经典计算进行计算,这是昂贵的,因此在计算机中使用QML模型需要耐心,因为为相对较小的数据集训练模型需要时间,我们将无法在大型数据集中开发模型!