天天看點

專治不明覺厲:深度解密IBM黑科技量子計算機

量子計算機真的不隻存在在科幻小說裡嗎?它和普通計算機有何差別?和咱普通程式員又有何關系。本篇文章專治不明覺厲,希望帶你一探量子計算機的究竟!

2001年的時候,IBM發表文章說“在未來的幾十年裡,量子計算機很可能會走出科幻小說與科研實驗室(主要在IBM)進入實際應用。”

現在這句話已經成為了現實,并且隻用了十幾年的時間。在本周三,IBM的科學家首次将該公司的量子計算機接入雲端服務向大衆公開。科技的發展總是令人震驚不已。并且IBM希望幾年之内就能開發出可用于量子計算機的實驗晶片。目前,IBM還沒有正式公開量子計算服務,但是有興趣的朋友可以登入IBM Quantum申請試用。

IBM正在研發的是基于超導效應的量子邏輯門架構的通用量子計算機。對于量子計算機,國内媒體報道轉載的很多,不過大多基本停留在翻譯英文媒體的水準。而且互相轉發,鮮有原創或者類似電子産品的試用評測。本文作者者恰好做過量子加密的研究和實驗,對于量子計算也有興趣,而且作者的專業之一光子學(Photonics)恰好也是量子加密/量子計算的實體實作途徑之一。

是以我們特約了一篇從淺入深,老少鹹宜的科普介紹,來給大家解說量子計算機的原理,和普通計算機的差別,與咱們程式員有什麼關系,并且作者還利用IBM的開放服務做了一些評測。希望沒有任何專業背景的讀者能從本文管窺全豹,同時對于擁有相關背景知識(主要是大學實體、量子力學和數字電路/模拟電路)的讀者也能有所收獲。

量子計算機的發明曆史

史蒂芬·威斯納在1969年最早提出“基于量子力學的計算裝置”。1980年代一系列的研究使得量子計算機的理論變得豐富起來。在1981年五月的MIT實體學和計算機技術的一次會議上,1918年出生的美國實體學家理查德·費曼,作了一個“Simulating Physics With Computers”的報告,揭開了研究發展量子計算機的新篇章。

費曼在報告中提出:經典的圖靈計算機可以用來模拟量子實體嗎?答案是否定的,用傳統計算機來模拟量子力學,計算量将随着系統(微觀粒子數)的增大而指數增加。費曼認為微觀世界的本質是量子的,想要模拟它,就得用和自然界的工作原理一樣的方式,也就是量子的方式才行。費曼首先将實體學和計算機理論聯系到一起,他在MIT會上精彩的演講,使得計算機科學家開始關注實體學的進展,關注量子力學。

1994年,貝爾實驗室的專家彼得·秀爾(Peter Shor)證明量子計算機能做出離散對數運算,而且速度遠勝傳統電腦。

2011年5月11日,加拿大的D-Wave 系統公司釋出了一款号稱“全球第一款商用型量子計算機”的計算裝置“D-Wave One”。

2013年5月,谷歌和NASA在加利福尼亞的量子人工智能實驗室釋出D-Wave Two。

什麼是量子計算

量子計算是一門理論科學。它是研究如何直接應用量子力學現象(例如量子疊加态和量子糾纏态)對資料進行操作的計算系統的科學。在最終的運算結果上,量子計算機和現有計算機沒有任何不同(否則一定是有一方算錯了,那算錯的一方也就沒有什麼實用價值了)。它們最大的不同之處在于運算的過程有着天壤之别,後文将會詳細解釋。 

量子計算模型,主要有3種:

● 量子電路模型

● 單向量子計算模型

● 絕熱量子計算模型

1. 量子電路模型

量子電路模型(Quantum circuit model)是把量子計算過程化成像經典計算一樣有不同的“邏輯門”(當然是quantum operation)作用在量子态上,最後得到所期待的量子态。

2. 單向量子計算模型  

單向量子計算模型 (one-way quantum computation model) 是把量子計算,化成通過傳輸(teleportatio)和測量二維簇态(two dimensional cluster state),使得我們可以得到我們想要的量子門操作(quantum gates)。

3. 絕熱量子計算模型

絕熱量子計算模型(adiabatic quantum computation model)是通過先把問題劃歸成複雜的漢密爾頓量的基态(Hamiltonian ground state)的問題(即找到基态就可以找到最終結果),然後開始與一個簡單的漢密爾頓量,通過絕熱過程最後得到所需要的基态。

量子計算機比傳統計算機優越在哪裡?

量子計算機造出來了,依然需要優秀的算法。就像我們日常所用的電子計算機中的排序問題,寫得好的算法基本可以做到O(n*log(n))的時間複雜度,而差的算法很可能就是O(n^2)了。

舉一個非常實用的例子:快速傅立葉變換(FFT)在信号處理和圖像進行中是十分常見也非常有用的函數。它的時間複雜度是O(n*long(n))。借助量子計算機,FFT 的複雜度可以降低到 O((log(n))^2),甚至連讀一遍資料的 O(n) 時間都不用,因為隻要 log(n) 個量子比特就可以描述 n 維向量了。利用高性能的 FFT,因子分解的複雜度可以達到亞指數時間(sub-exponential time)。

目前量子計算機已經以可擴充的方式,使用 Shor's Algorithm 完成了對15的素數分解。有人表示:用 Shor 算法實作素數分解這一件事情,可以與經典計算機中的 "Hello World!" 相提并論。 除了贊歎它的開創性地位之外,也從一個側面說明目前量子計算還處在起步階段。

量子算法與我們有什麼關系?

量子算法的時間複雜度與大資料的關系:

有了上面的介紹,有心的讀者應該已經了然于胸了:資料量越大,量子算法在時間複雜度上的優勢就越明顯:n=1000時,O(n^2)的傳統算法需要運算一百萬步,而O(n*log(n))稍好,也得幾千步。而量子計算隻需要幾步就完成整個運算拿到最終結果了。

在大資料時代,n=10000000是家常便飯,那麼上邊的對比就成了10^12 vs 10^6 vs 10^2,在耗時上的差距是幾個數量級。

上面僅僅是以FFT為例子,實際上一旦找到實用的算法可以實作O(n)甚至O(1)的效率,那在大資料領域裡就可以給正常電子計算機畫上句号了。

懂得量子算法的程式員,就會和目前熟悉深度學習算法以及大資料架構的程式員一樣,變得格外搶手。

是以現在投入必要的時間精力學習一點量子計算的知識,是自我提高的一個不錯的選擇。而IBM量子體驗的網站,正好也提供了這個平台和機會。

量子算法的時間複雜度與雲計算的關系:

量子算法對雲存儲行業,則多少會有些打擊。目前各個有能力的大國政府都在靜悄悄的研究量子計算以便即時破解重要的加密檔案。而隻要這個技術成熟可用,那麼任何存儲在第三方的雲資料都變得不安全了。因為哪怕是加密存儲,也可以在轉眼間被破解。

有了量子計算的威脅,使用者會更加保守的将敏感資料儲存在隻有自己能接觸到的實體環境,而不再會大大咧咧的加密上傳到第三方雲存儲服務商。當然,量子計算一定能同時帶動加密技術的發展。但是目前來看這對矛與盾的較量,在政府大機構的影響下,應該是解密技術占上風且更容易流入民用。量子加密技術則主要還是有政府機構掌握。是以從一點來看,量子計算的出現,對提供雲存儲服務行業并不是一個利好消息。當然,作為程式員,如果能了解甚至設計可靠的量子加密算法,也許很快就會成為IT業内的搶手當紅辣子雞,甚至被政府特工追殺也不是沒有可能。

量子計算的終極實作會是什麼樣?

量子計算研究的終極目标之一是制造并應用通用量子計算機(Universal Quantum computer)。以目前的設計構想,至少要能夠處理上百量子比特位(qubit)才有意義,目前IBM開放的5-qubit計算服務離這一目标還差得很遠。通用量子計算機的具體名額可以參考《The Physical Implementation of Quantum Computation》(http://arxiv.org/abs/quant-ph?0002077 )

而硬體上的具體實體實作有很多,比如通過:

● 光子學

● 核磁共振

● QED腔

● 量子點

● Redberg atom

● ion trap

● Josephson junction

等等來實作。

較之D-wave量子計算機,IBM牛在哪裡?

比較出名的D-wave 1代和2代使用的都是Josephson junction 。

NASA、CIA、Google都購買了D-wave進行相關研究。牛津大學則和洛克馬丁、諾基亞合建了一個基于D-wave模型的量子人工智能的研究中心。D-Wave受到質疑的地方在于其應用場景受限,目前的設計并不是通用量子計算機。

而IBM正在研發的是基于量子邏輯門的通用型量子計算機,是以通用性沒有問題,所有的量子算法都能運作。

此外,IBM還完成了兩個很重要的突破。

一是同時檢測兩種量子誤差(quantum errors):1. bit-flip, 2. phase-flip。進而大大增強量了子計算機的穩定性。

最簡單的單個量子比特的狄拉克表示: |Psi>=a|0>+b|1> ,其中a,b是兩個基态的系數。其他量子比特基态對還有|+>和|->, |spin+>和|spin->等。是以也可記為|Psi>=a|+>+b|->或者|Psi>=a|spin+>+b|spin->,采用何種正交基主要取決于量子系統的實體實作,例如光子的偏振态、粒子的自旋等等,這裡就不再深入。 

一個量子比特是兩個标準正交比特0和1的任意疊加。a和b滿足歸一化條件即可,是以a和b之間有一個相位自由度。如果相位在量子計算過程中被幹擾,這個flip就是就是phase-flip。 bit-flip就是運算操作過程中0意外變成1,或者1意外變成0了。理想情況下,量子計算不會有誤差。 但實際上由于環境噪音(主要是熱和電磁輻射),量子系統會受到環境幹擾。隻有在零場強和絕對零度的環境裡,才能有理想狀态下的量子計算。D-wave是在20mk(零下273.13度)工作的,IBM用的也是超導晶片,工作溫度是15mk(零下273.135度,僅比絕對零度-273.15度高0.015度)。

之前的研究隻能測量兩個error中的一個,也就無法做到EC(error correction)。如今IBM解決了這個問題(http://spectrum.ieee.org/tech-talk/computing/hardware/ibm-shows-first-full-error-detection-for-quantum-computers)。 

二是IBM提供了有史以來最好的可擴充性。當然落實在實際硬體開發應該還會有新的問題。IBM接下來的目标應該是把量子比特加到50至100。再往後就需要更多的研發資源了。 

在這裡附帶澄清一下很多媒體對量子比特的普遍誤解,以及連帶到對量子計算的誤解:對于量子計算的優勢,媒體上常見的解釋是,相比較我們常用的電子計算機采用的0,1二進制值,量子計算機每一個量子位都能存儲0到1之間的資訊。這是一個想當然的解釋,這根本不是量子計算機的本質優勢:

因為很明顯我們用電阻電容組成的模拟電路一樣可以表征0到1之間的任何連續值。是以說本質差別不是比特位所攜帶數值的無窮可能性,而是比特資訊的量子疊加态特性。對于多比特位的運算,量子計算機的優勢才得以明顯展現:所有的比特位可以同時完成邏輯運算,這一點是傳統電子計算機根本做不到的。

對于多比特位的量子系統,整個系統的量子比特位狀态是可定量預測的,而單個量子比特位是不能确定的。

舉一個簡單的例子來說明這種量子态的疊加關聯性——在IBM量子計算服務的教程裡也用到的十分常見的Hadamard Gate:

Hadamard Gate的功能就是将輸入 α0|0⟩+α1|1⟩,轉換成輸出 2^{-1/2}(α0+α1)|0⟩+2^{-1/2}(α0-α1)|1⟩ 。換言之,Hadamard Gate 就是把經典的狀态 |0⟩ 和 |1⟩ 轉換成 |0⟩ 和 |1⟩ 的“halfway" 狀态。

關鍵之處在于:這個操作,即使是僅對 n 個量子比特中的第一位進行Hadamard gate 運算,所有的 2^{n} 個系數都會改變。這裡的“并行”運算是量子力學的實體本質確定的,而不是很多媒體中不明就裡的多核多裝置的”并行/多線程“。

必須“冷酷”的量子計算機

回到IBM 量子計算的實驗室硬體,下面放了兩張從官方網站視訊中的截圖:

圖一是開放式稀釋冰箱( open dilution refrigerator)。冰箱底部的溫度最低,低到僅比絕對零度高15mK,以便維持晶片中超導材料的超導狀态,用來處理量子資訊 。

圖二 是冰箱的氣體處理系統。面闆顯示的是閥門以及泵的開關情況。冰箱裡使用的氣體是氦的同位素氦氣-3(Helium-3) 。

IBM開放的服務是什麼?

看完這麼多高大上高冷貴的東西,再來看看IBM為愛好者提供了什麼試用服務。

下圖是申請到的試用帳号,下面按照他們的教程(User Guide)嘗試的幾個實驗。

IBM量子線上體驗含七個部分

第一部分(The IBM Quantum Experience)是面向所有人介紹世界上第一個基于雲端的量子計算服務。

第二部分(The Weird and Wonderful World of the Qubit)是介紹基本的量子比特常識

第三部分(Multiple Qubits, Gates, and Entangled States)通過四個小課程示範多量子比特的複雜性和精巧之處。

第四部分(Quantum Algorithms)更深入的介紹量子世界的奇妙之處,介紹可用于程式設計的量子算法。

第五部分(Quantum Error Correction)介紹如何利用量子糾纏态糾錯

第六部分(FAQ)就是常見問題的回答。

頁面右下端還有一個小蟲子的圖示,友善使用者回報各種bu

IBM服務示例

IBM官方介紹視訊裡用的是Grover's Search算法做例子,這裡我就以Deutsch-Jozsa 算法再舉一個例子。畢竟這個例子的實體模型可以對應于光學中雙縫幹涉,看上去格外親切。

Deutsch-Jozsa Algorithm簡介

Deutsch-Jozsa 量子算法是第一個證明量子算法能繞過經典算法困境的例子。這個算法示範允許量子振幅取正值和負值,而不像傳統的機率必須總是非負的。

Deutsch-Jozsa量子問題定義如下。考慮一個函數f(x)對輸入的n比特位x傳回0或1。

假設我們確定f(x)或者是一個常數函數,它的傳回值是常數c,對所有輸入x有c∈{0,1},或者f(x)是平衡函數,對任何0,1輸入他都取半值。我們的目标是通過盡可能少的嘗試來确定f(x)到底是常數函數還是平衡函數。傳統算法在最壞情況下需要進行2^(n-1) + 1次計算。而使用Deutsch-Jozsa量子算法,這個問題可以隻用一次運算來解答。

要了解Deutsch-Jozsa量子算法是如何工作的,讓我們先考慮一個典型的幹涉實驗:其行為類似波的粒子,如光子,可以從源頭上檢測器陣列通過兩個或多個路徑行進。觀察到粒子出現機率大的區域是入射波在到達時具有相同的相位的區域。

設想我們可以建立一個幹擾實驗,具有2^n個探測器和從源到每個探測器的2^n個可能的路徑。我們将其分别标記為n比特輸入x和n比特探測器y。進一步假設x與探測器ý沿路徑累積的相位等于C(-1)^(f(x)+x+y),其中

x⋅y=Σi= xiyi

是二進制的内積(點乘),C是歸一化系數。觀察檢測器y中的粒子出現的機率可以通過累加所有路徑的幅值x到達y時的絕對值平方來計算:

PR(y)= |CΣx(-1)^(f(x)+x⋅y)| ^2

歸一化條件ΣyPr(y)= 1,則使C = 2^(-n)。接下來計算檢測器Y = 0^N觀察粒子的機率譜(Y = 0^n)(全零字元串)。我們有Pr(Y = 0^n)= | 2^(-n)Σ(-1)f(x)|^ 2

如果函數f(x)= c是常數函數,我們将得到譜Pr(Yy= 0^n)= |(-1)^c |^ 2 = 1。而當f(x)是一個平衡函數時,我們會得到Pr(y = 0^n)= 0,因為所有的總和超過x的項彼此抵消。

是以,我們可以隻用一次實驗判斷是否f(x)是常數還是平衡函數。

當然,以光學手段進行這個實驗不太實際,因為它需要一個非常大的光學平台!但是,我們可以用量子計算機模拟這個實驗,僅用n量子比特和通路Oracle電路Uf就能實作。

事實上,考慮下面的算法:

第1步:初始化n的全零狀态量子比特| 0,...,0>。

第2步 應用Hagamard門H至每個量子位。

第3步. 應用Oracle電路Uf。

第4步:重複步驟2。

第5步:測量每個量子位。設y =(y1,...,yn)是測量結果的清單。

如果f是一個常數函數,那麼将會觀測到y是全零字元串。Hagamard門将輸入|0>映射到均勻疊加的|0>和|1>。 第二步之後系統的狀态是2^(-n/2)Σ|x>。

接着Oracle電路将此狀态映射到2^(-n /2)Σ(-1)^f(x)|x>。第4步再次應用Hadamards門,它将基态|x>映射到一個疊加态2^(-n/2)Σ(-1)^(xy)|y>。第4步完成後系統的狀态是|ψ>=Σψ(y)|y>,其中ψ(y)= 2^(-n)Σ(-1)^(f(x)+x⋅y)。

這正是我們需要的幹擾實驗。

在步驟5的測量起着檢測粒子的作用。如上結果表明,如果機率y=0^n值為1,則f是一個常數函數。為零,則f是一個平衡函數。是以,我們隻通過一次運算就解決了Deutsch-Jozsa量子問題的确切解答。

量子線路設計

拉拉雜雜扯這麼多,沒有量子力學基礎的讀者可能有點暈。那麼下面就是實際量子線路的設計:

一 n=3,函數為常數函數時的模拟:

結果跟理論分析預測的是一樣的,即輸出為1

二 n=3,函數為平衡函數時的模拟:

輸出跟理論分析預測的是一樣的,即輸出為0

牛人對IBM量子計算的評價

從外界的評價來看:“……IBM所做的是對的。該服務的界面易于使用,“任何對量子計算機有所了解的學生都知道如何與這個裝置互動。”

Cory周末對IBM這個新服務進行了試用,讓他吃驚的是:這個系統相當穩定——每一次測試它幾乎都得到了相同的結果。這在傳統計算機中是個尋常的現象,但在基本都是圍繞捕獲機率展開的量子計算機世界中,結果的穩定一緻就意味着标志性的進步。 ”

IBM的确用他的量子計算平台證明了他的突破之一:對雙誤差同時測量來大大提高系統的穩定性。此外能對公衆開放5qubit的平台,也給大家留下了想象的空間——IBM到底能在短期内将qubit推進到多少位?

總結:

IBM提供的這個平台,看上去是為自己的研發成果和企業品牌打廣告,事實也的确起到了廣而告之的作用。

但是如果你真的認為就隻有這麼點兒資訊,那說明你還沒有親自嘗試網頁上的各種量子計算和算法。

如果你稍有嘗試,應該不難發現,IBM提供的其實是一個雙向學習的平台:嘗試使用者可以從中學習了解量子計算的各項基本知識和常見算法,IBM則可以從中統計使用者的大緻認知水準。

既然每個使用者都是用郵箱注冊,又在平台上擺弄了一番。IBM的研究團隊也會從試用使用者中發現具備相關背景知識、能熟練實用的“進階使用者”,說不定這些使用者在不久就能從注冊郵箱收到IBM的招聘挖人郵件呢——這隻是yy而已,不過既然人家免費提供了這個學習平台,為什麼不利用閑暇時間了解學習一下,提高一下作為程式員的未來職業素養呢。

原文釋出時間為:2016-11-14

本文作者:陳圳

本文來源:

虎嗅網

,如需轉載請聯系原作者。

繼續閱讀