1. 程式人生 > >量子計算機程式設計原理簡介 和 機器學習

量子計算機程式設計原理簡介 和 機器學習

量子計算機程式設計原理簡介 和 機器學習

本文翻譯自D-Wave公司網站

www.dwavesys.com/en/dev-tutorial-intro.html

D-wave公司在2007年就聲稱實現了128位的量子計算機,並會在今年推出512位的量子計算機。

傳統計算機需要大量窮舉試算才能求解的數值優化問題,在量子計算機中利用量子的物理特性可以瞬間求解。這種數值優化問題往往又是資料探勘的核心問題,量子計算機的進步一定會極大的推動人工智慧機器學習領域的進步。

D-wave公司的這篇文件深入淺出的介紹了量子計算機的核心原理,介紹了量子計算機原理的優勢。趕快學習一下最有潛力引領下一輪科技浪潮的技術吧。

 

內容提要

 

·  1.1 - Conventional computing 傳統的計算機原理

·  1.2 - A new kind of computing 一種新的計算機原理

·  1.3 - The light switch game 電燈開關遊戲

·  1.4 - How does quantum mechanics help? 量子理論是如何發揮作用的?

·  2.1 - It's a math expression - who cares?

這個代數表示式有什麼用?

·  2.2 - The energy program 能量程式

·  2.3 - Quantum computers can LEARN 量子計算機的自我學習

·  2.4 - A computer that programs itself 一個可以自己程式設計的計算機

·  2.5 - Uncertainty is a feature 不確定性是量子計算的特點

 


SECTION 1第一部分

1.1 - Conventional computing傳統計算機原理

要理解量子計算機,先了解傳統計算機是很有必要的。現在各種型別的計算機的核心都是CPU中央處理器,它可以完成簡單的數學運算,CPU效能主要依據是晶片處理代數運算的速度。執行簡單運算的速度快它們就可以完成更復雜的高層任務。這部分運算功能可以簡單描述為圖1中的過程。

 

 

圖1:傳統計算機中的資料流

雖然傳統計算機能非常好的解決很多問題,但是仍有不少任務是傳統計算機難以處理的。比如:影象識別,自然語言的理解等,還有其他一些需要機器學習的特定任務。即便過去數十年人們在這些領域投入了巨大的努力,我們的進度仍然緩慢,一些基本的解決方法仍然需要巨型機耗費大量的電能和空間來執行。

我們提出了這樣一個問題:有沒有另一種從根本上不同的計算機系統?為了更好的解決這些棘手的問題,從完全不同的原理來實現計算機,,應該如何構造這種全新的計算機呢?

1.2 –一種新的計算機

量子計算機完全不同於傳統計算機。傳統計算機將資料儲存為多個位上的0和1,量子計算機改變了這一切。用來理解資料位內容的物理原理是完全不同的,為了製造這樣的計算系統,我們需要不同的處理器設計方式、架構。最終在這種系統上的變成方法也是不同的。我們首先會講解“量子位”qubit是如何取代傳統計算機的“資料位”bits的。

1.3 – 電燈開關遊戲

要開始學習量子計算機先要理解傳統數字計算機,我們用電燈開關遊戲來演示這個原理。

電燈開關遊戲要尋找到一套最佳的開關組合,這裡是說明這個問題的圖片:

 

圖2:電燈開關遊戲

讓我們想象每個電燈開關都有一個對應的係數,這個係數是設定好的你不能改變的。我們稱之為‘偏差值’。你需要選擇每個開關是開(對應+1值)還是關(對應-1值)。然後我們用偏差值乘上你選擇的狀態值,這樣得到一個值。遊戲的目的是取得最低的這個值,為了公式表達我們叫偏差值hi ,狀態值 Si.

 

圖3:如何求電燈遊戲的最終得分

所以根據我們為每個開關選的狀態,我們會得到不同的得分,你可以嘗試解一下這個題目。你很容易就會發現其中的規律,並找到答案:

 

圖4:一組遊戲的解

我們發現把有正偏差值的燈關上,把負偏差值的燈關上就會得到最小的得分。這是個很簡單的規則,你可以將之應用到更多開關的題目上上以得到最小的得分。

好,我們讓問題更復雜一點。現在想象一下開關變成結對出現的,每個結對上都有自己的偏差值Ji,這個偏差值會乘上這個連線兩端開關的狀態值並計入得分。

得分的計算公式在擴充套件後變成了這樣:

 

圖5:增加了連線偏差值的新計算公式

現在判斷是否應該開啟開關就變得非常難以判斷了,因為相連的開關狀態會影響到連線上得分的大小。即使是隻有兩個開關的情況你也很難根據‘設定狀態為偏差值符號相反’來取得最低的得分(你可以試一下)。當開關數量變多時,你將會發現要取得最低的得分是非常困難的了。

 

圖:6加入連線值的開關遊戲產生了一個會‘互動’的開關網路

1.4 –量子計算會提供什麼樣的幫助?

只取出其中一組連線的開關,你可以嘗試各種開關組合,只有四種可能: [ON ON], [ON OFF], [OFF ON] 或 [OFF OFF]。但是當你加入更多的開關時,可能的組合數會成指數的增長:(switches開關數possible answers可能的組合數)

 

圖.7 開關遊戲的指數性增長

你已經看到這個遊戲為什麼不再有趣了。事實上對於最強大的計算機也是難於解決的了。在記憶體中儲存所有的組合可能,並且在傳統的處理器中處理這些組合的積分結果,都會花費大量時間。當有500個開關時,即便宇宙毀滅時也計算不出所有的組合。

量子原理可以幫助我們解決這類問題。量子計算機的基礎是你可以用量子的疊加狀態儲存相當於若干傳統資料位bits的資訊。你可以把這個想象成量子位qubit並沒有確定的開關狀態,一些人將之稱為同時處於開關狀態。你可以將這個比喻應用到電燈開關遊戲上,就是量子位對應的開關可以同時處在開關的兩個狀態上:

 

圖8:一個量子位對應的電燈開關,量子可以儲存的疊加狀態,是還沒有決定開關的狀態,也可以想象成同時既是開又是關的狀態。

現在我們考慮一下之前的一堆開關,但是儲存在量子計算機的記憶體當中(請注意開關的偏差值和積分還沒有計算)。

 

圖9:一個由連線的量子疊加態組成的開關網路,得分最低的組合肯定被包括在其中了

因為所有的開關都同時處在兩種狀態,所以我們知道得分最低的正確的開關組合肯定已經被包括在這種狀態中了,只是我們不知道具體的組合是什麼。但是不要急,量子原理將會幫我們找到答案。D-wave公司的量子計算機允許你使用這樣的‘量子態表達’,然後提取出其中得分最低的開關組合。下面我們將會介紹那部分的工作原理:

 

圖10:計算機從量子疊加態開始得到傳統的確定資料位的過程,在這個過程中我們就找到了問題的答案。

你先將系統置為從之前描述的量子疊加態,然後慢慢地讓量子計算機關閉量子的疊加態效應,同時將條件中的偏差值賦給相應的開關和開關之間的連線(之前的H,J值)。當你進行這個操作時,量子開關脫離量子的疊加態並進入傳統的開關狀態,不是開就是關。最終量子計算機中的量子機制幫助這些電燈開關最後找出得分最低的組合。即便有N個開關和對應產生的2的N次方個開關組合,量子計算機可以幫我們找到得分最低的那一個組合,贏得這個開關的遊戲。量子計算機可以一步找到所有組合的遊戲積分表示式中最低的那個組合,遊戲積分的公式如下:

E(s)=∑ihisi+Jijsisj

這對於傳統計算機是幾乎不可能的。

SECTION 2第二部分

2.1 - 計算出這個公式有什麼意義?

D-wave 公司製造量子計算機並不是為了解決這個自討苦吃的電燈開關遊戲。這個遊戲代表的尋找到一組最優的二進位制變數組合的演算法,是解決許多技術應用的核心問題。下面的圖片展示了一些場景。很多科學問題的關鍵就是這樣的優化問題(找到某個對應著現實問題的數學等式的最優解)。

 

圖11:一些典型的尋找最優的解的應用場景,它們的核心都是尋找到最佳的“電燈開關組合”,量子計算機可以非常有效的解決這些問題。

2.2 - The energy program“能量程式”

為了理解這些問題是如何轉化成電燈開關遊戲的形式,讓我們再看一下量子計算機是如何程式設計的,我們回憶一下圖1,一個確定的資料位bits組合和另一個數據位bits組合在運算處理其中進行運算,而在量子計算機中,我們用一個狀態不確定的量子位組合作為輸入,所以處理器中的運算方法也是截然不同的。圖12中一組狀態不確定的量子位qubit被初始化成不確定的量子疊加態,而這次使用一個能量程式而不是傳統的邏輯程式來對它們進行計算,量子位qubit在運算的開始是不確定的,而在運算結束的時候它們都會停在-1或+1的狀態。什麼是“能量程式”呢?能量程式對應的就是電燈遊戲裡的偏差值也就是之前公式中的H和J。 在開關遊戲中,我們說H和J是提供給你的條件。而現在我們瞭解到H和J實際上就是量子計算實際要解決的問題的條件。

 

圖12:量子計算機的基本操作就是提供能量程式(一系列的h和J值),然後讓量子計算機確定所有量子位對應的最終確定值(+1或-1)。

編制包含一系列H和J值的能量程式——也就是將你關心的實際問題轉換成量子計算機能解決的問題——是非常困難和消耗時間的。這個過程類似於使用機器碼來給你的電腦程式設計!幸運的是,有一些更好的使用量子編譯器的開發方法。這個過程和示例會在QC Software Tutorial 做詳細介紹,上手教程在這個連結裡 applications programming 。

2.3 -量子計算機的自我學習

用經驗資料訓練計算機解決實際問題的過程被稱為機器學習。機器學習是人工智慧的一個分支領域。大多數資料處理程式碼都是相對靜態的-用同樣程式碼不斷處理新的資料,每次都會產生相同的錯誤。通過機器學習我們可以設計出能夠修改本身程式碼的演算法,從而處理之前從未出現過的資料。

那些需要機器學習和在不確定情況下做出決策的任務非常適合在D-wave的量子計算機上執行。舉個例子,想象需要一臺計算機從幾張圖片中識別出相似的物體。這個任務對於傳統的計算機是非常困難的,因為傳統計算方法是依賴於嚴密的邏輯判斷的。如果一旦出現一張新的圖片,則很難從中識別出新的資訊,比如‘這個圖看起來像一個蘋果’。D-wave的量子處理器就是設計用來處理這種需要高階判斷決策的應用。

我們是如何用量子計算機來進行機器學習的呢?舉個例子,如果我們想讓系統識別一個物體?為這個任務寫一個能量程式是非常困難的,即使是使用了量子編譯器,我們也不知道如何提取識別物件的關鍵資訊。幸運的是,有一種繞過這個問題的辦法,量子計算機有一種自我調節能量程式來適應輸入資料的模式。這個模式允許機器在從未處理過類似情況時也能對資料進行準確的預測。下面我們就來介紹一下這方面的原理,具體的例子可以從這裡Tutorials 找到。

2.4 –一個自我程式設計的電腦

為了讓系統能夠自己調節能量程式,你需要展示大量有代表意義的資料給系統。如圖13所示。任務需要計算機判斷各種水果圖片的不同之處。 為了做到這樣,我們向系統展示不同水果的圖片(或者說這些圖片代表的資料)蘋果,樹梅,和甜瓜。我們同時也告訴系統每個圖片對應的正確答案,這相當於電燈開關遊戲中給定了開關狀態。當處理分類好的圖片時,系統必須找到一個能量程式(圖中一開始打了問號的部分),這個能量程式能夠最大的滿足每次都得到正確的分類結果。如果能量程式會產生很多錯誤判斷,就說明這個能量程式還是需要修改。

 

圖13:訓練量子晶片找到正確的能量程式的過程
系統會一直訓練能量程式,直到它能夠正確處理所有經驗資料,這步常稱為訓練或者學習階段。

一開始系統會隨機的選擇一個能量程式 (一組H和J的偏差值)。這肯定會造成很多分類錯誤,但是沒有關係,在我們不斷輸入訓練資料同時,系統會不斷修改自己的能量程式以讓系統分類正確率上升。一但準確率難以提升了,我們就可以保持住最後的能量程式,並將它作為我們最終的模型去識別區分新的未知資料(圖14)。

在機器學習領域,因為我們想計算機輸入了大量正確已知經驗資料,所以這套方法被稱為有監督機器學習演算法。而對於其他的無監督機器學習演算法,下面的教程會做進一步深入的解釋。

 

圖14:在得到一個好的能量程式後,演算法就可以對新的圖片進行分類。這通常叫做資料測試階段。

2.5 -不確定性是量子計算的特點

量子計算機另一個顯著特點就是基於概率的輸出結果,計算機會輸出多個結果。一些是正確的,而另一些不是。這看起來並不是一件好事,一臺計算機在你求解時返回多個答案這看上去像是個Bug!但是在量子計算機中返回多個答案,給我們提供了關於答案可信度的重要資訊。使用上面水果識別的例子,如果我們向計算機提供同一張圖片100次,然後計算機返回蘋果這個答案100次,我們就可以非常確信內容就是蘋果,但是如果計算機返回50次蘋果和50次樹梅,這就意味著計算機對判斷的結果並不確定,而如果你把樹梅和蘋果放在同一個圖片中輸入那個答案就是非常正確的了!這種不確定性對於設計一個能夠識別複雜情況並作出判斷的計算方法非常重要。