機器學習 :IT領域的下一件大事

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"},{"type":"size","attrs":{"size":10}},{"type":"strong"}],"text":"本文最初發表在 Medium 博客,經原作者 Deep Dutta 授權,InfoQ 中文站翻譯並分享。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文帶你從零開始瞭解量子機器學習。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如今,隨着量子信息科學的日益普及,量子機器學習將是信息科學與技術領域的下一個大事件。從根本上說,量子機器學習是量子計算和機器學習的結合。從零開始學習吧。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"什麼是量子計算機?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以,量子計算基本上是在量子計算機上進行的計算,因爲許多因素,如計算速度和計算空間,在經典計算機上是無法完成的。進行量子計算的計算機叫做量子計算機,它利用了量子的疊加、糾纏、干涉等性質。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"量子計算機和經典計算機的區別是什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/04\/92\/04880daac76e66177b989678632a2e92.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"量子計算機與經典計算機的基本區別在於,經典計算機以比特爲工作對象,而量子計算機以量子比特爲工作對象。因此,如果我們想把數據存儲在經典計算機中,它首先被轉換成 0 和 1 的特定組合,然後把二進制數據存儲在硬盤上。硬盤上有磁區,我們有磁極化,我們可以改變磁化強度,使之指向上或指向下。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而在量子比特中,可以用疊加的方法得到任意組合的二進制結果,我們可以把它看作是自旋。這樣我們就可以把它想象成自旋向上或自旋向下,但我們也可以把它想象成是向上和向下的疊加,如果它足夠孤立的話。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"基本的量子特性是什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"疊加、糾纏和干涉是量子信息科學中的三個基本屬性。下面我們將簡要地討論這些特性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"疊加"},{"type":"text","text":":我們已經討論過疊加,它不僅僅是 0 或 1。它的狀態是 0 和 1 的組合。通過一個例子,我們就能很容易地理解這一點。假設我有一個鋼鏰,它的正面和反面兩個結果分別被分配爲 0 和 1。無論什麼時候,如果我們把這枚鋼鏰的一面朝下,問問別人這個鋼鏰是正面還是反面,我們都能很容易地回答這個鋼鏰是正面還是反面。它就像是經典計算機中的比特。現在,如果我們旋轉鋼鏰並提問同樣的問題,我們就不能回答這一問題,因爲它可以是任意一面的組合。很可能就是量子比特。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"糾纏"},{"type":"text","text":":簡單地說,假設我們有兩個量子比特,如果我們把它們糾纏在一起,它們就會連接起來,然後它們就會永久地連接起來,然後它們的行爲就像一個系統。這就是糾纏。並且,每一個成對或成組的粒子的量子狀態不能獨立於其他粒子的狀態來描述,它們之間是以這種方式聯繫在一起的。舉個例子就會更簡單。假設我們有兩個鋼鏰(把它們當成量子比特),它們糾纏在一起。然後,如果我們各自旋轉兩個鋼鏰,在停止之後,它們應該有相同的結果(正面或反面)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"干涉"},{"type":"text","text":":想一想降噪耳機。它們是怎麼工作的?它讀取周圍環境的波長,然後產生相反的波長來抵消。它們實際上製造了干涉。干涉有兩種類型,相長干涉和相消干涉。在相長干涉中,兩波的波峯(或波谷)同時抵達同一地點,稱兩波在該點同相,干涉波會產生最大的振幅;而在相消干涉中,兩波之一的波峯與另一波的波谷同時抵達同一地點,稱兩波在該點反相,干涉波會產生最小的振幅。所以這個性質被用於控制量子態的。它放大了那些指向正確答案的信號,而消除了那些指向錯誤答案的信號。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"什麼是機器學習?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"機器學習無非是在海量數據的幫助下訓練機器(計算機),讓計算機從我們的數據中找到一些模式,然後將這些模式應用到新的數據集上。你可以把它看作是嬰兒如何學會說話。在不同的場合,他 \/ 她會多次聽到我們周圍環境中的大量詞彙,並且每天學習何時說什麼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這是一個持續的過程,並且持續一生。同樣,我們第一次遇到許多不同的單詞,然後找出一種情況(計算機的模式),什麼時候用到這個單詞,以後遇到相同的情況就可能用到這個單詞。因此,在這個例子中,我們正在使用這些數據來訓練大腦。計算機就像一個嬰兒,除了把 0 和 1 的組合作爲輸入外,它什麼都不知道。因此,我們使用大量的數據訓練計算機,然後使用另一組數據的模式完成某些任務。使用機器學習,我們可以解決許多不同類型的問題。在迴歸中,我們預測測試數據集的一些值;在分類中,我們可以在不同類別的數據之間進行分類。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"什麼是量子機器學習?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如今,通過對量子計算和機器學習的瞭解,我們很容易就能理解其背後的概念。量子機器學習無非是當我們在量子計算機上,或者在量子實例中代替經典計算機進行機器學習計算。下面我給大家舉一個分類的基本問題,量子機器學習比經典機器學習更好。這裏我將使用支持向量機算法(Support Vector Machine,SVM)。經典支持向量機與量子支持向量機的基本區別在於,經典支持向量機運行在經典實例上,而量子支持向量機運行在量子實例上。下面我們簡單介紹一下支持向量機。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"支持向量機"},{"type":"text","text":":假設我們處理的是一個二元分類問題。然後,支持向量機算法的目標是在高維空間中找到一個超平面,超平面可以清晰地劃分數據點。爲了區分這兩類數據點,需要選擇多個可能的超平面。我們的目標是找到一個具有最大餘量的平面,也就是兩類數據點之間的最大距離。最大化邊緣距離提供了一種增強方法,從而可以更有把握地對未來的數據點進行分類。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"量子機器學習框架"},{"type":"text","text":":到目前爲止,量子機器學習有一些很好的框架。Tensorflow 有"},{"type":"link","attrs":{"href":"https:\/\/www.tensorflow.org\/quantum","title":"","type":null},"content":[{"type":"text","text":"Tensorflow Quantum"}]},{"type":"text","text":",IBM 有"},{"type":"link","attrs":{"href":"https:\/\/qiskit.org\/","title":"","type":null},"content":[{"type":"text","text":"QisKit"}]},{"type":"text","text":"。除了這些之外,"},{"type":"link","attrs":{"href":"https:\/\/pennylane.ai\/","title":"","type":null},"content":[{"type":"text","text":"Pennylane"}]},{"type":"text","text":"還有一個很好的量子機器學習實現,並且所有的庫都有很好的文檔。如果你想知道更多的話,你可以通過它。在本文中,我將使用 qiskit 來實現。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"量子機器學習超越經典機器學習?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們會看到一個量子機器學習比傳統機器學習實現有明顯的優勢。爲了簡單起見,我們將使用一個基本數據集,即"},{"type":"link","attrs":{"href":"https:\/\/github.com\/Qiskit\/qiskit-aqua\/blob\/master\/qiskit\/ml\/datasets\/ad_hoc.py","title":"","type":null},"content":[{"type":"text","text":"ad-hoc"}]},{"type":"text","text":"數據集。在此,除了經典計算機所需要的所有依賴關係外,我們還需要通過導入 BasicAer 導入一個 Quantum Simulator,通過導入 ZZFeaturemap 導入一個特徵圖而不是量子特徵圖,通過導入 QuantumInstance 導入一個量子實例,最後是 QSVM。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們把特徵維度取 2,訓練和測試大小分別取 20 和 10。這樣做就可以進行基本的比較,另一個原因是我們目前還沒有足夠穩定的量子計算機。除此之外,我們把隨機種子和散點數設爲 10000。將 gap 設爲 0.3,這只是一個高維空間的空隙,可以分隔我的數據。我們還會繪製數據並標記類。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/9d\/cb\/9db999f2748773464d7cd7e5ba5b2fcb.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"加載和繪製數據集"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此數據集看起來是這樣的,有兩個類 A 和 B,分別標記爲 0 和 1。所以我們可以清楚地看到,我們需要一個高維空間中的超平面來區分這兩個類。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/af\/c0\/af34b715e4db49520dc2f697a08729c0.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"看一看數據集"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了在經典計算機上運行量子支持向量機,我們需要有一個量子模擬器作爲後端,還有一個量子實例來在我的後端上運行。所以我們在 BasicAer 的後端有一個 Qasm-simulator,以及一個具有 reps2 的特徵圖,即重複電路(量子電路)的數目爲 2。然後我們將在量子實例上運行量子支持向量機。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/8a\/32\/8ac0eb57b72c8a5af42c1d0c984b4932.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"運行量子支持向量機"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在運行量子支持向量機之後,我們就能在訓練過程中檢查我們的內核矩陣了。內核矩陣如下:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/82\/0d\/8296dd40e869eb992853ae44b93yyc0d.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"量子支持向量機內核矩陣"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在量子支持向量機訓練完成之後,就可以對測試數據集進行分類預測了。而你可以清楚地看到,量子支持向量機在這兩個類別中的分類非常完美。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/cb\/34\/cbf63f933ca47650bdc38f8b21046234.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"量子支持向量機預測"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在掌握了量子支持向量機的正確率之後,我們就可以實現經典支持向量機,並比較量子支持向量機和支持向量機的正確率。在 qiskit 中也有同樣的 scikit-learn SVM 的實現,我們將在本文使用該實現。內核矩陣如下:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/9b\/15\/9b63e5881983eaea95a30e27a4303a15.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"支持向量機內核矩陣"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而我們可以看到支持向量機對兩個類的分類準確率都達到了 65%。所以,這裏量子支持向量機的表現明顯超過了機器學習。但是爲什麼呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/14\/25\/14ce3501c9df5dc38b3853c3bdc65825.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"爲什麼量子機器學習會超越經典機器學習?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"既然我們在討論支持向量機,我們就會用支持向量機的術語來解釋它。對於分類來說,找到一個分割超平面往往只有在更高維度纔有可能。這涉及到計算高維空間中數據點之間的距離。因此,如果維數很大,則計算發現距離的開銷就非常大。所以,更簡單的做法被稱爲“內核技巧”。內核是一個易於計算的函數,它獲取我們的數據點並返回一個距離,而內核可以通過優化來最大化類間的距離。遺憾的是,有些內核指標很難用類計算。這就是量子計算機的用武之地。如果內核不能進行類優化,量子機器學習就顯示出了很大的前景,因爲它能夠利用量子計算機的多維計算空間來尋找超平面。當數據從其輸入維度映射到量子計算機的希爾伯特空間時,自然會把數據放到更高維空間。因此,量子支持向量機的性能優於支持向量機。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你可以在這裏找到完整的代碼實現:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/github.com\/itzzdeep\/Quantum-Machine-Learning"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"作者介紹:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Deep Dutta,熟悉機器學習。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/medium.com\/swlh\/quantum-machine-learning-the-next-big-thing-95bfc3b4f08f"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章