投稿

任意のf(x)を計算する量子回路を考える

イメージ
【 任意のf(x)を計算する量子回路を考える 】 Mahadev の論文を読む上で必要な準備をしています。 前回は、ポスト量子暗号のLWE (Learning with Errors)が、古典コンピュータで実装できるアルゴリズムだということを紹介しました。Mahadevの方法は、この古典的に実装可能なLWE暗号を量子コンピュータは破ることはできないということを前提にしています。 Mahadevは、古典コンピュータと量子コンピュータを「対話」させます。正確にいうと、古典コンピュータと人間が一緒にチームを作って、その混合チームを量子コンピュータと対話させます。この対話は「対戦」でもあります。対戦しているのは古典コンピュータと人間の混合チームと単独の量子コンピュータです。 なぜ、人間と古典コンピュータが、同じ仲間になるのかと言えば、量子コンピュータとの関係では、両者は共に同じような能力しか持っていないからなのですが、そこは、「いや、コンピュータ(古典)より、人間がエライ」「そんなことはない。AIをみろ。人間はコンピュータ(でも古典)にかなわない」という議論はあるでしょうが、それは等しく古典的なものの内輪揉めとして、先に進みます。納得いかない人も多いと思いますので、それについては、次回に説明します。 対話あるいは対戦は、古典チームが量子コンピュータにある計算の実行を指示することで始まります。量子コンピュータはそれを計算しその結果を古典チームに返します。古典チームは、その結果を見て新しい指示を量子コンピュータに出します。こうしたことを繰り返します。 量子コンピュータは、古典族と同様に計算を行う能力を持つのですが、その計算のスタイルは、ちょっと変わっています。今回のビデオのセッションは、そのことにフォーカスしています。 関数を計算する量子回路を考えます。量子回路は、量子ゲートから構成されているのですが、量子ゲートは、すべて「ユニタリ性」という性質を持ちます。その結果、量子回路自体も「ユニタリ性」を持つことになります。 量子回路のユニタリ性というのは、簡単に言えば、入力から出力を返す量子回路は、入力と出力を鏡に移したように回路ごと反転させれば、出力から入力を得ることができるという性質です。計算結果の出力から、時間を遡ったように入力を復元できると考えることもできます。これを、可逆性

Post量子暗号

イメージ
【 Post量子暗号 】 「Post量子暗号」という名前は一般的に利用されているのですが、「量子の後の暗号」とか、「量子暗号の次のもの」と受け止められかねない、少しミスリーディングな名前のように、僕は感じています。かといって代わりの名前がすぐに思い浮かぶわけではないのですが。 この名前の中の「量子」という言葉でイメージしているのは、量子コンピュータが現在の暗号技術に対する脅威になりうるという認識なのではないかと思います。 「ショアのアルゴリズムの発見は、暗号技術にとって危機だったが、それを乗り越える暗号技術を我々は必要としている。」ということなら、気持ちはよくわかります。 ですから、「Post量子暗号」のコンセプトが含意していることは、まず、「量子コンピュータによる暗号破りの攻撃を跳ね返すことができること」です。これを「量子耐性をもつ暗号」といったりします。「Post量子暗号」を「量子耐性暗号」と言い換えてもいいのです。 ただ、現在の「Post量子暗号」のコンセプトには、もうひとつ大事な含意があります。残念ながら、そのことは、この名前にはあまり反映されていないように思えます。当たり前すぎるからでしょうか?それは、それが量子コンピュータの上ではなく、現在のコンピュータの技術の上に構築される技術だということです。 これも、ミスリーディングな言い方に聞こえるかもしれませんが、「現在のコンピュータ」を量子コンピュータとの対比で「古典コンピュータ」といいます。「古典コンピュータ」というのは、「そろばん」のことではありません。 「Post量子暗号」技術は、量子コンピュータによる暗号攻撃を跳ね返すことの出来る、古典コンピュータ上の技術です、これは、量子コンピュータとの対比で「古典コンピュータ」の能力を考えたとき、一般的には、ほとんどすべての点で、量子コンピュータが優っていることを考えれば、とても興味深い性質だと思います。決して、当たり前のことではありません。 Mahadevは、まさにこのことを、量子コンピュータのコントロールに利用しようとしたことは、前回述べました。 今回のビデオのセッションでは、「Post量子暗号」の中心的技術である、Learning with Error のアルゴリズムの実装を、ざっとみていきます。これなら、古典コンピュータで実装できることはわかると思います。

Mahadevのアプローチ (2) -- 暗号化

イメージ
【  Mahadevのアプローチ (2)  -- 暗号化 】 「量子計算の古典的検証」問題というのは、簡単に言えば、量子コンピュータを人間のコントロールのもとにおこうと思ってもなかなか思うようにはいかないという問題です。 それには理由があります。複雑な状態を理解する能力にしても、計算能力にしても、我々人間は、何一つ量子コンピュータにはかなわないのですから。 その上、彼らは秘密主義で、自分の手の内を人間には見せません。複雑な内部の状態をチェックしようとすると、別の姿に、簡単な見掛けに、姿を変えてしまいます。  【 なぜ、暗号化技術が必要なのか? 】 Mahadev の「量子計算の古典的検証」問題へのアプローチの特徴は、「対話型証明」の手法の利用とともに、「暗号化」の技術を積極的に利用することです。 なぜそこに「暗号化」技術が出てくるのでしょう? それは、圧倒的な力の差がある量子コンピュータに対して、彼らを出し抜いて人間が少しでも優位に立つ手段として「暗号化」が利用できる可能性があるからです。 彼らが秘密主義なら、我々も、彼らに対して「秘密」を持つことができると、状況は少し変わります。  【「ポスト量子暗号」技術の特徴 】 量子コンピュータは、既存の暗号技術への脅威として意識されてきました。ショアのアルゴリズムは、素因数分解や離散対数問題を解くことが難しいことに基礎を置く、RSA暗号や楕円曲線暗号を簡単に解きうるからです。 ただ、その中で追求されてきた「ポスト量子暗号」技術は、次のような特徴を持ちます。  「普通のコンピュータで実現できて、量子コンピュータでも破られない暗号」  【 「ポスト量子暗号」技術を 優位性として利用する 】 量子コンピュータでも破れない暗号があり、かつ、その暗号の解き方を我々が知っているなら、それは、量子コンピュータに対する我々の数少ない優位性として利用できます。 例えば、ポスト量子暗号技術 LWE( Learning with Errors ) で暗号化したデータを、量子コンピュータに送り込みます。そしてそのデータの処理を量子コンピュータに実行させます。 量子コンピュータは、その暗号化されたデータが本当はどういうデータなのかはわからないまま、暗号化されたままのデータを処理した結果を人間に返します。 我々は、そのデータの元の形を知っていますので

Mahadevのアプローチ (1) -- 対話型証明

イメージ
【 Mahadevのアプローチ (1) -- 対話型証明 】 前回、普通のコンピュータのデバッグや動作検証のようなやり方は、量子コンピュータの検証には使えそうもないという話をしました。 そのことは、現在の量子コンピュータが、普通のコンピュータと対比でいうと、ハードとソフトの分離もされていないし、OSとアプリケーションの区別もない状態にあることと、少し関係はあります。ただ、量子コンピュータには開発キットもデバッガーもないことを言いたかったわけではありません。  【 原理が異なる二つのシステムの境界での相互作用 】 「量子計算の古典的検証」の問題は、原理が異なる二つシステムの境界での相互作用はいかにして可能なのか、あるいは、それにはどのような限界があるのかという、量子コンピュータと我々の関係にとって極めて本質的な問題です。 量子コンピュータの状態の遷移を正確には追えないだけではありません。我々は、現状では、量子計算の出発点となる、任意のqubitの状態を量子コンピュータ上にセットするというプリミティブな操作でも、その検証を含めれば、思い通りには量子コンピュータをコントロールできていないのです。 Mahadevの「量子計算の古典的検証」問題の肯定的解決は、こうした現状を変えて、量子コンピュータに対する人間のコントロール能力を大きく拡大する可能性を秘めているのです。  【 Mahadevの二つのアプローチ 】 Mahadevは、「古典的検証問題」に二つの方向からアプローチします。 第一のアプローチは、今回のセッションで紹介する「対話型証明 = Interactive Proof 」の手法を使います。「検証問題」の解決を可能にする、量子コンピュータと人間の「対話のプロトコル」を見つけようとします。 第二のアプローチは、量子コンピュータでも破れないと考えられている、「Post量子暗号」、先日セミナーを行ったLWE(Learning with Errors)を使います。量子コンピュータの中に、量子コンピュータも改変できない、我々は知っているが量子コンピュータには秘密の状態を作ります。これについては次回のセッションで。  【 Interactive Proof 紹介 】 Interactive Proofの想定は、いささか奇妙なものです。Interactive Proofには、二

問題の難しさ

イメージ
【 問題の難しさ 】 Mahadevは、量子コンピュータが行う計算についての最も基本的な問題である、「量子計算の古典的検証問題」を解きました。 我々人間が、量子コンピュータにある計算を実行させた時、量子コンピュータが我々の指示通りに計算を行ったのか、我々の予想もしなかった量子の奇妙な振る舞いで我々の意図とは違うデタラメな(我々にとって)計算をしたのかを、我々人間がチェックできるのかという問題は、ひとまず「大丈夫。人間がチェックできる」という形で解決されました。 ここでは、まず、この問題が難しい問題であることを確認してみたいと思います。 我々が、プログラムをデバッグしようとする時、 まず、プログラムの中の変数がどのような値を取っているかをチェックします。プログラム実行中のコンピュータの「状態」は、各変数へどのような値が割り当てられているかで決まります。 次に、プログラムのステップが進んだ時の、変数の値の変化をチェックします。変数の値の変化は、コンピュータの状態の変化をもたらすのですが、コンピュータの「ふるまい」というのは、この状態の変化の継起する系列に他なりません。 コンピュータの振る舞いが、正しいものかは、最終的には変数への値の割り当てに帰着する状態の変化を追いかければチェックできます。 n個のqubitからなる量子コンピュータの状態は、2^n 個の基底からなるベクトルで表現されます。それは、普通のコンピュータで言えば、 2^n個の変数があることに相当します。 我々は、この2^n個の変数の変化をトレースできるでしょうか? 普通のコンピュータ・プログラムで変数の数nが 50を超えるのは珍しくないかもしれません。ただ、かつての Google IBMの論争は、2^53個の変数をどうやってトレースするかの論争と見ることができます。nが大きくなるにつれ、 2^n個の変数のトレースは、我々の手に余るようになるのは明らかです。 量子コンピュータの働きをチェックし検証することの難しさは、実は、もう一つあります。それは、我々は、量子コンピュータの状態を正確に知ることはできないという問題です。 量子コンピュータの状態は、先に見たように2^n個の状態の「重ね合わせ」になっているのですが、その状態を知ろうとして観測すると、その「重ね合わせ」の状態は失われてしまいます。 観測によって得られる

浅海ゼミ 第16回の講演ビデオと講演資料公開しました

 【 浅海ゼミ 第16回の講演ビデオと講演資料公開しました 】  浅海ゼミ「クラウドアプリケーションのためのオブジェクト指向分析設計講座」第16回の講演ビデオと、講演資料を公開しました。 https://www.marulabo.net/docs/asami16/ 今回のテーマは 「分析」です。要求モデルから、分析モデルを作成する作業分野である分析について説明します。今回はユースケースからシステムの概観を抽出するシナリオ分析を取り上げます。  次回にコンポーネントとシステム・アーキテクチャとして具体化したモデルを作成するコンポーネント分析を取り上げる予定です。  講演ビデオ  https://youtu.be/GZQQCcDO4zg  は、次のような構成になっています。  00:00:00 開始  00:01:10 分析の位置づけ  00:10:26 分析と設計  00:17:37 シナリオ分析  00:30:59 シナリオ分析の実践  00:36:52 まとめ 資料は、次からアクセスできます。 MaruLabo:   https://www.marulabo.net/docs/asami15/ SlideShare:  https://www.slideshare.net/asami224/15-253173625 浅海ゼミの講座の全体構成はこちらを参照ください。 https://www.marulabo.net/docs/asami/

「量子計算の古典的検証」問題とは何か?

イメージ
【「量子計算の古典的検証」問題とは何か? 】 「量子計算」というのは、量子コンピュータが行なう計算のことです。「古典的検証」を行うのは人間です。人間が古典的手段を使って、量子コンピュータが行なった計算が正しいかどうかをチェックすることを、「量子計算の古典的検証」と言います。 「古典的手段」とは、主要には、古典的コンピュータのことを指します。これも、ピンとこない言い回しかもしれません。それは、量子コンピュータとの対比で古典的と言われているだけで、最新鋭のスーパーコンピュータを含む、普通のコンピュータのことです。 「量子計算の古典的検証」とは、量子コンピュータの行なった計算が正しいものであるかを、人間が普通のコンピュータを使って、確かめると言うことです。  【 ショアのアルゴリズムの場合 】 量子コンピュータのアルゴリズムとして有名な素因数分解を行う「ショアのアルゴリズム」の場合でしたら、「量子計算の古典的検証」は簡単です。 入力した数に対して量子コンピュータが出力した素因数を、コンピュータで実際に掛け算を行なって、それが入力したものと一致しているか確かめればいいわけですから。 ただ、量子コンピュータが行う計算の正しさが、コンピュータで簡単にチェックできるとは限りません。  【 Google IBM論争の場合 】 2019年のGoogleの量子優越性実証実験についての、GoogleとIBMの論争は、直接的には、50数個のqubitを持つ量子コンピュータの「古典的検証」の手法をめぐるものでした。 Googleは、検証にはスーパー・コンピュータを使っても「一万年」かかるとしたのに対して、IBMはやり方を工夫すれば、「二日半」で検証できると主張しました。 IBMは、現在、400 qubitの量子コンピュータを開発しているといいます。こうしたマシンでの「量子計算」の「古典的検証」は、かつて IBMがGoogleに対して主張したような手法で、高速化できるのでしょうか?  それは、不可能です。  【 ファインマンの場合 】 量子コンピュータのアイデアは、ファインマンの古典的なコンピュータ(スーパーコンピュータを含む普通のコンピュータのことです)では、量子の法則に従う自然をシミレートできないという問題意識から始まりました。  「だから、量子の法則に従う量子コンピュータを作ろう!」 そ