當量子計算遇上神經網路與深度學習,QNN初探( Quantum Neural Networks),David 9的量子計算系列#1
曾經的存在主義與結構主義的爭論,在量子世界中似乎用概率和大量抽樣完成了和解 — David 9
上世紀60年代哲學界有一場關於 存在主義 與 結構主義 的爭論: 存在主義 認為一個人的發展是由“ 自由意識 ”和慾望主導的; 結構主義 認為佔主導的其實是社會中的經濟、政治、倫理、宗教等 結構性因素 ,人只是巨大結構中的一部分。
究竟是什麼塑造了一個人也許難以確定。而對於 量子世界 ,一個 qubit(量子位元)的狀態 ,不僅受到量子系統的磁場影響,qubit本身也有自身狀態的 變化概率和擾動 。我們一會兒可以看到,量子系統的輸出,即那個qubit的 最終觀測狀態 ,是用概率和 大量抽樣 判定的:

在細講 QNN前(量子神經網路其實是一個量子系統) ,David 9 有必要介紹一下 量子計算 本身的一些基礎知識 。
首先,量子計算與傳統計算機的不同,可從 qubit (量子位元)說起,我們知道與電子計算機非 “0” 即 “1”相比 ,qubit的狀態可能 同時介於“0”和“1”之間 :

即所謂的“ 薛定諤的貓 ”的 疊加態(superposition):
\(\frac{1} {\sqrt{2}}\)(|0>+|1>)(在量子物理中符號 |x> 表示狀態x)
你們可能會問David,為什麼狀態係數是 1/\(\sqrt{2}\) ? 這是量子物理中的一個約定(規範化),即 平方和等於1 :
α^2+β^2=1
其中 α 和 β 就是狀態的 係數 ,是不是讓你聯想到圓形幾何 ?
是的,在量子物理中可以把qubit想象成粒子球體(疊加或非疊加態):

三維世界中qubit的自旋狀態非常靈活,可以 上自旋(|0>) ,可以 下自旋(|1>) ,可以像地球一樣 斜著自旋 :

當然也可以 疊加態自旋(\(\frac{1} {\sqrt{2}}\)(|0>+|1>) )
有了這麼多種 qubit 狀態,從根本上導致量子計算的資訊量級比傳統計算機大的多。
傳統的 2個bit位 的計算機只能編碼4種狀態: 00 , 01 , 10 , 11 ,因為它只有2個位的自由度,所以 n個bit位能編碼的資訊只有2^n (即\(2^n\))
而如果一個量子計算機有 2個qubit ,傳統計算機的 00, 01, 10, 11這些狀態就可以同時出現 , 這4個狀態本身變為4個自由度 :

這就 導致它能編碼2^4=16種狀態 ,即我們需要同時確定 00, 01, 10, 11 四個狀態各自的出現概率,才能得到這個系統狀態的聯合概率。所以 n個qubit能編碼的資訊有2^(2^n) (即\(2^{2^n}\))
這樣的計算量級,使得 2018年google的 72個 qubit量子計算機 就可以稱霸業界。感興趣可以計算一下2^(2^72) (即 \(2^{2^{72}}\) )是一個多麼龐大的數字。但是要保持穩定的量子系統,需要苛刻環境和極低的溫度(-273攝氏度非常接近絕對零度):

有了以上這些基本知識,跟著David 9再在來看 Google的這篇QNN設計的論文 ,就能更好理解量子計算是如何與 深度學習(神經網路 )結合的了。
首先看基本QNN架構:

輸入輸出和一般的神經網路(深度學習)相似。唯一區別是QNN的 輸入|ψ, 1>是n+1位qubit的狀態 (這個狀態是 事先根據輸入樣本編碼準備 的,其中n是樣本,1是輸出qubit的佔位)。而輸出是經過一系列 U(θ) 變換最終得到的一個qubit在三維中 Y軸 的觀察 Yn+1 :

為了容錯並得到可靠輸出, Yn+1 需要經過 多次觀測得到0或1的輸出“label” (當然,一個qubit狀態很少正好上自旋,而是一個求約的概率估計)
接下來看 U(θ) 和 U L (θ L ) 這些計算操作是什麼?其中 θ 即傳統神經網路中的待訓練的引數(神經網路中的 權重 ) 。而對於 U (即上圖中的一個個 小方塊 ),和傳統計算機的計算門( “與或” 門, “或” 門 “否” 門)類似,量子計算中,常用的是線性操作的 unitary歸一門(unitary operations) 。可以把他想象成一個線性矩陣,它有一個很好的性質: 通過unitary轉換之後,兩組qubit狀態的內積值不變 。
即如果兩組狀態的內積用 <Φ|Ψ> 表示,即:

那麼:

即經過 U 轉換後,內積值不變。(其中 U+ 號表示 U 矩陣的 共軛矩陣 )
內積值不變不僅可以幫助我們之前提到的歸一化約定: α^2+β^2=1 。而且當我們在QNN中對於 θ 求梯度更新時,梯度不會太大, 天然地防止了傳統神經網路中的“梯度爆炸” 問題。事實上,QNN的loss函式和一般的神經網路類似:

其中z是樣本編碼, l(z) 是真實樣本的label,

是預測並觀測的樣本label。
這樣, QNN通過不斷對最後一個qubit的 Yn+1 的觀測,與真實樣本label比較,得到一個修正值,修正神經網路中的 θ 引數,並且根據 θ 引數調整每個unitary歸一門操作 ,不斷進行迭代並更新每個unitary歸一門 ,直到QNN每次預測的 Yn+1 與真實樣本的label一致。
另外,傳統深度學習的成功更多地是 歸功於引入非線性的啟用函式(Tanh, ReLu, softmax) , 那麼量子神經網路 QNN 如何引入 非線性 的呢 ?其實答案在架構圖中就可以找到:

如上圖,每一層 U 門(unitary變換)的輸入,都是由上一層 U 門通過不同連線組合連線的,這裡的不同組合就是 非線性 的(雖然 U 門本身是線性的)。
最後,值得注意的是,對於整個量子神經網路的容錯文章也做了探討和考慮,在U門操作中加入了奇偶校驗和 reed-muller編碼 (一種比海明碼高效的校驗避編碼)。具體David就不展開了。
對於文章不合理以及解釋不當的地方希望大家積極指出。願在新的一年Dvaid可以和大家繼續探索量子計算世界,特別是結合機器學習與深度學習的領域,以及一些實際的量子計算專案與程式碼。
新年快樂 !!!
參考文獻:
- Classification with Quantum Neural Networks on Near Term Processors
- https://www.quantiki.org/wiki/basic-concepts-quantum-computation
- https://github.com/adamisntdead/QuSimPy
- https://ai.googleblog.com/search/label/Quantum%20AI
- https://github.com/quantumlib/Cirq
- intriganod的量子計算youtube教學視訊
- How Does a Quantum Computer Work? youtube教學視訊
- 量子的unitary變換講解視訊
- https://www.slideshare.net/ProjectStudent/error-checking-and-correction-parity-bit-majority-voting-check-digit
- https://baike.baidu.com/item/reed-muller/407684
- https://en.wikipedia.org/wiki/Pauli_matrices
本文采用 署名 – 非商業性使用 – 禁止演繹 3.0 中國大陸許可協議 進行許可。著作權屬於“David 9的部落格”原創,如需轉載,請聯絡微信: david9ml,或郵箱:[email protected]
或直接掃二維碼:
