目次。
- 目次。
- はじめに。
- ニューラルネットワーク(ディープラーニング)に活性化関数(非線形関数)は、なぜ必要?
- 読んだ論文 Marco Maronese, Claudio Destri, Enrico Prati: Quantum activation functions for quantum neural networks. Quantum Information Processing (2022)
- 内容。
- さいごに。
この文章を読んで、面白い!役に立った!...と思った分だけ、投げ銭していただけると嬉しいです。
【宣伝】ギターも歌も下手だけど、弾き語りをやっているので、よければ聴いてください。
はじめに。
前回に引き続き、量子ニューラルネットワークの話。前回書いた文章『【量子機械学習】量子ニューラルネットワーク(ディープラーニング)の最急降下法の話。』もよければどうぞ。
前回も同様のことを書いたが、2022年のノーベル物理学賞は、「量子もつれ光子対を用いた、ベルの不等式の破れの実験的検証。ならびに量子情報科学の開拓」だった。量子情報科学の分野から初めて、ノーベル賞が出たので、嬉しくなって、このような文章を投稿することにした。
一般向けではないので、ご容赦ください。量子情報科学の本を読みとおすことができれば、この文章も読めると思います。そして、この本を読めば、2022年のノーベル物理学賞のことがよくわかります。
「高校数学の知識がない人が量子情報科学の論文が読めるようになるために、どういう本を読めばいいか」というのを以下の文章の最後の方に書いたので、よければどうぞ。
量子コンピュータ上での最急降下法の論文も量子敵対生成ネットワークの論文も、以下の文章で紹介しているので、よければ。
==========
ちょくちょく宣伝しているが、新型コロナウイルスの論文を使って、「研究者がどうやって未知のウイルスの正体を暴くのか?」について説明した文章を一般の人向けに書いたので興味のある方はどうぞ。
blog.sun-ek2.com
加えて、PCR検査の仕組みと、それに代わるかもしれないゲノム編集技術を応用した新しい検査方法に関する論文を一般向けに説明したので興味のある方はどうぞ。
blog.sun-ek2.com
さらに、試験管内で新型コロナウイルスのスパイクタンパク質を進化させて、色々な変異体を取ってきたという論文を一般向けに説明したので興味のある方はどうぞ。
==========
ニューラルネットワーク(ディープラーニング)に活性化関数(非線形関数)は、なぜ必要?
ニューラルネットワークは、入力の重み付き線形和を活性化関数(非線形関数)の引数として与え、その結果を出力するパーセプトロンが大量に集まったものである。
活性化関数(非線形関数)がないと層をいくら重ねても、1層だけのニューラルネットワークと差がなくなってしまう。
例えば、を入力し、を出力するパーセプトロンが2個しかない2層のニューラルネットワークを考える。
1つ目のパーセプトロンは、
2つ目のパーセプトロンは、
ネットワーク全体では、
となるが、、とおけば、
と書き換えることができる。
…2層のニューラルネットワークを作ったつもりだったが、これって、1層のニューラルネットワークと変わらなくね?
これは、2層に限った話ではなく、3層、4層、…と増えていっても同じ。また、1つの層の中のパーセプトロンの数が多くなっても同じことがいえる。このままだと、ニューラルネットワークをどれだけ複雑にしても、線形関数しか表現することができない。
一方で活性化関数(非線形関数)を1つ目のパーセプトロンに使うと、全体のネットワークは、
となる。
先ほどとは異なり、このは、1つの単純なパーセプトロンで表現することができない。逆に、活性化関数(非線形関数)を使うと、2つの単純なパーセプトロンでより複雑なものが表現できるようになるとも言える。
量子ニューラルネットワークも同様。を入力し、を出力するユニタリ変換が2個あるのニューラルネットワークを考える。
1つ目のユニタリ変換行うと、
2つ目のユニタリ変換行うと、
となるが、、とおけば、
と書き換えることができる。
…2個のユニタリ変換を使ったが、これって、1個のユニタリ変換でも良くね?ユニタリ変換をいくら増やしても、結局、に1つのユニタリ変換を作用させていることになる。
一方で活性化関数(非線形関数)とを1つ目のユニタリ変換後に、導入すると、
となる。これを1つの単純なユニタリ変換で表すことはできない。
昔、ニューラルネットワークに必要な活性化関数(非線形関数)は、量子コンピュータ上で作れないかもしれないと考えられていた。
量子コンピュータの土台は、量子力学。量子力学の土台は、線形代数学である。線形代数学は、その名の通り、線形関数を扱う学問。「線形関数を扱う学問が土台となっている量子コンピュータで非線形関数?」という具合に思われていた。
しかし、量子コンピュータでも、非線形関数を作ることが出来るということが明らかになった。有名なのは、量子ニューロンの論文だと思う。
量子ニューロンを使えば、シグモイド関数っぽい関数で表される確率振幅を持った量子状態が重ね合わされた出力を得ることが出来る。
読んだ論文 Marco Maronese, Claudio Destri, Enrico Prati: Quantum activation functions for quantum neural networks. Quantum Information Processing (2022)
この論文の手法で、任意の活性化関数(非線形関数)をマクローリン展開で近似した関数で表される確率振幅を持った量子状態が重ね合わされた出力を得ることが出来る。
内容。
まずは、以下の式を満たすを求める。
成分が全て実数のベクトルとを考える。
これらは、以下の式を満たす。
また、とを以下のように定義する。
との内積を取ると以下のようになる。
この式に、との式を代入すると、
とすると、
となる。
とを満たすユニタリ変換は、アダマールゲート、制御Xゲート、Tゲートを使えば、作ることができる。詳しくは、以下のwebサイトを参照のこと。
とにとが入っているのは、とをの位相差を消し去るため。とは、内積には現れないため、この2つに位相差を押し付けることができる。
(ここのところは、ちゃんと理解できていない…)
~~~~~~~~~~
次に、以下の式を満たすユニタリ変換を求める。
というのは、レジスタαにある量子ビット列を制御量子ビットにするという意味。
まず、にを作用させると、
なので、
最後の項を取り出して計算を進めると、
これを先ほどの式に代入すると、
この式を繰り返し使用すると、
~~~~~~~~~~
次に、以下の式を証明する。
~~~~~~~~~~
次に、数学的帰納法で以下の式を証明する。
、
のとき、
よって、のとき、は、成立する。
のとき、
が成立すると仮定する。
さて、を作用させると、基底は以下のように変換される。
→
→
→
→
つまり、を作用させて、と内積を取ると、、以外の項は消滅する。
を、、それ以外の項に分けて書き下すと、以下のようになる。
と表すことができる。現時点では、、は不明。この式は、を満たしている。
のとき、
これ以降の計算は、の時と、ほぼ変わらない。結果は、次のようになる。
もし、が成り立つのであれば、が成り立ち、証明は終了する。
次にを示す。の証明で出てきた以下の式を変形していくと、
なので、
と、の内積を取ると、
よって、の証明は終了。
のときも成り立つので、全てので、
、
が成り立つ。
これで、量子コンピュータ上で、好きな活性化関数(非線形関数)を作る準備は完了した。
~~~~~~~~~~
好きな活性化関数(非線形関数)のマクローリン展開を次のように表す。
は、項の中で最も低い次数を表している。
少し変形すると、
となる。
のとき、のときとし、先ほどの式を変形していく。
よって、
次は、を満たすようなを求める。
よって、作りたい活性化関数(非線形関数)のマクローリン展開の係数を決定すれば、ユニタリゲートのが決まる。は、が引数になっていることに注意。そのため、から順番にの値を決めていく。
~~~~~~~~~~
数式を弄って、今まで得られた結果をもう一度、記載する。
これらを組み合わせると、以下のようになる。
にを作用させることによって、好きな活性化関数(非線形関数)を定数倍した確率振幅を持つ量子状態が重ね合わさった出力を得ることができる。
~~~~~~~~~~
しかし、活性化関数(非線形関数)を出力に使いたい場合、このままでは上手くいかない。この出力を測定し、だった場合の確率は、であり、ではない。そして、位相情報が失われているので、からを構築することはできない。次は、この問題を解決する。
にを加え、この量子ビットにアダマール変換を行う。
そして、先ほど加えた量子ビットを制御ビットとし、制御ユニタリ変換を行う。
その後、もう一度、先ほど加えた量子ビットにアダマール変換を行う。
まとめると、
を測定し、が得られる確率は、
なので、
を測定し、が得られる確率をもとに、を構築することができた。
さいごに。
間違いはあれば、ご連絡頂けると幸いです。
この文章を読んで、面白い!役に立った!...と思った分だけ、投げ銭していただけると嬉しいです。