2023年9月20日水曜日

生成AIに関するMIT App Inventor Workshopが神奈川工科大学で開催

 MIT App Inventorでは、いち早くChatBotImageBotなどの生成AIを組み込んで、生徒、学生、一般人が利用できる環境を提供している。それに関するワークショップが、日本では初めて、神奈川工科大学で5日間(2023/9/6〜12)に渡り開催された。生成AIのうちでも、自然言語からアプリを生成するAptlyは、まだ研究開発中のものであるが、今回(このようなワークショップとしては)初めて、受講生が試用できるよう設定していただいた。
 MIT AppInventorチームのソフトウェア開発者であるDavid Kimさん(in person)とAngie Zhouさん(online)が講師となり、情報、生命、電気、機械など多様な分野の学生が多数、熱心に受講した。最終日には、受講生が各自のアイディアをApp Inventorで実現したプレゼンも行われた。

 最終日の冒頭、MITの著名なComputer Science教授で、App Inventor創始者であるProf. Hal Abelsonから、受講生を激励するメッセージをライブ出演でいただいた。さらに同チームのDr. Evan Patton、Jeff Frilich、Dr. Natalie Laoの3名の専門家からも同様に貴重なメッセージがあった。これは、MIT App Inventorチーム全体として、本Workshopに強い関心を持って対応していただいた証であり、特筆すべきことであった。

 講師のDavidさんのTweetはこちらにあります。また、MIT App Inventor Facebookにも同様の投稿があります。神奈川工科大学の日本語ニュース英語版ニュースにもこのWorkshopの模様が載っています。

 このワークショップの詳細レポート(8ページ)は、ここには掲載していないが、特にご関心のある方はご連絡いただきたく。

MIT App Inventor Generative AI workshop at 神奈川工科大学

2023年9月8日金曜日

量子ビットの反転エラーの訂正(Quantum Bit-Flip Correction)

 量子テレポーテーションを利用した量子ビットのbit-flipエラー訂正については、下記に詳しく述べた。

 その際は、量子ビット反転エラーの検出(どのビットが反転したのかの)量子回路を説明した。だが、訂正の仕方は説明しただけで、その回路は示していなかった。今回は主にそれを説明する。エラー検出とその訂正の原理については上記URLを参照いただきたく、本記事では省略する。量子回路シミュレータQiskitのComposerを使って検討した。

AliceからBobへ転送する量子ビットの状態
 量子テレポーテーションの場合と同じく、物理的に量子ビットを送信するのではなく、その状態を転送するのである。その途中でエラー(ここではbit-flipに限る)が発生した場合、それを検出し、かつそれを自動的に訂正したい。

 まず、図1にAliceから転送したい量子ビット状態を示す。ここでは一例として、(a)のように、|0>にRYとRZゲートを適用した。エラーの検出は、古典ビットの世界で使われるパリティチェックに基づく。そのために元の量子ビットの複製を2つ作りたいのだが、それは量子複製不可定理により、できない。そこで、(b)に示すように、ancillaビットを2つ用意して、entangledな状態を作る。それをBobへ送り出す。もしも、途中でbit-flipエラーが発生しなければ、Bobは、0.75|000> + 0.25|111>という重ね合わせ状態を、そのまま受け取るはずである。

bit-flipエラーの訂正(ancillaビットの測定による)
 エラーの検出方法は、上記の如くすでに述べたので略す。発生したエラーを訂正する回路を図2の赤枠に示す。ここでは、上に述べた2つのancillaビットの測定を行い、その結果に基づいて、該当する量子ビットをパウリXゲートで反転させ、元通りしている。
 この例では、2番目のancillaビットq[2]がbit-flipを起こしたとした。それが正しく訂正されていることは、図1に示した元の3量子ビットシステムの状態が、図2の実行結果として、そのまま保たれていることから分かる。他のq[0]とq[1]に発生するエラーも同様に訂正される。

bit-flipエラーの訂正(Toffoliゲートの利用)
 上記のように、明示的にancillaビットを測定せずに、エラー訂正することもできる。図3に示すように、CNOTとCCNOTを組み合わせている。CCNOTはToffoliゲートとも呼ばれる。Toffoliは2つの制御ビットが共に|1>の時だけNOTが働く。どんな時に使うのだろうかと思っていたが、今回がその好例となったので記録しておきたい。

古典ビットレジスタと量子ビット状態ベクトルを表す円盤
 上の図2では、古典ビットレジスタに測定結果を格納したが、初めての人にはその使い方が分かりにくい。そこで、図4に要点をまとめた。
 また、右端にある円盤は、測定結果が|1>となる確率(青部面積)とPhase angleを示す。さらに、実線の円はentanglementの有無を意味する。これによれば、送信された3量子ビットはentangledの状態が維持されているが、2つのancillaビットとはもつれ関係がない。それゆえに、このentanglementに影響を与えずに、ancillaビットを測定できるのである。
 図5は、エラーが起こってもそれが訂正され、Aliceの送信時の量子状態ベクトルがそのままBobに伝わったことを説明している。
bit-flipイメージ(Bing)

Qiskit Quantum Labの Noise Modelの利用
 ここまでは、[1]に基づき、Bit-Flipエラーを起こしたいqubitの後ろに、Xゲートを置いてエラーを起こし、テストを行った。だが、Qiskit Quantum Labでプログラミングする場合は、NoiseModelクラス利用して、柔軟に、確率的にエラーを発生させることもできる。もっと複雑な量子回路でのエラー発生の影響を調べるのに有用であろう。その具体的な利用法は、[2]や[3]に掲載されている。また、[2]には、bit-flipの他にphase-flipも説明されていて参考になる。

参考文献
[1] Chris Bernhardt: Quantum Computing for Everyone, The MIT Press, 2020.
https://www.chrisbernhardt.info/
[2] 束野仁政, 量子コンピュータの頭の中、技術評論社、2023年6月
[3] J. L. Weaver & F. J. Harkins, Qiskit Pocket Guide, O'Reilly, 2022-06-15.

-----------
Private Info
Qiskit: Composer files: ErrorCorrec1 & ErrorCorre2, 2023-09-08
Quantum Lab: Chris_Book/Bit_Flipxxxxxx.ipynb

2023年9月3日日曜日

量子テレポーテーションをQiskitでもやってみる

 量子テレポーテーションに関しては、これまでに何度か記事を書きました。例えば次のようなものです:
 これらの記事では、主に量子回路シミュレータQniを使って、説明してきました。内容はほぼ同じなのですが、今回は、Qiskitを使ってみました。新たに分かったこともあるので、記録しておきたいと思った次第です。
地球と月の間の量子テレポーテーション

量子ビットと古典ビットの並び順の相違
 これは(Qiskitに限らず)混乱しやすいので、改めて図1にまとめた。(本図は、私のオリジナル作品)まず、複数の量子ビットシステムのテンソル積での並び順であるが、量子回路図では、これを右側に起こして直立させたものになる。次に、これらの量子ビットの測定結果(古典ビット列)の並び順は、これを右側へ倒して水平にしたものと対応する。すなわち、テンソル積と古典ビット列では、上位と下位が逆転する。これは、慣例となっているので、注意する必要がある。図3にもこれが表れる。

量子テレポーテーションで転送したい量子ビット状態の設定
 任意の量子ビット状態を転送できるのだが、ここでは、一例として、図2に示す量子状態とする。すなわち、量子ビット|0>に対して、Y軸周りに60°回転、さらにZ軸周りに60°回転させた状態を設定した。
 QiskitではComposerとQuantum Labの2つが使える。どちらでも、量子状態ベクトルを表示できる。何か詳細な設定が必要であれば、上図のように、Quantum Labでコーディングすることができる。もちろん、次の図3と同じ量子回路図も、Quantum Labで書くこともできる。

量子テレポーテーションをQiskit Composerでシミュレートする
 さて、ここからが本論なのであるが、原理的なことはすでに上記ブログ記事に十分書いているので、重複する部分は省略する。図3は、図2で設定した量子ビット状態を、AlcieからBobへ転送する様子である。下段には、Aliceの測定結果としての古典2ビット情報の発生確率と、AliceとBobの3量子ビットシステムの確率振幅が表示されている。
 この図で最も重要な点は、Aliceの量子ビット状態①が、Bobの量子ビットに設定されることである。つまり、①と⑥は全く同一の状態である。しかし、①の状態はすでに消滅して⑦のようになっている。これは量子複製不可定理に則っていることなのである。

 すでに既報では、Aliceが②で測定を行う直前の状態は、4通りあり、それぞれ1/4の確率で発生することを示した。図下段の③からそのことが確認できる。これは、Composerが自動的に②の測定を1024回実行(shot)した結果なのである。つまり、測定結果の古典ビット列000、001、010、011の出現確率がそれぞれほぼ等しく、25%程度となっており、それらの合計は100%であることが実証された。なお、3ビットの並びの最上位は0となっているが、これは、Bobの量子ビットがこの時点では測定されていないことによる。また、②の測定の直前に、Aliceが自分の2量子ビットに逆Bell回路を適用していることにも注意する。

 最後に、右端の3量子ビットシステムの状態をみてみよう。この例では、②の測定結果が10であり、|q[2]>|1>|0>という状態になっている。測定結果によらず、q[2]の状態は必ず⑥(すなわち①)となる。そうなるように、Bobによる④の操作(制御付き量子ゲート)が設定されているのである。q[2]が|1>となる確率が0.25(|0>となる確率は0.75)であることは図2に示したので、⑤の確率振幅の分布は納得できるであろう。

Qiskit Composerのその他の機能
 図3の②での一回の測定結果として、特定の2ビットパタンが必要な場合は、図4上部のVisualizations seedを変更して試すことができる。また、図中の量子ビット状態を示す円盤には、量子ビットのpurity(量子もつれの有無)を示す情報も含まれるので、量子回路の検証に利用することができるだろう。