文 /大眾汽車(chē)公司和萊頓大學(xué)的 Andrea Skolik
3 月初,Google 與滑鐵盧大學(xué)和大眾汽車(chē)公司共同發(fā)布了 TensorFlow Quantum(TFQ)。TensorFlow Quantum 是一個(gè)量子機(jī)器學(xué)習(xí) (QML) 軟件框架,允許研究員聯(lián)合使用 Cirq 和 TensorFlow 的功能。Cirq 和 TFQ 都用于模擬噪聲中等規(guī)模量子 (NISQ) 的設(shè)備。這些設(shè)備當(dāng)前仍處于實(shí)驗(yàn)階段,因此未經(jīng)糾錯(cuò),還會(huì)受到噪聲輸出的影響。
本文介紹的訓(xùn)練策略可以解決量子神經(jīng)網(wǎng)絡(luò) (QNN) 中的消失梯度問(wèn)題,并更好地利用 NISQ 設(shè)備提供的資源。
量子神經(jīng)網(wǎng)絡(luò)
訓(xùn)練 QNN 與訓(xùn)練經(jīng)典神經(jīng)網(wǎng)絡(luò)沒(méi)有太大不同,區(qū)別僅在于優(yōu)化量子電路的參數(shù)而不是優(yōu)化網(wǎng)絡(luò)權(quán)重。量子電路的外形如下所示:
用于四個(gè)量子位分類(lèi)任務(wù)的簡(jiǎn)化 QNN
電路從左到右讀取,每條水平線對(duì)應(yīng)量子計(jì)算機(jī)寄存器中的一個(gè)量子位,每個(gè)量子位都初始化為零狀態(tài)。方框表示對(duì)按順序執(zhí)行的量子位的參數(shù)化運(yùn)算(或“門(mén)”)。在這種情況下,我們有三種不同類(lèi)型的運(yùn)算,X、Y 和 Z。垂直線表示兩個(gè)量子邏輯門(mén),可用于在 QNN 中產(chǎn)生糾纏 - 一種使量子計(jì)算機(jī)勝過(guò)經(jīng)典計(jì)算機(jī)的資源。我們?cè)诿總€(gè)量子位上將一層表示為一個(gè)運(yùn)算,然后將一系列的門(mén)連接成對(duì)的量子位,產(chǎn)生糾纏。
上圖為用于學(xué)習(xí) MNIST 數(shù)字分類(lèi)的簡(jiǎn)化 QNN。
首先,將數(shù)據(jù)集編碼為量子態(tài)。使用數(shù)據(jù)編碼層來(lái)完成這一操作,上圖中標(biāo)記為橙色。在這種情況下,我們將輸入數(shù)據(jù)轉(zhuǎn)換為向量,并將向量值用作數(shù)據(jù)編碼層運(yùn)算的參數(shù) d 。基于此輸入執(zhí)行電路中藍(lán)色標(biāo)記的部分,這一部分代表 QNN 的可訓(xùn)練門(mén),用 p表示。
量子電路的最后一個(gè)運(yùn)算是測(cè)量。計(jì)算期間,量子設(shè)備對(duì)經(jīng)典位串的疊加執(zhí)行運(yùn)算。當(dāng)我們?cè)陔娐飞蠄?zhí)行讀出時(shí),疊加狀態(tài)坍縮為一個(gè)經(jīng)典位串,這就是最后的計(jì)算輸出。所謂的量子態(tài)坍縮是概率性的,要獲得確定性結(jié)果,我們需要對(duì)多個(gè)測(cè)量結(jié)果取平均值。
上圖中,綠色標(biāo)記的部分是第三個(gè)量子位上的測(cè)量,這些測(cè)量結(jié)果用于預(yù)測(cè) MNIST 樣本的標(biāo)簽。將其與真實(shí)數(shù)據(jù)標(biāo)簽對(duì)比,并像經(jīng)典神經(jīng)網(wǎng)絡(luò)一樣計(jì)算損失函數(shù)的梯度。由于參數(shù)優(yōu)化是經(jīng)典計(jì)算機(jī)使用 Adam 等優(yōu)化器處理,因此這些類(lèi)型的 QNN 稱(chēng)為“混合量子經(jīng)典算法”。
消失的梯度,又稱(chēng)貧瘠高原
事實(shí)證明,QNN 與經(jīng)典神經(jīng)網(wǎng)絡(luò)一樣,也存在消失梯度的問(wèn)題。由于 QNN 中梯度消失的原因與經(jīng)典神經(jīng)網(wǎng)絡(luò)有著本質(zhì)的不同,因此采用了一個(gè)新術(shù)語(yǔ):貧瘠高原 (Barren Plateaus)。本文不探討這一重要現(xiàn)象的所有細(xì)節(jié),建議感興趣的讀者閱讀首次介紹 QNN 訓(xùn)練景觀 (Training Landscapes) 中貧瘠高原的文章。
簡(jiǎn)而言之,當(dāng)量子電路被隨機(jī)初始化,就會(huì)出現(xiàn)貧瘠高原 - 在上述電路中,這意味著隨機(jī)選擇運(yùn)算及其參數(shù)。這是訓(xùn)練參數(shù)化量子電路的一個(gè)重點(diǎn)問(wèn)題,并且會(huì)隨著量子位數(shù)量和電路中層數(shù)的增加而越發(fā)嚴(yán)重,如下圖所示。
梯度方差根據(jù)隨機(jī)電路中量子位和層數(shù)的變化而衰減
對(duì)于下面介紹的算法,關(guān)鍵在于電路中添加的層越多,梯度的方差就越小。另一方面,類(lèi)似于經(jīng)典神經(jīng)網(wǎng)絡(luò),QNN 的表示能力也隨著深度的增加而增加。這里的問(wèn)題是,隨著電路尺寸的增加,優(yōu)化景觀在很多位置都會(huì)趨于平坦,以至于難以找到局部最小值。
注意,對(duì)于 QNN,輸出通過(guò)多次測(cè)量的平均值進(jìn)行估算。想要估算的量越小,獲得準(zhǔn)確結(jié)果所需的測(cè)量就越多。如果這些量與測(cè)量不確定性或硬件噪聲造成的影響相比要小得多,這些量就無(wú)法可靠確定,電路優(yōu)化基本上會(huì)變成隨機(jī)游走。
為了成功訓(xùn)練 QNN,必須避免參數(shù)的隨機(jī)初始化,同時(shí)也要阻止 QNN 在訓(xùn)練過(guò)程中由于梯度變小而隨機(jī)化,例如在接近局部最小值的時(shí)候。為此,我們可以限制 QNN 的架構(gòu)(例如,通過(guò)選擇某些門(mén)配置,這需要根據(jù)當(dāng)前任務(wù)調(diào)整架構(gòu)),或控制參數(shù)的更新,使其不會(huì)變得隨機(jī)。
分層學(xué)習(xí)
在我們與 Volkswagen Data:Lab(Andrea Skolik、Patrick van der Smagt、Martin Leib)和 Google AI Quantum(Jarrod R. McClean、Masoud Mohseni)網(wǎng)絡(luò)聯(lián)合發(fā)表的論文 Layerwise learning for quantum neural networks 中,我們介紹了一種避免初始化在高原上并避免網(wǎng)絡(luò)在訓(xùn)練過(guò)程中在高原上結(jié)束的方法。接下來(lái)是一個(gè)關(guān)于 MNIST 數(shù)字二進(jìn)制分類(lèi)學(xué)習(xí)任務(wù)的分層學(xué)習(xí) (Layerwise Learning) 示例。首先,我們需要定義待堆疊的層的結(jié)構(gòu)。當(dāng)前的學(xué)習(xí)任務(wù)未經(jīng)任何假設(shè),因此各層選擇的布局與上圖相同:一層由每個(gè)初始化為零的量子位上的隨機(jī)門(mén)和兩個(gè)量子邏輯門(mén)組成,兩個(gè)量子邏輯門(mén)連接量子位以實(shí)現(xiàn)糾纏。
我們指定了若干個(gè)起始層,在本例中只有一個(gè),將在訓(xùn)練過(guò)程中始終保持活躍狀態(tài),并指定訓(xùn)練每組層的周期數(shù)。另外兩個(gè)超參數(shù)是每個(gè)步驟中添加的新層數(shù),以及一次被最大訓(xùn)練的層數(shù)。在這里選擇一種配置,其中每個(gè)步驟中添加兩個(gè)層,并凍結(jié)除起始層之外的所有先前層的參數(shù),以在每個(gè)步驟中僅訓(xùn)練三個(gè)層。將每組層訓(xùn)練 10 個(gè)周期,然后重復(fù)此過(guò)程十次,直到電路總共由 21 層組成。這里的事實(shí)依據(jù)是淺層電路會(huì)比深層電路產(chǎn)生更大梯度,由此避免了高原上的初始化。
這提供了一個(gè)優(yōu)化過(guò)程的良好起點(diǎn),可以繼續(xù)訓(xùn)練更大的連續(xù)層集。對(duì)另一個(gè)超參數(shù),我們定義了算法第二階段一起訓(xùn)練的層的百分比。在此將電路分成兩半,交替訓(xùn)練兩個(gè)部分,其中不活動(dòng)部分的參數(shù)始終凍結(jié)。一個(gè)所有分區(qū)都訓(xùn)練過(guò)一次的訓(xùn)練序列稱(chēng)為掃描,對(duì)這個(gè)電路執(zhí)行掃描,直到損失收斂。當(dāng)完整參數(shù)集始終完成訓(xùn)練時(shí),我們將這種情況稱(chēng)為“完全深度學(xué)習(xí)”(Complete Depth Learning),一個(gè)欠佳的更新步驟會(huì)影響整個(gè)電路并將其引入隨機(jī)配置,導(dǎo)致無(wú)從逃脫的貧瘠高原。
接下來(lái)將我們的訓(xùn)練策略與訓(xùn)練 QNN 的標(biāo)準(zhǔn)技術(shù) CDL 進(jìn)行比較。為了得到公平的結(jié)果,我們使用與先前 LL 策略生成的電路架構(gòu)完全相同的電路架構(gòu),但現(xiàn)在在每一步中同時(shí)更新所有參數(shù)。為了給 CDL 提供訓(xùn)練的機(jī)會(huì),參數(shù)將優(yōu)化為零,而不是隨機(jī)優(yōu)化。由于無(wú)法使用真正的量子計(jì)算機(jī),因此我們模擬 QNN 的概率輸出,并選擇一個(gè)相對(duì)較低的值來(lái)估計(jì) QNN 每次預(yù)測(cè)的測(cè)量次數(shù)——此例中為 10。假設(shè)真正的量子計(jì)算機(jī)上的采樣率為 10kHZ,我們可以估算出訓(xùn)練運(yùn)行的實(shí)驗(yàn)性掛鐘時(shí)間,如下所示:
不同學(xué)習(xí)率 η 的分層深度學(xué)習(xí)和完全深度學(xué)習(xí)的比較。每種配置訓(xùn)練了 100 個(gè)電路,并對(duì)最終測(cè)試誤差低于 0.5(圖例中成功運(yùn)行的次數(shù))的電路取平均值
通過(guò)少量的測(cè)量,可以研究 LL 和 CDL 方法不同梯度幅度的影響:如果梯度值較大,則與較小值相比,10 次測(cè)量可以提供更多信息。執(zhí)行參數(shù)更新的信息越少,損失的方差就越大,執(zhí)行錯(cuò)誤更新的風(fēng)險(xiǎn)也就越大,這將使更新的參數(shù)隨機(jī)化,并導(dǎo)致 QNN 進(jìn)入高原。這一方差可以通過(guò)更小的學(xué)習(xí)率降低,因此上圖比較了學(xué)習(xí)率不同的 LL 和 CDL 策略。
值得注意的是,CDL 運(yùn)行的測(cè)試誤差會(huì)隨運(yùn)行時(shí)間的增加而增加,最初看起來(lái)像是過(guò)擬合。然而,這張圖中的每條曲線都是多次運(yùn)行的平均值,實(shí)際情況是,越來(lái)越多的 CDL 運(yùn)行在訓(xùn)練過(guò)程中隨機(jī)化,無(wú)法恢復(fù)。如圖例所示,與 CDL 相比,LL 運(yùn)行中有更大一部分在測(cè)試集上實(shí)現(xiàn)了小于 0.5 的分類(lèi)誤差,所用時(shí)間也更少。
綜上所述,分層學(xué)習(xí)提高了在更少訓(xùn)練時(shí)間內(nèi)成功訓(xùn)練 QNN 的概率,總體上具有更好的泛化誤差,這在 NISQ 設(shè)備上尤其實(shí)用。
原文標(biāo)題:介紹量子神經(jīng)網(wǎng)絡(luò)訓(xùn)練策略,解決消失梯度問(wèn)題
文章出處:【微信公眾號(hào):TensorFlow】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
量子
+關(guān)注
關(guān)注
0文章
480瀏覽量
25541 -
量子神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
2瀏覽量
1445
原文標(biāo)題:介紹量子神經(jīng)網(wǎng)絡(luò)訓(xùn)練策略,解決消失梯度問(wèn)題
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論