"量子優越性"之后,谷歌強勢開源量子版TensorFlow
繼2019年10月谷歌在《Nature》上發布關于驗證“量子優越性”論文之后,3月9日,谷歌再次就“量子”做出新的發布。
這次發布的是開源“量子版 TensorFlow”:TensorFlow Quantum(TFQ)。

簡單來說,類似于TensorFlow ,TFQ 作為一個開源庫,將直接降低量子機器學習的門檻,讓我們能夠快速構建量子機器學習模型。
TensorFlow Quantum專注于處理量子數據,及構建量子-經典混合模型(hybrid quantum-classical models)。它在 Cirq 中集成了設計的量子計算算法和邏輯,并提供與現有 TensorFlow API 兼容的量子計算原語,以及高性能的量子電路模擬器。
注:Cirq 是 Google 專為 NISQ 算法打造的框架,允許開發者為特定的量子處理器編寫量子算法。
1、量子機器學習
在介紹TFQ之前,我們首先應當了解什么是「量子機器學習」;而要想理解量子機器學習,就必須先要理解兩個概念:量子數據和量子-經典混合模型。
在我們日常生活的理解中,數據(以二值數據為例)似乎總是“要么是(1),要么非( 0 )”。然而當我們細想,就會發現我們的日常生活也并非完全的“是”“非”分明,往往則是“是”中有“非”,“非”中有“是”,“是”或“非”只是事態的兩個極端。量子的思維正是這樣。
在量子力學中常用“態”(這是一個希爾伯特空間的向量)來描述一個系統。例如經典的信息輸入序列 01,用量子力學的語言描述即 |01>。經典的數據中態與態(向量與向量)之間只能是正交的,例如 |01> 與 |00> 不可能同時出現,這本質上就是或“是”或“非”的觀點。顯然對于這些正交態的操作也必須是正交的變換。

然而在量子數據中,擴展了經典數據原有的限制。例如二比特的量子數據,其態表示如下:

也即它同時可能是四種經典數據中的任何一種(取決于前面的系數,你可以簡單理解為四個相互正交的向量之間的疊加),而不是非此即彼。
當我們用這種量子數據取代經典數據輸入到網絡中時,會發生什么呢?如下圖所示:
谷歌強勢開源量子版TensorFlow">
Source:知乎[4]
在經典的感知機中,我們輸入的是一個 0 、1 組成的向量,但如果是量子感知機的話,它輸入的就是許多個 |φ> = c1 |0> +c2 | 1> 組成的向量,而這個向量的每個元素又都可能既是 0 又是 1 。
然而到現實中,由于目前的量子處理器仍然存在盡管很小但仍不容忽視的噪聲,這使得幾乎不可能單獨用量子處理器來學習量子數據。
于是只能退而求其次,谷歌的NISQ處理器需要與傳統的處理器進行協同才能有效地抑制噪聲的影響。這種硬件的協同也同樣造成算法上的協同,因此便有了量子-經典混合模型,其中模型的量子部分在量子處理器上進行處理,而經典部分則在經典處理器上進行處理。

谷歌研究人員表示,在可預期的將來,量子計算機最有用的功能可能便是一個硬件加速器,也即它并不是作為一個單獨的設備存在,而是作為CPU、GPU等傳統處理器的加速輔助。因此提供設計量子-經典混合模型的工具就非常有必要。
值得一提的是,和機器學習一樣,量子機器學習也經歷了兩代的發展。對應于第一代機器學習(以支持向量機、k-平均聚類等為代表),第一代量子機器學習主要是一些量子加速線性代數方法。隨著以深度學習為代表的第二代機器學習的發展,量子機器學習也因為量子計算機算力的提升步入了第二代,其特點便是基于啟發方法(和深度學習類似)。
2、TensorFlow Quantum
簡單來說,TensorFlow Quantum 是一個基于TensorFlow的機器學習庫,所面向的是量子-經典混合機器學習模型的設計。
更為直白一點,相關量子算法的研究可以調用 TFQ 內部的計算框架,然后用 Python 編程完成運算。另外,可以使用標準Keras功能進行訓練。

在具體設計方面,TFQ實現了將TensorFlow與量子計算硬件集成所需的組件,并創建了兩個數據類型原語。這兩個原語分別是:
- 量子電路:表示TensorFlow中 Cirq 定義的量子電路,創建不同大小的電路批次,類似于不同的實值數據點的批次;
- Pauli sum:表示Cirq中定義的Pauli運算符的張量積的線性組合。像電路一樣,創建一批大小不一的運算符。

上圖為TFQ 的軟件棧,顯示了它與TensorFlow、Cirq和計算硬件的交互。棧的頂部是要處理的數據。經典數據由TensorFlow本地處理;TFQ增加了處理量子數據的能力,包括量子電路和量子運算符。
棧的下一層是TensorFlow中的Keras API。由于TFQ的一個核心原則是與TensorFlow內核進行集成,特別是與Keras模型和優化器進行集成,所以這個級別覆蓋了整個棧的寬度。
在Keras模型抽象的下面是量子層和微分器,當連接到經典的張量流層時,它們能夠實現量子-經典的混合自動微分。
在這些層和微分器之下,有TF Ops,它實例化了數據流圖;TFQ Ops 可以控制量子電路的執行。這些電路可以通過調用qsim或Cirq從而以仿真模式運行,或者最終在QPU硬件上執行。
根據谷歌的白皮書[2],當前已經可以使用TFQ包括用于量子分類,量子控制和量子近似優化的監督學習。此外,高級應用還可用TFQ來解決高級量子學習任務,包括元學習、哈密頓學習和熱采樣。
AI科技評論簡單介紹幾個應用:
量子-經典卷積神經網絡混合分類器。在量子數據的情況下,隱藏的經典參數可以嵌入到量子系統的非局域子系統或子空間中,然后研究員必須執行一些解纏的量子變換,以便從非局部的子空間中提取信息。
谷歌強勢開源量子版TensorFlow">
圖注:用于檢測團簇狀態CNN的結構
經典的神經網絡往往具有平移不變性,而具有平移對稱性的量子數據有很多種。這樣的量子數據往往是簇態(cluster states)。量子-經典卷積神經網絡混合分類器可以解決簇態時檢測錯誤的問題,具體做法是將其看做有監督的分類任務,不過訓練所使用的數據將由各種正確和不正確準備的簇態組成,每個都與它們的標簽配對。
量子控制中的混合機器學習。為了充分利用神經網絡的優化能力的同時,而不用考慮計算開銷,有必要對各種神經網絡表示和不同類型的量子控制動力學之間的聯系進行更深的理解。
谷歌強勢開源量子版TensorFlow">
圖注:用于學習量子控制分解的混合量子-經典神經網絡模型的體系結構
為了達到這個目標,需要TFQ集成幾個功能:
- 混合量子-經典網絡模型;
- 批量量子電路模擬器;
- 基于量子期望的反向傳播;
- 基于梯度和基于非梯度的快速經典優化器。
量子近似優化算法(簡稱QAOA)。QAOA最初是用來求解最大割問題, 目前的QAOA框架已尋找高階哈密頓量和連續變量哈密頓量等類似問題。
3、怎么用?
TFQ可以讓研究人員在單個計算圖中將量子數據集、量子模型和經典控制參數構造為張量。當然與經典機器學習一樣,量子機器學習的關鍵挑戰也是對“噪音數據”進行分類。
谷歌強勢開源量子版TensorFlow">
圖注:TFQ計算步驟的抽象概述。
但是,要構建和訓練這樣的模型,研究人員必須執行以下操作:
- 準備量子數據集,每個量子數據張量都指定為用Cirq編寫的量子電路,該電路可實時生成量子數據。
- 評估量子神經網絡模型,量子模型實質上是對輸入的量子數據進行解糾纏,從而留下以經典相關性編碼的隱藏信息,從而使其可用于本地測量( local measurements )和經典的后處理( classical post-processing)。
- 樣本或期望值。量子態的測量從經典隨機變量中以樣本形式提取信息。來自隨機變量的值的分布通常取決于量子態本身以及所測得的可觀測值。由于許多變分算法都取決于測量的平均值,因此TFQ提供了對涉及步驟(1)和(2)的多個運行求期望值的方法。
- 評估經典神經網絡模型。提取經典信息后,其格式適用于進一步的經典后處理,由于提取的信息可能仍會以測量的期望之間的經典相關性進行編碼,因此經典深度神經網絡能應用于提取此類相關性。
- 評估損失函數 。根據經典后處理的結果,評估損失函數。
- 評估梯度和更新參數。評估損失函數后,應沿預期可降低損失的方向更新自由參數這通常是通過梯度下降執行的。
從代碼方面來看。基礎的安裝與調用與Python其他深度學習庫沒有什么區別。
例如安裝:
- pip install -q tensorflow-quantum
導入相關模塊:
- import tensorflow as tf
- import tensorflow_quantum as tfq
- import cirq
- import sympy
- import numpy as np
- # visualization tools
- %matplotlib inline
- import matplotlib.pyplot as plt
- from cirq.contrib.svg import SVGCircuit

更多代碼層面的教程請移步下面的鏈接,谷歌由淺入深專門介紹了如何運用TFQ。
https://www.tensorflow.org/quantum/tutorials/hello_many_worlds
在具體的算法層面,谷歌也在白皮書中放出了代碼介紹,例如在量子-經典卷積神經網絡混合分類器算法中的部分代碼介紹如下:

4、So What?
Reddit 社區很快便有對谷歌開源TFQ的回應。有網友表示:

是的,量子機器學習平臺的開源,與我們何干?
然而正如物理學家理查德·費曼所說,“自然世界不是經典的,如果你想模擬自然世界,最好使用一套量子的機制。”
在過去幾年,盡管以深度學習為代表的機器學習方法在許多問題上產生了深遠的影響。然而從長遠來看,正如牛頓經典力學并不能精確描述自然世界一樣,我們若想模擬自然世界,經典機器學習方法會顯得力有未逮,而量子機器學習方法則將成為必然。
如今,諸多科技巨頭相繼布局量子計算,由此也可見,在未來的10~20年內,量子計算以及量子機器學習必將成為社會發展的重要推動力。
現在入手 TFQ,或恰逢其時。
展望未來,我們如何推動發展?量子計算或許是我們工具箱里可以使用的工具。
5~10年內,我們會面對前所未有的挑戰,量子計算會破解我們今天所有的加密,但是我們可以想辦法繞過去。任何不斷發展的技術都會面臨一些挑戰,但人工智能和量子技術的結合將會幫助我們解決一些我們現在認為的最大的問題。