らんだむな記憶

blogというものを体験してみようか!的なー

Qiskit (54) —量子機械学習

とりあえず書籍の付属コードを実行してみたが・・・n1-highmem-4 なのにめちゃめちゃ遅い・・・。n1-highmem-4 の最新版として e2-highmem-4 というのがあった。preemptible だと旧版のほうが少しだけ安そう。それ以前にMachine families  |  Compute Engine Documentation  |  Google Cloudを見ると、GPU をアタッチできるのは、N1 シリーズと A2 シリーズだけらしい・・・。ということで、現状改善できそうにない・・・。

一応はゆっくりと数分かけて 1 つのバッチが消費されつつ

Training [2.5%]	Loss: 0.2351
Training [5.0%]	Loss: 0.2028
Training [7.5%]	Loss: 0.1816
Training [10.0%]	Loss: 0.1644
Training [12.5%]	Loss: 0.1577
Training [15.0%]	Loss: 0.1521
Training [17.5%]	Loss: 0.1501
...

という推移はしているので書籍に掲載している内容と同じではある・・・。数箇所 warning が出ているが修正するとエラーで動かなくなるものもあるので困ったものだ・・・。

Hybrid quantum-classical Neural Networks with PyTorch and Qiskit のサンプルはネットワークがより複雑な分、もっと時間がかかるかもしれない・・・。

とりあえず、上記まで粘って打ち切った結果、

f:id:derwind:20220223012730p:plain

という、何の変哲もない絵が得られ、

Performance on train data:
	Loss: 0.1484
	Accuracy: 98.0%

という結果になった。
MNIST だったら何をやってもこういう精度だし、今回は 0 と 1 なのでなおさらであるが、とりあえずのところは満足することにする。

[2201.01820] A Hybrid Quantum-Classical Neural Network Architecture for Binary Classification を見ても勾配計算のところではパラメータシフト則の話が言及されているな。誤差逆伝播法と違うけど、量子計算ならこちらのほうが良いのだろうか?今のところよく分かっていない・・・。
ちゃんと誤差逆伝播法が使われているが、量子回路の層における “偏微分の断片” がパラメータシフト則で計算されているようだ、というだけだった。パラメータシフト則についてはパラメータシフト則 - らんだむな記憶で触れることにする。