【量子機械学習】量子ニューラルネットワーク(ディープラーニング)のために、好きな活性化関数(非線形関数)を量子コンピュータ上で作ろうという話。

目次。

 

この文章を読んで、面白い!役に立った!...と思った分だけ、投げ銭していただけると嬉しいです。

ofuse.me

 

 

【宣伝】ギターも歌も下手だけど、弾き語りをやっているので、よければ聴いてください。

www.youtube.com

 

 

はじめに。

前回に引き続き、量子ニューラルネットワークの話。前回書いた文章『【量子機械学習】量子ニューラルネットワーク(ディープラーニング)の最急降下法の話。』もよければどうぞ。

blog.sun-ek2.com

 

前回も同様のことを書いたが、2022年のノーベル物理学賞は、「量子もつれ光子対を用いた、ベルの不等式の破れの実験的検証。ならびに量子情報科学の開拓」だった。量子情報科学の分野から初めて、ノーベル賞が出たので、嬉しくなって、このような文章を投稿することにした。

 

一般向けではないので、ご容赦ください。量子情報科学の本を読みとおすことができれば、この文章も読めると思います。そして、この本を読めば、2022年のノーベル物理学賞のことがよくわかります。

 

「高校数学の知識がない人が量子情報科学の論文が読めるようになるために、どういう本を読めばいいか」というのを以下の文章の最後の方に書いたので、よければどうぞ。

blog.sun-ek2.com

 

量子コンピュータ上での最急降下法の論文も量子敵対生成ネットワークの論文も、以下の文章で紹介しているので、よければ。

blog.sun-ek2.com

 

==========

ちょくちょく宣伝しているが、新型コロナウイルスの論文を使って、「研究者がどうやって未知のウイルスの正体を暴くのか?」について説明した文章を一般の人向けに書いたので興味のある方はどうぞ。
blog.sun-ek2.com

加えて、PCR検査の仕組みと、それに代わるかもしれないゲノム編集技術を応用した新しい検査方法に関する論文を一般向けに説明したので興味のある方はどうぞ。
blog.sun-ek2.com

さらに、試験管内で新型コロナウイルスのスパイクタンパク質を進化させて、色々な変異体を取ってきたという論文を一般向けに説明したので興味のある方はどうぞ。

blog.sun-ek2.com

==========

 

 

ニューラルネットワーク(ディープラーニング)に活性化関数(非線形関数)は、なぜ必要?

ニューラルネットワークは、入力の重み付き線形和を活性化関数(非線形関数)の引数として与え、その結果を出力するパーセプトロンが大量に集まったものである。

 

活性化関数(非線形関数)がないと層をいくら重ねても、1層だけのニューラルネットワークと差がなくなってしまう。

 

例えば、\displaystyle xを入力し、\displaystyle zを出力するパーセプトロンが2個しかない2層のニューラルネットワークを考える。

 

1つ目のパーセプトロンは、

\displaystyle y = ax + b

2つ目のパーセプトロンは、

\displaystyle z = cy + d

ネットワーク全体では、

\displaystyle z = acx + bc + d

 

となるが、\displaystyle \alpha = ac\displaystyle \beta = bc + dとおけば、

\displaystyle z = \alpha x + \betaと書き換えることができる。

…2層のニューラルネットワークを作ったつもりだったが、これって、1層のニューラルネットワークと変わらなくね?

 

これは、2層に限った話ではなく、3層、4層、…と増えていっても同じ。また、1つの層の中のパーセプトロンの数が多くなっても同じことがいえる。このままだと、ニューラルネットワークをどれだけ複雑にしても、線形関数しか表現することができない。

 

一方で活性化関数(非線形関数)\displaystyle \sigma \left( x \right)を1つ目のパーセプトロンに使うと、全体のネットワークは、

\displaystyle z = c \sigma \left( ax + b \right) + d

となる。

 

先ほどとは異なり、この\displaystyle zは、1つの単純なパーセプトロンで表現することができない。逆に、活性化関数(非線形関数)を使うと、2つの単純なパーセプトロンでより複雑なものが表現できるようになるとも言える。

 

 量子ニューラルネットワークも同様。\displaystyle | ψ \rangle _{in} = x | 0 \rangle + y | 1 \rangle を入力し、\displaystyle | ψ \rangle _{out}を出力するユニタリ変換が2個あるのニューラルネットワークを考える。

 

1つ目のユニタリ変換行うと、

\displaystyle U | ψ \rangle _{in} = ax | 0 \rangle + by | 1 \rangle

2つ目のユニタリ変換行うと、

\displaystyle | ψ \rangle _{out} = acx | 0 \rangle + bdy | 1 \rangle

 

となるが、\displaystyle \alpha = ac\displaystyle \beta = bdとおけば、

\displaystyle | ψ \rangle _{out} = \alpha x | 0 \rangle + \beta y | 1 \rangleと書き換えることができる。

…2個のユニタリ変換を使ったが、これって、1個のユニタリ変換でも良くね?ユニタリ変換をいくら増やしても、結局、\displaystyle | ψ \rangle _{in}に1つのユニタリ変換を作用させていることになる。

 

一方で活性化関数(非線形関数)\displaystyle \sigma_1 \left( x \right)\displaystyle \sigma_2 \left( x \right)を1つ目のユニタリ変換後に、導入すると、

\displaystyle | ψ \rangle _{out} = c \sigma _1 \left( ax \right) | 0 \rangle + d \sigma _2 \left( by \right) | 1 \rangle

となる。これを1つの単純なユニタリ変換で表すことはできない。

 

昔、ニューラルネットワークに必要な活性化関数(非線形関数)は、量子コンピュータ上で作れないかもしれないと考えられていた。

 

量子コンピュータの土台は、量子力学。量子力学の土台は、線形代数学である。線形代数学は、その名の通り、線形関数を扱う学問。「線形関数を扱う学問が土台となっている量子コンピュータで非線形関数?」という具合に思われていた。

 

しかし、量子コンピュータでも、非線形関数を作ることが出来るということが明らかになった。有名なのは、量子ニューロンの論文だと思う。

 

qiita.com

 

 

量子ニューロンを使えば、シグモイド関数っぽい関数で表される確率振幅を持った量子状態が重ね合わされた出力を得ることが出来る。

 

 

 

 

読んだ論文 Marco Maronese, Claudio Destri, Enrico Prati: Quantum activation functions for quantum neural networks. Quantum Information Processing (2022)

 

link.springer.com

 

 

 

この論文の手法で、任意の活性化関数(非線形関数)をマクローリン展開で近似した関数で表される確率振幅を持った量子状態が重ね合わされた出力を得ることが出来る。

 

 

内容。

まずは、以下の式を満たす\displaystyle U_z \left( \vec{x} , \vec{w} , b \right)を求める。

\displaystyle \langle 1 | ^{\otimes n} U_z \left( \vec{x} , \vec{w} , b \right) | 0 \rangle ^{\otimes n} = \frac{ \vec{w} \cdot \vec{x} + b}{2^{n_{in}} + 1} = z

 

成分が全て実数のベクトル\displaystyle \vec{v_x} = \left( \vec{x} , 1 , A_x , 0 \right)\displaystyle \overrightarrow{v_{w , b}} = \left( \vec{w} , b , 0 , A_{w , b} \right)を考える。

 

これらは、以下の式を満たす。

\displaystyle \vec{v_x} \cdot \vec{v_x} = \vec{x} \cdot \vec{x} + a_x^2 + 1=2^{n_{in}}+1

\displaystyle \overrightarrow{v_{w , b}} \cdot \overrightarrow{v_{w , b}} = \vec{w} \cdot \vec{w} + a_{w , b}^2 + b^2=2^{n_{in}}+1

\displaystyle \overrightarrow{v_{w , b}} \cdot \vec{v_x} = \vec{w} \cdot \vec{x} + b

 

また、\displaystyle | ψ_x \rangle\displaystyle | ψ_{w,b} \rangleを以下のように定義する。

\displaystyle | ψ_x \rangle = U_x | 0 \rangle ^{\otimes n} = \textbf{U} \left( \vec{v_x} \right) | 0 \rangle ^{\otimes n} = \sum_{i=0}^{2^n-1} \frac{v_{x, i}}{ \sqrt{2^{n_{in}} + 1}} | i \rangle

\displaystyle | ψ_{w,b} \rangle = U_{w,b}^† | 1 \rangle ^{\otimes n} = \textbf{U} \left( \overrightarrow{v_{w , b}} \right) X^{\otimes n} | 0 \rangle ^{\otimes n} = \sum_{i=0}^{2^n-1} \frac{v_{w, b, i}}{ \sqrt{2^{n_{in}} + 1}} | i \rangle

 

\displaystyle | ψ_x \rangle\displaystyle | ψ_{w,b} \rangleの内積を取ると以下のようになる。

\displaystyle \langle ψ_x | ψ_{w,b} \rangle  = \frac{ \vec{w} \cdot \vec{x} + b}{2^{n_{in}} + 1} \equiv z

 

この式に、\displaystyle | ψ_x \rangle\displaystyle | ψ_{w,b} \rangleの式を代入すると、

\displaystyle \langle ψ_x | ψ_{w,b} \rangle  = \langle ψ_x | U_{w, b}^† U_{w, b} | ψ_{w,b} \rangle = \langle 1 | ^{\otimes n} U_{w, b} | ψ_{w,b} \rangle = \langle 1 | ^{\otimes n} U_{w, b} U_x | 0 \rangle ^{\otimes n}

 

\displaystyle U_z \left( \vec{x} , \vec{w} , b \right) = X^{\otimes n} \textbf{U}^† \left( \overrightarrow{v_{w , b}} \right) \textbf{U} \left( \vec{v_x} \right)とすると、

\displaystyle \langle 1 | ^{\otimes n} U_{w, b} U_x | 0 \rangle ^{\otimes n} = z

となる。

 

\displaystyle | ψ_x \rangle = \textbf{U} \left( \vec{v_x} \right) | 0 \rangle ^{\otimes n}\displaystyle | ψ_{w,b} \rangle = \textbf{U} \left( \overrightarrow{v_{w , b}} \right) X^{\otimes n} | 0 \rangle ^{\otimes n}を満たすユニタリ変換は、アダマールゲート、制御Xゲート、Tゲートを使えば、作ることができる。詳しくは、以下のwebサイトを参照のこと。

 

qiita.com

 

 

\displaystyle \vec{v_x}\displaystyle \overrightarrow{v_{w , b}}\displaystyle A_x\displaystyle A_{w , b}が入っているのは、\displaystyle | 0 \rangle ^{\otimes n}\displaystyle | 1 \rangle ^{\otimes n}をの位相差を消し去るため。\displaystyle A_x\displaystyle A_{w , b}は、内積には現れないため、この2つに位相差を押し付けることができる。

(ここのところは、ちゃんと理解できていない…)

 

 

 

~~~~~~~~~~

次に、以下の式を満たすユニタリ変換を求める。

\displaystyle | ψ_z^{d} \rangle = S_v X_q^{\otimes n} | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} = | ψ_z^{d} \rangle _\perp + \frac{1}{2^{d/2}} \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d}  | 1 \rangle _q ^{\otimes n}

 

\displaystyle \langle 1| _q ^{\otimes n} | ψ_z^{d} \rangle _\perp = 0

\displaystyle S_v = \prod ^{d-1} _{i=0} V_{d-1-i}

\displaystyle V_m = C_{a_m} U_z \left( \vec{x} , \vec{w} , b \right)_q C_{a_m} X^{\otimes n} _q C^n_q H_{a_m}

\displaystyle C_αというのは、レジスタαにある量子ビット列を制御量子ビットにするという意味。

 

まず、\displaystyle | 0 \rangle _{a_m} | ψ_z^{m} \rangle\displaystyle V_mを作用させると、

\displaystyle V_m | 0 \rangle _{a_m} | ψ_z^{m} \rangle = C_{a_m} U_z \left( \vec{x} , \vec{w} , b \right)_q C_{a_m} X^{\otimes n} _q C^n_q H_{a_m} | 0 \rangle _{a_m} | ψ_z^{m} \rangle

\displaystyle = C_{a_m} U_z \left( \vec{x} , \vec{w} , b \right)_q C_{a_m} X^{\otimes n} _q C^n_q H_{a_m} | 0 \rangle _{a_m} \left\{ | ψ_z^{m} \rangle _\perp + \frac{1}{2^{m/2}} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m}  | 1 \rangle _q ^{\otimes n} \right\}

 

\displaystyle \langle 1|_q ^{\otimes n} | ψ_z^{d} \rangle _\perp = 0なので、

\displaystyle V_m | 0 \rangle _{a_m} | ψ_z^{m} \rangle

\displaystyle = C_{a_m} U_z \left( \vec{x} , \vec{w} , b \right)_q C_{a_m} X^{\otimes n} _q \left\{ | 0 \rangle _{a_m} | ψ_z^{m} \rangle _\perp + \frac{1}{2^{\left( m+1 \right) /2}} \left( | 0 \rangle _{a_m} + | 1 \rangle _{a_m} \right) \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m}  | 1 \rangle _q ^{\otimes n} \right\}

\displaystyle = | 0 \rangle _{a_m} | ψ_z^{m} \rangle _\perp + \frac{1}{2^{\left( m+1 \right) /2}} | 0 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m}  | 1 \rangle _q ^{\otimes n}

\displaystyle + U_z \left( \vec{x} , \vec{w} , b \right)_q X^{\otimes n} _q \frac{1}{2^{\left( m+1 \right) /2}} | 1 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m}  | 1 \rangle _q ^{\otimes n}

 

最後の項を取り出して計算を進めると、

\displaystyle U_z \left( \vec{x} , \vec{w} , b \right)_q X^{\otimes n} _q \frac{1}{2^{\left( m+1 \right) /2}} | 1 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m}  | 1 \rangle _q ^{\otimes n}

\displaystyle = \frac{1}{2^{\left( m+1 \right) /2}} | 1 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m} U_z \left( \vec{x} , \vec{w} , b \right)_q | 0 \rangle _q ^{\otimes n}

\displaystyle = \sum_{i=0}^{2^n-2} \frac{1}{2^{\left( m+1 \right) /2}} | 1 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m} \langle i | _q U_z \left( \vec{x} , \vec{w} , b \right)_q | 0 \rangle _q ^{\otimes n} | i \rangle _q

\displaystyle + \frac{1}{2^{\left( m+1 \right) /2}} | 1 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m} \langle 1 | _q ^{\otimes n} U_z \left( \vec{x} , \vec{w} , b \right)_q | 0 \rangle _q ^{\otimes n}  | 1 \rangle _q ^{\otimes n}

 

これを先ほどの式に代入すると、

\displaystyle V_m | 0 \rangle _{a_m} | ψ_z^{m} \rangle

\displaystyle = | 0 \rangle _{a_m} | ψ_z^{m} \rangle _\perp + \sum_{i=0}^{2^n-2} \frac{1}{2^{\left( m+1 \right) /2}} | 1 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m} \langle i | _q U_z \left( \vec{x} , \vec{w} , b \right)_q | 0 \rangle _q ^{\otimes n} | i \rangle _q

\displaystyle + \frac{1}{2^{\left( m+1 \right) /2}} | 0 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m}  | 1 \rangle _q ^{\otimes n}

\displaystyle + \frac{1}{2^{\left( m+1 \right) /2}} | 1 \rangle _{a_m} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m} \langle 1 | _q ^{\otimes n} U_z \left( \vec{x} , \vec{w} , b \right)_q | 0 \rangle _q ^{\otimes n}  | 1 \rangle _q ^{\otimes n} 

\displaystyle = | ψ_z^{m+1} \rangle _\perp + \frac{1}{2^{\left( m+1 \right) /2}} \left( | 0 \rangle _{a_m} + z | 1 \rangle _{a_m} \right) \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m}  | 1 \rangle _q ^{\otimes n}

\displaystyle = | ψ_z^{m+1} \rangle _\perp + \frac{1}{2^{\left( m+1 \right) /2}} \left( | 0 \rangle + z | 1 \rangle \right)^{\otimes m+1}  | 1 \rangle _q ^{\otimes n}

\displaystyle V_m | 0 \rangle _{a_m} | ψ_z^{m} \rangle = | ψ_z^{m+1} \rangle

 

この式を繰り返し使用すると、

\displaystyle | ψ_z^{d} \rangle = V_{d-1} | 0 \rangle _a | ψ_z^{d-1} \rangle = V_{d-1}V_{d-2} | 0 \rangle _a ^{\otimes 2} | ψ_z^{d-2} \rangle = V_{d-1}V_{d-2} … V_0 | 0 \rangle _a ^{\otimes d} | ψ_z^{0} \rangle

\displaystyle = V_{d-1}V_{d-2} … V_0 | 0 \rangle _a ^{\otimes d} | 1 \rangle _q ^{\otimes n} = S_v X_q^{\otimes n} | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n}

 

~~~~~~~~~~

次に、以下の式を証明する。

\displaystyle \langle 1 | _q ^{\otimes n} \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} | ψ_z^{d} \rangle = 2^{-d/2} z^k

 

\displaystyle \langle 1 | _q ^{\otimes n} \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} | ψ_z^{d} \rangle = \langle 1 | _q ^{\otimes n} \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \left\{ | ψ_z^{d} \rangle _\perp + \frac{1}{2^{d/2}} \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} | 1 \rangle _q ^{\otimes n} \right\}

\displaystyle = \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \left\{ \frac{1}{2^{d/2}} \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} \right\} = \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \frac{1}{2^{d/2}} z^k | 0 \rangle _a ^{\otimes d-k} | 1 \rangle _a ^{\otimes k} = 2^{-d/2} z^k

 

 

 

~~~~~~~~~~

次に、数学的帰納法で以下の式を証明する。

\displaystyle \langle 0 | _a ^{\otimes d} U_k \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} =  f_k \left( z \right)

 

\displaystyle f_k \left( z \right) = f_{k-1} \left( z \right) \cos \theta_{k-1} - z^k \sin \theta_{k-1}

\displaystyle U_k = C_{a_0} X_{a_k} \bar{C}_{a_k} R_y \left( -2 \theta _{k-1} \right) _{a_0} U_{k-1}

\displaystyle f_0 \left( z \right) = 1\displaystyle U_0 = I

 

\displaystyle k = 1のとき、

\displaystyle \langle 0 | _a ^{\otimes d} U_1 \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} = \langle 0 | _a ^{\otimes d} C_{a_0} X_{a_1} \bar{C}_{a_1} R_y \left( -2 \theta _{0} \right) _{a_0} U_{0} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d}

\displaystyle = \langle 0 | _a ^{\otimes d} C_{a_0} X_{a_1} \bar{C}_{a_1} \left\{ \cos \left( -\theta _0 \right) I -i \sin \left( -\theta _0 \right) \sigma _y \right\} _{a_0} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d}

\displaystyle = \langle 00 | _{a_1 a_0} C_{a_0} X_{a_1} \bar{C}_{a_1} \left\{ \cos \left( \theta _0 \right) -i \sin \left( \theta _0 \right) \sigma _y \right\} _{a_0} \left( | 00 \rangle + z | 01 \rangle + z | 10 \rangle + z^2 | 11 \rangle\right) _{a_1 a_0}

\displaystyle = \langle 00 | _{a_1 a_0} C_{a_0} X_{a_1} \left( \cos \left( \theta _0 \right) | 00 \rangle + \cos \left( \theta _0 \right) z | 01 \rangle + z | 10 \rangle + z^2 | 11 \rangle\right) _{a_1 a_0}

\displaystyle + \langle 00 | _{a_1 a_0} C_{a_0} X_{a_1} \bar{C}_{a_1} \left\{ -i \sin \left( \theta _0 \right) \left( -i | 0 \rangle \langle 1 | + i | 1 \rangle \langle 0 | \right) \right\} _{a_0} \left( | 00 \rangle + z | 01 \rangle + z | 10 \rangle + z^2 | 11 \rangle\right) _{a_1 a_0}

\displaystyle = \langle 00 | _{a_1 a_0} \left( \cos \left( \theta _0 \right) | 00 \rangle + \cos \left( \theta _0 \right) z | 11 \rangle + z | 10 \rangle + z^2 | 01 \rangle\right) _{a_1 a_0}

\displaystyle + \langle 00 | _{a_1 a_0} C_{a_0} X_{a_1} \bar{C}_{a_1} \left\{ - \sin \left( \theta _0 \right) \left( | 0 \rangle \langle 1 | - | 1 \rangle \langle 0 | \right) \right\} _{a_0} \left( | 00 \rangle + z | 01 \rangle + z | 10 \rangle + z^2 | 11 \rangle\right) _{a_1 a_0}

\displaystyle = \cos \left( \theta _0 \right) + \langle 00 | _{a_1 a_0} C_{a_0} X_{a_1} \left( \sin \left( \theta _0 \right) | 01 \rangle - \sin \left( \theta _0 \right) z | 00 \rangle + z | 10 \rangle + z^2 | 11 \rangle\right) _{a_1 a_0}

\displaystyle = \cos \left( \theta _0 \right) + \langle 00 | _{a_1 a_0} \left( \sin \left( \theta _0 \right) | 11 \rangle - \sin \left( \theta _0 \right) z | 00 \rangle + z | 10 \rangle + z^2 | 01 \rangle\right) _{a_1 a_0}

\displaystyle = \cos \left( \theta _0 \right) - z \sin \left( \theta _0 \right) = f_1 \left( z \right)

よって、\displaystyle k = 1のとき、\displaystyle \langle 0 | _a ^{\otimes d} U_k \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} =  f_k \left( z \right)は、成立する。

 

\displaystyle k = n - 1のとき、

\displaystyle \langle 0 | _a ^{\otimes d} U_{n-1} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} =  f_{n-1} \left( z \right)

が成立すると仮定する。

 

さて、\displaystyle C_{a_0} X_{a_k} \bar{C}_{a_k} R_y \left( -2 \theta _{k-1} \right) _{a_0}を作用させると、基底は以下のように変換される。

\displaystyle | 0 \rangle _{a_k}| 0 \rangle _{a_0}\displaystyle | 0 \rangle _{a_k} | 0 \rangle _{a_0} + | 1 \rangle _{a_k}| 1 \rangle _{a_0}

\displaystyle | 0 \rangle _{a_k}| 1 \rangle _{a_0}\displaystyle | 0 \rangle _{a_k} | 0 \rangle _{a_0} + | 1 \rangle _{a_k}| 1 \rangle _{a_0}

\displaystyle | 1 \rangle _{a_k}| 0 \rangle _{a_0}\displaystyle | 1 \rangle _{a_k} | 0 \rangle _{a_0}

\displaystyle | 1 \rangle _{a_k}| 1 \rangle _{a_0}\displaystyle | 0 \rangle _{a_k} | 1 \rangle _{a_0}

 

つまり、\displaystyle C_{a_0} X_{a_k} \bar{C}_{a_k} R_y \left( -2 \theta _{k-1} \right) _{a_0}を作用させて、\displaystyle \langle 0 | _a ^{\otimes d}と内積を取ると、\displaystyle | 0 \rangle _a ^{\otimes d}\displaystyle | 0 \rangle _a ^{\otimes d-1} | 1 \rangle _{a_0}以外の項は消滅する。

 

\displaystyle U_{n-1} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d}\displaystyle | 0 \rangle _a ^{\otimes d}\displaystyle | 0 \rangle _a ^{\otimes d-1} | 1 \rangle _{a_0}、それ以外の項に分けて書き下すと、以下のようになる。

\displaystyle U_{n-1} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} =  f_{n-1} \left( z \right) | 0 \rangle _a ^{\otimes d} + B_{n-1}  | 0 \rangle _a ^{\otimes d-1} | 1 \rangle _{a_0} + \sum_{i=2}^{2^d-1} D_{n-1, i} | i \rangle

と表すことができる。現時点では、\displaystyle B_{n-1}\displaystyle D_{n-1, i}は不明。この式は、\displaystyle \langle 0 | _a ^{\otimes d} U_{n-1} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} =  f_{n-1} \left( z \right)を満たしている。

 

\displaystyle k = nのとき、

\displaystyle \langle 0 | _a ^{\otimes d} U_{n} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} = \langle 0 | _a ^{\otimes d} C_{a_0} X_{a_n} \bar{C}_{a_n} R_y \left( -2 \theta _{n-1} \right) _{a_0} U_{n-1} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d}

\displaystyle = \langle 0 | _a ^{\otimes d} C_{a_0} X_{a_n} \bar{C}_{a_n} R_y \left( -2 \theta _{n-1} \right) _{a_0} \left( f_{n-1} \left( z \right) | 0 \rangle _a ^{\otimes d} + B_{n-1}  | 0 \rangle _a ^{\otimes d-1} | 1 \rangle _{a_0} + \sum_{i=2}^{2^d-1} D_{n-1, i} | i \rangle \right)

\displaystyle = \langle 0 | _{a_n} \langle 0 | _{a_0} C_{a_0} X_{a_n} \bar{C}_{a_n} R_y \left( -2 \theta _{n-1} \right) _{a_0} \left( f_{n-1} \left( z \right) | 0 \rangle _{a_n} | 0 \rangle _{a_0} + B_{n-1}  | 0 \rangle _{a_n} | 1 \rangle _{a_0} \right)

 

これ以降の計算は、\displaystyle k = 1の時と、ほぼ変わらない。結果は、次のようになる。

\displaystyle \langle 0 | _a ^{\otimes d} U_{n} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} = f_{n-1} \cos \left( \theta _{n-1} \right) - B_{n-1} \sin \left( \theta _{n-1} \right)

 

もし、\displaystyle B_{n-1} = z^nが成り立つのであれば、\displaystyle \langle 0 | _a ^{\otimes d} U_{n} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d}= f_{n} \left( z \right)が成り立ち、証明は終了する。

 

次に\displaystyle B_{n-1} = z^nを示す。\displaystyle \langle 1 | _q ^{\otimes n} \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} | ψ_z^{d} \rangle = 2^{-d/2} z^kの証明で出てきた以下の式を変形していくと、

\displaystyle \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \left\{ \frac{1}{2^{d/2}} \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} \right\} = 2^{-d/2} z^k

\displaystyle \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} = z^k

\displaystyle \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} U^†_k U_k \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} = z^k

\displaystyle \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \left\{ \prod ^{k-1} _{i=0} C_{a_0} X_{a_{k-i}} \bar{C}_{a_{k-i}} R_y \left( -2 \theta _{k-1-i} \right) _{a_0} \right\}^† U_k \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} = z^k

\displaystyle \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \prod ^{k} _{i=1} \bar{C}_{a_{i}} R_y \left( -2 \theta _{i-1} \right) _{a_0} C_{a_0} X_{a_{i}} U_k \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} = z^k

 

\displaystyle \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \prod ^{k} _{i=1} \bar{C}_{a_{i}} R_y \left( -2 \theta _{i-1} \right) _{a_0} = \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \prod ^{k} _{i=1} Iなので、

\displaystyle \langle 0 | _a ^{\otimes d-k} \langle 1 | _a ^{\otimes k} \prod ^{k} _{i=1} C_{a_0} X_{a_{i}} U_k \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} = z^k

\displaystyle \langle 0 | _a ^{\otimes d-1} \langle 1 | _{a_0} U_k \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d} = z^k

 

\displaystyle U_{k} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} =  f_{k} \left( z \right) | 0 \rangle _a ^{\otimes d} + B_{k}  | 0 \rangle _a ^{\otimes d} | 1 \rangle _{a_0} + \sum_{i=2}^{2^d-1} D_{k, i} | i \rangleと、\displaystyle \langle 0 | _a ^{\otimes d-1} \langle 1 | _{a_0}の内積を取ると、

\displaystyle \langle 0 | _a ^{\otimes d-1} \langle 1 | _{a_0} U_{n} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d}

\displaystyle = \langle 0 | _a ^{\otimes d-1} \langle 1 | _{a_0} f_{k} \left( z \right) | 0 \rangle _a ^{\otimes d} + \langle 0 | _a ^{\otimes d-1} \langle 1 | _{a_0} B_{k}  | 0 \rangle _a ^{\otimes d-1} | 1 \rangle _{a_0} + \langle 0 | _a ^{\otimes d-1} \langle 1 | _{a_0} \sum_{i=2}^{2^d-1} D_{k, i} | i \rangle

\displaystyle \langle 0 | _a ^{\otimes d-1} \langle 1 | _{a_0} U_{k} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} = \langle 0 | _a ^{\otimes d-1} \langle 1 | _{a_0} B_{k}  | 0 \rangle _a ^{\otimes d-1} | 1 \rangle _{a_0} = z^k

\displaystyle B_{k} = z^k

 

よって、\displaystyle \langle 0 | _a ^{\otimes d} U_{n} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d}= f_{n} \left( z \right)の証明は終了。

 

\displaystyle k = nのときも成り立つので、全ての\displaystyle kで、

\displaystyle \langle 0 | _a ^{\otimes d} U_k \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} =  f_k \left( z \right)

 

\displaystyle f_k \left( z \right) = f_{k-1} \left( z \right) \cos \theta_{k-1} - z^k \sin \theta_{k-1}

\displaystyle U_k = C_{a_0} X_{a_k} \bar{C}_{a_k} R_y \left( -2 \theta _{k-1} \right) _{a_0} U_{k-1}

\displaystyle f_0 \left( z \right) = 1\displaystyle U_0 = I

が成り立つ。

 

これで、量子コンピュータ上で、好きな活性化関数(非線形関数)を作る準備は完了した。

 

 

 

~~~~~~~~~~

好きな活性化関数(非線形関数)のマクローリン展開を次のように表す。

\displaystyle T_d \left( z \right) = \sum ^d _{i=k} a_i z^i

\displaystyle kは、項の中で最も低い次数を表している。

 

少し変形すると、

\displaystyle T_d \left( z \right) = a_k \left( z^k + \sum ^{d-1} _{i=k} \frac{a_{i+1}}{a_k} z^{i+1} \right)

となる。

 

 i ≦ k-1のとき \theta_{i} = -\frac{\pi}{2} k ≦ i ≦ d-1のとき \theta_{i} ≠ -\frac{\pi}{2}とし、先ほどの式を変形していく。

\displaystyle f_d \left( z \right) = f_{d-1} \left( z \right) \cos \theta_{d-1} - z^d \sin \theta_{d-1}

\displaystyle = \cos \theta_{d-1} \left\{ f_{d-1} \left( z \right) - z^d \tan \theta_{d-1} \right\}

\displaystyle = \cos \theta_{d-1} \left\{ \cos \theta_{d-2} \left( f_{d-2} \left( z \right) - z^{d-1} \tan \theta_{d-2} \right) - z^d \tan \theta_{d-1} \right\}

\displaystyle = \cos \theta_{d-1} \cos \theta_{d-2} \left\{ f_{d-2} \left( z \right) - z^{d-1} \tan \theta_{d-2} - z^d \frac { \tan \theta_{d-1} }{ \cos \theta_{d-2} } \right\}

\displaystyle = \cos \theta_{d-1} \cos \theta_{d-2} \cos \theta_{d-3} \left\{ f_{d-3} \left( z \right) - z^{d-2} \tan \theta_{d-3} - z^{d-1} \frac { \tan \theta_{d-2} }{ \cos \theta_{d-3} } - z^d \frac { \tan \theta_{d-1} }{ \cos \theta_{d-2} \cos \theta_{d-3} }\right\}

\displaystyle = \prod ^{d-1} _{i=d-3} \cos \theta_{i} \left\{ f_{d-3} \left( z \right) - \sum^{d-1} _{i=d-3} \frac{ \tan \theta_{i} }{ \prod ^{i-1} _{j=d-3} \cos \theta_{j} } z^{i+1} \right\}

 

\displaystyle = …

 

\displaystyle = \prod ^{d-1} _{i=k} \cos \theta_{i} \left\{ f_{k} \left( z \right) - \sum^{d-1} _{i=k} \frac{ \tan \theta_{i} }{ \prod ^{i-1} _{j=k} \cos \theta_{j} } z^{i+1} \right\}

 

\displaystyle f_k \left( z \right) = f_{k-1} \left( z \right) \cos \theta_{k-1} - z^k \sin \theta_{k-1}

\displaystyle = f_{k-1} \left( z \right) \cos \left( -\frac{\pi}{2} \right) - z^k \sin \left( -\frac{\pi}{2} \right) = z^k

 

よって、

\displaystyle f_d \left( z \right) = \prod ^{d-1} _{i=k} \cos \theta_{i} \left\{z^k - \sum^{d-1} _{i=k} \frac{ \tan \theta_{i} }{ \prod ^{i-1} _{j=k} \cos \theta_{j} } z^{i+1} \right\}

 

次は、\displaystyle T_d \left( z \right) = \frac{a_k}{\prod ^{d-1} _{i=k} \cos \theta_{i}} f_d \left( z \right)を満たすような\displaystyle \theta_{i}を求める。

\displaystyle a_k \left( z^k + \sum ^{d-1} _{i=k} \frac{a_{i+1}}{a_k} z^{i+1} \right) = \frac{a_k}{\prod ^{d-1} _{i=k} \cos \theta_{i}} \prod ^{d-1} _{i=k} \cos \theta_{i} \left\{z^k - \sum^{d-1} _{i=k} \frac{ \tan \theta_{i} }{ \prod ^{i-1} _{j=k} \cos \theta_{j} } z^{i+1} \right\}

\displaystyle \frac{a_{i+1}}{a_k} = - \frac{ \tan \theta_{i} }{ \prod ^{i-1} _{j=k} \cos \theta_{j}}

\displaystyle \theta_{i} = tan^{-1} \left( -\frac{a_{i+1}}{a_k} \prod ^{i-1} _{j=k} \cos \theta_{j} \right)

 

よって、作りたい活性化関数(非線形関数)のマクローリン展開の係数を決定すれば、ユニタリゲートの\displaystyle \theta_{i}が決まる。\displaystyle \theta_{i}は、\displaystyle \theta_{k} ,..., \theta_{i-1}が引数になっていることに注意。そのため、\displaystyle \theta_{k}から順番に\displaystyle \theta_{i}の値を決めていく。

 

~~~~~~~~~~

数式を弄って、今まで得られた結果をもう一度、記載する。

\displaystyle S_v X_q^{\otimes n} | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} = | ψ_z^{d} \rangle _\perp + \frac{1}{2^{d/2}} \left( | 0 \rangle _a + z | 1 \rangle _a \right)^{\otimes d}  | 1 \rangle _q ^{\otimes n}

\displaystyle U_{k} \left( | 0 \rangle _a + z | 1 \rangle _a \right) ^{\otimes d} =  f_{k} \left( z \right) | 0 \rangle _a ^{\otimes d} + z^k  | 0 \rangle _a ^{\otimes d-1} | 1 \rangle _{a_0} + \sum_{i=2}^{2^d-1} D_{k, i} | i \rangle

 

これらを組み合わせると、以下のようになる。

\displaystyle | ψ_{f \left( z \right)}^{d} \rangle

\displaystyle = X_q^{\otimes n} U_{k} S_v X_q^{\otimes n} | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n}

\displaystyle = X_q^{\otimes n} U_{k} | ψ_z^{d} \rangle _\perp + \frac{1}{2^{d/2}} \left( f_{k} \left( z \right) | 0 \rangle _a ^{\otimes d} + z^k  | 0 \rangle _a ^{\otimes d-1} | 1 \rangle _{a_0} + \sum_{i=2}^{2^d-1} D_{k, i} | i \rangle \right) | 0 \rangle _q ^{\otimes n}

\displaystyle = \frac{1}{2^{d/2}} f_{k} \left( z \right) | 0 \rangle _a ^{\otimes d} | 0 \rangle _q ^{\otimes n} + | ψ_{f \left( z \right)}^{d} \rangle _\perp

\displaystyle = \frac{1}{2^{d/2}} \frac{ \prod ^{d-1} _{i=k} \cos \theta_{i} }{a_k} T_d \left( z \right) | 0 \rangle _a ^{\otimes d} | 0 \rangle _q ^{\otimes n} + | ψ_{f \left( z \right)}^{d} \rangle _\perp

 

\displaystyle | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n}\displaystyle X_q^{\otimes n} U_{k} S_v X_q^{\otimes n} を作用させることによって、好きな活性化関数(非線形関数)を定数倍した確率振幅を持つ量子状態が重ね合わさった出力を得ることができる。

 

 

 

~~~~~~~~~~

しかし、活性化関数(非線形関数)を出力に使いたい場合、このままでは上手くいかない。この出力を測定し、\displaystyle | 0 \rangle _a ^{\otimes d} | 0 \rangle _q ^{\otimes n}だった場合の確率は、\displaystyle ∝ \left\{ T_d \left( z \right) \right\}^2であり、\displaystyle ∝ T_d \left( z \right)ではない。そして、位相情報が失われているので、\displaystyle \left\{ T_d \left( z \right) \right\}^2から\displaystyle T_d \left( z \right)を構築することはできない。次は、この問題を解決する。

\displaystyle | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n}\displaystyle | 0 \rangle_lを加え、この量子ビットにアダマール変換を行う。

\displaystyle H_l | 0 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} = \frac{1}{\sqrt{2}} \left( | 0 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} + | 1 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} \right)

そして、先ほど加えた量子ビットを制御ビットとし、制御ユニタリ変換を行う。

\displaystyle C_l X_q^{\otimes n} U_{k} S_v X_q^{\otimes n} \frac{1}{\sqrt{2}} \left( | 0 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} + | 1 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} \right)

\displaystyle = \frac{1}{\sqrt{2}} \left( | 0 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} + | 1 \rangle_l | ψ_{f \left( z \right)}^{d} \rangle \right)

その後、もう一度、先ほど加えた量子ビットにアダマール変換を行う。

\displaystyle H_l \frac{1}{\sqrt{2}} \left( | 0 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} + | 1 \rangle_l | ψ_{f \left( z \right)}^{d} \rangle \right)

\displaystyle \frac{1}{2} \left\{ | 0 \rangle_l \left( | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} + | ψ_{f \left( z \right)}^{d} \rangle \right) + | 1 \rangle_l \left( | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} - | ψ_{f \left( z \right)}^{d} \rangle \right) \right\}

 

まとめると、

\displaystyle | ψ_{f \left( z \right)}^{d} \rangle _{new} = H_l X_q^{\otimes n} U_{k} S_v X_q^{\otimes n} H_l | 0 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n}

\displaystyle = \frac{1}{2} \left\{ | 0 \rangle_l \left( | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} + | ψ_{f \left( z \right)}^{d} \rangle \right) + | 1 \rangle_l \left( | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} - | ψ_{f \left( z \right)}^{d} \rangle \right) \right\}

 

\displaystyle | ψ_{f \left( z \right)}^{d} \rangle _{new}を測定し、\displaystyle | 0 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n}が得られる確率\displaystyle P_0は、

\displaystyle P_0 = \left| \langle 0 | _l \langle 0| _a ^{\otimes d} \langle 0 | _q ^{\otimes n} | ψ_{f \left( z \right)}^{d} \rangle _{new} \right|^2

\displaystyle = \left| \langle 0 | _l \langle 0| _a ^{\otimes d} \langle 0 | _q ^{\otimes n} \frac{1}{2} \left\{ | 0 \rangle_l \left( | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} + | ψ_{f \left( z \right)}^{d} \rangle \right) + | 1 \rangle_l \left( | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n} - | ψ_{f \left( z \right)}^{d} \rangle \right) \right\} \right|^2

 

\displaystyle = \left| \frac{1}{2} \left\{ 1 + \langle 0 | _l \langle 0| _a ^{\otimes d} \langle 0 | _q ^{\otimes n} \left( \frac{1}{2^{d/2}} \frac{ \prod ^{d-1} _{i=k} \cos \theta_{i} }{a_k} T_d \left( z \right) | 0 \rangle _a ^{\otimes d} | 0 \rangle _q ^{\otimes n} + | ψ_{f \left( z \right)}^{d} \rangle _\perp \right) \right\} \right|^2

\displaystyle = \left| \frac{1}{2} \left\{ 1 + \frac{1}{2^{d/2}} \frac{ \prod ^{d-1} _{i=k} \cos \theta_{i} }{a_k} T_d \left( z \right) \right\} \right|^2

\displaystyle = \frac{1}{2^{d/2}} \frac{ \prod ^{d-1} _{i=k} \cos \theta_{i} }{a_k} T_d \left( z \right) ≦ 1なので、

\displaystyle P_0 = \left| \frac{1}{2} \left\{ 1 + \frac{1}{2^{d/2}} \frac{ \prod ^{d-1} _{i=k} \cos \theta_{i} }{a_k} T_d \left( z \right) \right\} \right|^2

\displaystyle 2 \sqrt{P_0} = 1 + \frac{1}{2^{d/2}} \frac{ \prod ^{d-1} _{i=k} \cos \theta_{i} }{a_k} T_d \left( z \right)

\displaystyle T_d \left( z \right) = \frac{a_k}{ \prod ^{d-1} _{i=k} \cos \theta_{i} } \left( 2 \sqrt{P_0} -1 \right)

 

\displaystyle | ψ_{f \left( z \right)}^{d} \rangle _{new}を測定し、\displaystyle | 0 \rangle_l | 0 \rangle_a ^{\otimes d} | 0 \rangle_q ^{\otimes n}が得られる確率\displaystyle P_0をもとに、\displaystyle T_d \left( z \right)を構築することができた。

 

 

さいごに。

間違いはあれば、ご連絡頂けると幸いです。

 

 

この文章を読んで、面白い!役に立った!...と思った分だけ、投げ銭していただけると嬉しいです。

ofuse.me

 

ブログランキング・にほんブログ村へ
にほんブログ村