技術分享| MindSpore量子機器學習庫MindQuantum

2022-02-05 ModelArts AI開發者社區

本文預計閱讀8-15分鐘!點擊文末【閱讀全文】,即可在 ModelArts 平臺學習到一個經典案例掌握基於MindSpore的深度學習!

專家解惑 | 關於華為雲盤古大模型,你想問的都在這裡~

MindSpore在3.28日正式開源了量子機器學習庫MindQuantum,本文介紹MindQuantum的關鍵技術。介紹MindQuantum前,先簡單闡述下量子計算的相關概念。

 

量子計算是當今世界最具顛覆性的技術之一,各個國家和公司都在加大該領域的研發投入。量子計算機的概念最早是由著名物理學家費曼於1981年提出,按照他的想法,利用量子力學原理運行的量子計算機,相比於經典計算機能夠更快的對複雜量子系統進行模擬。由於量子系統的糾纏性、疊加性和並行性,人們可以以多項式級乃至指數級的加速來實現一些算法,如用於大數分解的Shor算法、用於量子搜索的Grover算法等。      


為了讓大家快速步入量子計算大門,我們首先需要了解一些基本的概念,包括用於信息存儲的量子比特和對量子比特進行邏輯操作的量子門。

在經典計算機裡,人們通常用電位的高低來表示二進位的0和1,然後利用三極體等半導體器件對電流進行操控,以完成通用邏輯運算。然而,在同一時間內,同一個比特只能處於低電位和高電位中的一種情況。在神奇的量子世界裡,一些實體可以同時處於兩種不同的狀態。例如電子,它的自旋可以同時處於向上的狀態和向下的狀態,如果我們把這種向上和向下的狀態分別記為0和1,那麼以電子自旋為代表的量子比特則可以同時處於0和1的疊加態。按照狄拉克符號的規則,我們把這種0和1的狀態分別記為|0>和|1>,稱為右矢表示。對於單個量子比特,其狀態是處於|0>和|1>的疊加態,也即:

|∮)=a|0)+b|1)

這裡,a和b必須滿足|a|²+|b|²=1,也即態的歸一化條件。有一定線性代數基礎的同學看到這裡可能就會想到,單量子比特的態就是以|0>和|1>為基矢所張成的二維空間中的矢量。我們把此空間稱為希爾伯特空間。而多比特量子態所處的空間則由多個這種單比特空間直積而成。為了便於大家理解,我們可以將|0)和|1)用二維空間中最簡單的兩個正交基矢表示:

這樣任意的單量子比特態可以表示為:

這樣任意的單量子比特態可以表示為:


那麼多量子比特又該如何表示呢?以兩比特為例,兩比特量子態所處的空間由兩個二維希爾伯特空間直積而成,四個基矢分別為|00)、|01)、和|11),其中:

其他以此類推。因此,我們可以發現,對於N個比特的系統,其量子態能夠同時處於2^N個計算基矢的疊加態上,這是經典比特無法企及的。

有了基本量子信息載體的量子比特後,我們就需要對這些量子比特進行相應的操控。在經典計算機裡,我們有一些半導體器件來對電信號進行處理,從而形成經典邏輯門,例如與非門、異或門等。而在量子計算機裡,我們將這種對量子比特進行操控的邏輯門成為量子邏輯門,例如在超導量子計算機中,我們可以將一些微波脈衝作用在超導量子比特上,對其進行相應的控制,例如比特翻轉等。這種操控所形成的邏輯我們也可以用線性代數語言來描述,例如最常用的幾個邏輯門XYZ三個泡利門和哈達瑪門H可以分別用矩陣表示為:

這些門都是作用在單比特上的量子門,其作用在量子態的運算規則滿足矩陣乘法,例如:

我們可以發現,X就是比特翻轉門,它將|0)態翻轉為|1)態,將|0)態翻轉為|1)態。除了這種單比特門,我們還有多比特門,例如控制翻轉門CNOT,它的作用效果是只有當控制位為|1)時,才在作用位上作用翻轉門X。

不難發現,上面的量子門的矩陣數值上都是固定的,還有一些門,他們是可變參數的,例如Rx、Ry和Rz旋轉門。它們的矩陣表達式為:

這裡,通過改變 \theta 的值,我們得到不同的旋轉門。

     類比於經典線路,我們可以把一系列的量子邏輯門進行精心的設計組合,構成一個量子線路並完成一定的任務。如下圖所示,該量子線路對三個量子比特進行調控,分別為q0、q1、和q2線路由三個量子門構成分別為作用在q0上的哈達瑪門、受q0控制且作用在q1上的X門和作用在q2上的含參數旋轉門Ry(⊙)。

我們可以對量子線路演化後的量子態進行測量,從量子態中提取信息,並進行後續操作。

下面,我們利用MindQuantum來對上面的線路進行演化,並得到最終的量子態。首先,按照[安裝指導](MindSpore/mindquantum)完成MindQuantum的安裝,運行如下代碼,將得到末態量子態。

因此我們得到最終用的量子態為:

早在上個世紀,科學家就提出了用於機器學習的量子感知機概念。最近20年,越來越多的用於機器學習的量子算法被發掘出來,其中包括用於求解線性方程組的HHL算法,和基於此的量子主成分分析、量子支持向量機等。下圖給出了各種量子機器學習算法對最好經典算法的加速效果。

然而,有意義地實用化這些算法需要成千上萬,乃至百萬量級的量子比特,在當前NISQ(Noisy Intermediate-Scale Quantum)階段,真實量子計算機的比特數只能達到幾十到幾百的量級,且系統含有較多噪聲。為了在NISQ階段展現量子計算機的優勢,人們發展出來了量子經典混合機器學習庫,經典計算機與量子計算機相輔相成,共同完成一個複雜的任務,例如量子化學模擬和組合優化等。

MindQuantum是結合MindSpore和HiQ開發的量子機器學習庫,支持多種量子神經網絡的訓練和推理。得益於華為HiQ團隊的量子計算研發能力和MindSpore高性能自動微分能力,MindQuantum能夠高效處理量子機器學習、量子化學模擬和量子優化等問題,性能達到業界TOP1,為廣大的科研人員、老師和學生提供了快速設計和驗證量子機器學習算法的高效平臺。

下圖是MindQuantum的架構圖,當前我們利用量子模擬器算子來對量子體系進行模擬,它可以完成前向傳播和梯度計算的功能,在此基礎之上,我們有量子算法庫,例如量子神經網絡啊、量子化學模擬的VQE和量子優化算法的QAOA等,再往上就有了量子應用,我們可以利用MindQuantum的量子算法來進行機器學習、化學模擬和運籌優化等任務。

在MindQuantum中,量子神經網絡的結構如下圖所描述,其中的量子線路由三大塊構成,編碼線路會將經典數據編碼到量子態上,然後是待訓練線路,我們可以通過調節線路中邏輯門的參數來使得最後的測量結果符合預期。

通過MindQuantum中的MindQuantumLayer,我們可以很容易的搭建量子機器學習層,並且可以無縫的跟MindSpore中其他的算子構成一張更大的機器學習網絡。下面,我們結合一個簡單的例子來體驗一下MindQuantum量子機器學習庫。

對於如上的量子線路,encoder線路表徵系統對初始量子態的誤差影響,a和β為某個固定值,我們需要訓練一個ansatz線路來抵消掉這個誤差,使得最後的量子態還是處於|0)態。這時我們只需要對量子末態進行泡利算符Z測量,由於|0)態是算符Z的本徵態,且本徵值為1,因此我們只需讓測量值最大即可。

import numpy as npfrom mindquantum.ops import QubitOperatorfrom mindquantum import Circuit, Hamiltonian
encoder = Circuit().rx('alpha', 0).ry('beta', 0).no_grad()ansatz = Circuit().rx('a', 0).ry('b', 0)circ = encoder + ansatzham = Hamiltonian(QubitOperator('Z0'))alpha, beta = 0.5, 1.2encoder_data = np.array([[alpha, beta]]).astype(np.float32)

from mindquantum.nn import MindQuantumLayerimport mindspore as ms
class Net(ms.nn.Cell): def __init__(self, pqc): super(Net, self).__init__() self.pqc = pqc def construct(self, x): return -self.pqc(x)
pqc = MindQuantumLayer(['alpha', 'beta'], ['a', 'b'], circ, ham)train_net = Net(pqc)

opti = ms.nn.Adam(train_net.trainable_params(), 0.2)net = ms.nn.TrainOneStepCell(train_net, opti)for i in range(100):    print(net(ms.Tensor(encoder_data)))

最後收斂結果為-0.993。同時我們也可以求得最後量子態與目標態的保真度。

from mindquantum.highlevel import StateEvolution

a, b = pqc.weight.asnumpy()pr = {'alpha': alpha, 'beta': beta, 'a': a, 'b': b}state = StateEvolution(circ).final_state(pr)fid = np.abs(np.vdot(state, [1, 0]))**2

通過上面的訓練,我們利用量子神經網絡抵消了系統的誤差,使得最後的量子態的保真度達到99.9999%。

更多樣例

除了上面簡單的例子外,我們還給出了利用MindQuantum來進行自然語言處理、量子化學模擬、組合優化求解和手寫體識別等案例,具體請參考下面連結:

https://gitee.com/mindspore/mindquantum/tree/master/tutorials

END

點擊閱讀原文,立刻報名學習!

相關焦點

  • 開發者分享 | 基於MindSpore體驗量子神經網絡在自然語言處理的應用
    明天就放假啦,祝大家假期愉快,端午安康,今天為大家帶來一篇來自開發者JeffDing的技術分享,一起看看量子神經網路在自然語言處理中有什麼應用吧!/安裝MindQuantum參照文檔 :https://gitee.com/mindspore/mindquantum/blob/r0.1/README_CN.md通過Mindspore.
  • 谷歌開源TensorFlow Quantum,用於訓練量子模型的機器學習框架
    會上,谷歌介紹了近期宣布開源的一款用於訓練量子模型的機器學習庫 TensorFlow Quantum(簡稱 TFQ)。谷歌表示,該量子機器學習模型能夠處理量子數據,並能夠在量子計算機上執行。 量子機器學習庫 TensorFlow Quantum 機器學習(ML)雖然不能精確模擬自然界中的系統,但卻能夠學習系統模型並預測系統行為。
  • 發布量子機器學習開源庫:TensorFlow Quantum
    v=p45kQklIsd4新系外行星檢測https://ai.googleblog.com/2018/03/open-sourcing-hunt-for-exoplanets.html量子計算發展的最新進展https://ai.googleblog.com/2019/10/quantum-supremacy-using-programmable.html
  • 【資源分享】入門量子機器學習大禮包
    終於到了兌現年終承諾的時候了~本期,小編帶大家一起橫掃入門量子機器學習的各種資源。【本期內容】:針對量子計算、機器學習、量子機器學習、量子物理方向列舉些許資源,希望有所幫助。可以在這裡找到關於量子計算、機器學習、量子機器學習各個領域的文章分享。
  • 簡明手冊 | TensorFlow Quantum: 混合量子 — 經典機器學習
    參數化的量子線路示例將參數化的量子線路嵌入機器學習模型通過 TensorFlow Quantum,我們可以輕鬆地將參數化的量子線路以 Keras 層的方式嵌入 Keras 模型。例如對於前節建立的參數化的量子線路 q_model ,我們可以使用 tfq.layers.PQC 將其直接作為一個 Keras 層使用。
  • 量子機器學習框架: TensorFlow Quantum
    原始碼安裝Ubuntu 類系統可以從 github 上克隆 TensorFlow Quantum 庫並安裝。1.默認的Python位置和Python庫路徑應該指向虛擬環境。下載 TensorFlow Quantum下載原始碼並安裝需求: cd .. git clone https://github.com/tensorflow/quantum.gitcd quantum python3 -m pip install -r requirements.txt 驗證Bazel
  • 量子神經網絡(Quantum Neural Network)?
    /blob/main/QNN-MNIST.ipynb上次討論了量子機器學習框架TensorFlow Quantum的Hello World,這次看一下另一個應用:>量子神經網絡。,輸入端有N+1個量子比特,其中N個量子比特對應輸入的字串長度,另有一個read out量子比特,用來輸出分類結果;量子電路內部,用一組帶參數的門連接起來,具體用什麼門以及如何連接,似乎沒有特別的要求,在文章裡作者經過試驗選用了帶參數的XX和ZZ門。
  • 最全量子算法集,Quantum Algorithm Zoo中文版「落戶」量子客
    理論上,所有經典算法都可以在量子計算機上執行。而量子算法這個術語通常用於描述一些已有的稱為量子算法的算法,或者是那些使用了量子力學裡的特徵,諸如疊加或糾纏等基本特徵的算法。這些算法都需要在量子設備上運行,或在專門開發的量子模擬器上運行[4,5]。
  • 「量子霸權」軟硬體兩手抓?谷歌開源TensorFlow Quantum量子機器...
    TensorFlow Quantum(TFQ)是一個用於構建量子機器學習模型原型的開源庫,該框架可以將機器學習和量子計算結合在一起,用於構建量子數據集、混合量子模型和經典機器學習模型、支持量子電路模擬器、訓練判別和生成量子模型。2.
  • 量子計算遇見深度學習(下篇)
    量槳(Paddle Quantum)是基於百度飛槳(PaddlePaddle)開發的量子機器學習工具集,支持量子神經網絡的搭建與訓練,提供易用的量子機器學習開發套件與量子優化、量子化學等前沿量子應用工具集,也讓飛槳成為了國內最先支持量子機器學習的深度學習平臺。
  • iOS 14 代碼洩露:Apple Pay 或將支持支付寶;馬雲重回亞洲首富;谷歌推出首個量子機器學習庫 TFQ | 極客頭條
    整理 | 屠敏頭圖 | CSDN 下載自東方 IC快來收聽極客頭條音頻版吧,智能播報由標貝科技提供技術支持。「極客頭條」—— 技術人員的新聞圈!CSDN 的讀者朋友們早上好哇,「極客頭條」來啦,快來看今天都有哪些值得我們技術人關注的重要新聞吧。
  • 尤亦莊:量子糾纏,時空幾何與機器學習
    量子信息技術近年來接連取得突破,它會是下一代技術革命的領頭羊嗎
  • DeepMind開源面向對象的機器學習庫Sonnet,請與TF配合服用
    李林 編譯整理量子位 報導 | 公眾號 QbitAIGoogle旗下的英國人工智慧公司DeepMind今天宣布開源神經網絡庫
  • DeepMind開源了強化學習庫「松露」,團隊自身也嚴重依賴它
    >強化學習庫,名字叫TRFL。庫裡面的組件,雖然來源各不相同,但都經過嚴密測試,因而相對可靠;並且只要一個API,對開發者比較友好。DeepMind團隊自身做研究,也嚴重依賴這個庫。為了那些難以發覺的Bug這個庫,寫作TRFL,讀作「Truffle」。翻譯成中文叫「松露」。
  • 槳是如何飛起來的——以QAOA為例解讀paddle quantum
    近來百度發布了飛槳量子機器學習工具包Paddle Quantum,好奇心驅使下,下載了原始碼並進行簡要分析。
  • 開發者 | MindSpore第四期集訓營作業詳細記錄
    1、使用anaconda創建虛擬環境2、在虛擬環境中安裝mindspore3、下載mindspore源碼
  • DeepMind發布神經網絡、強化學習庫,網友:推動JAX發展
    十三 發自 凹非寺量子位 報導 | 公眾號 QbitAIDeepMind今日發布了Haiku和
  • 資訊 | 量子技術正在哪些領域顛覆科技?量子技術國際會議上的五個爆點
    在這個過程中,科學家和工程師們,為了將那些只存在於科幻作品中的科幻場景變為現實,正努力地鑽研量子物理學領域。正如來自俄羅斯量子中心的研究員Alexey Fedorov所說:「量子物理學正處於解鎖下一代科技殺手的關鍵位置,它或將改變網絡安全、材料科學、人工智慧以及計量學。」量子技術國際會議是俄羅斯量子中心的宣傳活動,每兩年舉辦一次。
  • MindSpore windows CPU環境淺嘗
    這個時候安裝的python環境也自帶了pip的工具,這樣後續安裝mindspore可以採用pip的工具來安裝。(這裡後續pip工具會對版本有相應的要求,後續安裝mindspore會有提示信息)2.安裝mindspore框架mindspore在可執行程序的安裝上非常簡單,採用pip的工具來安裝即可,安裝命令官網也在安裝指導中給出。
  • 淺談MindSpore的動態Shape
    收錄於話題 #開發者分享通過查看源碼和相關文檔的方式,獲得了初步的解決方案和感悟。這篇博客主要是將當時的見聞加以整理,並給出一點點開發建議。此外,當時筆者還做了組內分享,點擊「閱讀原文」即可獲取原文PPT。由於本人剛入職不久,本博客適合於初學者,高手輕噴。動態Shape,指的是Tensor的Shape依賴於具體的運算,無法提前通過計算得出。