2023年8月29日火曜日

Reconfirmation of quantum teleportation using Qni

Quantum teleportation has already been covered in detail in this article. This time, I would like to reconfirm the point by executing it with the quantum circuit simulator Qni.

In the previous article, Bob applied his I-, X-, Z-, and Y-gates to his qubits, corresponding to the classical 2-bit information 00, 01, 10, and 11 received from Alice. This allowed Bob to obtain the state of the qubit sent by Alice. Logically this is fine. However, when running on the Qni, I found it easier to apply the X and Z gates in succession instead of the Y gate. The description will be made accordingly.

(1) Use of CX (Controlled X) and CZ (Controlled Z)
Considering the gate that Bob should apply to his qubit according to 00, 01, 10, 11 mentioned above, we arrive at the following simple conclusion [3]:

  step1: If the lower bit of the received 2-bit information is 1, the X gate is applied.
  step2: If the upper bit of the received 2-bit information is 1, the Z gate is applied.

According to this, the CX gate and CZ gate can be applied as follows. Note that either |0> or |1> is input to the CX and CZ control lines (other qubits are not input).
As an example in the above diagram, ① is set with the RX(π/3) gate, but any state is acceptable. There are two points worth noting here. First, the state of qubit ① that Alice wants to send to Bob vanishes in Alice's measurement shown in the center, resulting in ②. Nevertheless, the state of ① appeared in ③ by applying the gate by Bob shown on the far right. It matches the No Cloning Theorem. This is exactly what quantum teleportation is.

Second, regardless of the measurement results (classical 2-bit information) by Alice in the central part of the figure, Bob on the far right only needs to apply CX and CZ continuously. However, when Bob is far away from Alice, it is difficult for us to imagine Bob receiving classical 2-bit information from Alice through normal communication. To clarify the image, the following alternative (explicitly checking the classical bits) can also be used.

(2) Explicitly examine classical 2-bit information and apply necessary gates
In Qiskit, etc., classical bit registers can be referenced, but in Qni, the corresponding processing can be realized by adding an execution condition (if) to the gate as shown in the figure below.

In this example, since the measurement result by Alice in the center of the figure is "10", it can be seen that the X gate applied by Bob does not work (it is dark) and only the Z gate is applied.

In this article, I referred to [1] for the principle and mechanism of quantum teleportation, [2] for the Qni simulation, and [3] for the Qiskit simulation.

References
[1] Chris Bernhardt, “Quantum Computing for Everyone”, MIT Press, 2020
https://www.chrisbernhardt.info/
[2] Qni; https://github.com/qniapp/qni
[3] Satoyuki Tsukano, "Inside the mind of a quantum computer", Gijutsu-hyoron-sha, June 2023. (in Japanese)

2023年8月27日日曜日

ChatGPT Plusで自由記述形式からJSONを生成

 何らかの自由形式文のファイルに対して、適当なタグを設定してJSON形式ファイルを生成したい場合があります。例えば、こちらの過去記事は、参考資料[1]の植物の特性を記述した自由形式文をJSONに自動変換する試みでした。そこでは、形態素解析と係り受け解析を利用したプログラム開発が必要でした。しかし、ChatGPTの出現によって、状況は一変しました。そういったプログラムをJavaなどで作成するまでもなく、日本語(英語でも良いが)で僅か数行の指示文(プロンプト)を与えるだけで、それが可能になってしまいました!プログラマー失業の危機かもしれない!
ChatGPTで生成した量子コンピュータのイメージ
 以下にChatGPT(ただし、GPT-4利用の場合)を使ったそのような例をメモとして残しておきたいと思います。

私の指示文(プロンプト)
 以下の例文に対して、4行ほどの日本語のプロンプト(これはsecretです)を与えた。
 今後は、どのようなプロンプトを与えるのかが重要になり、「企業秘密」になってくるかもしれない。ここでもそのように秘密にしました!
 以下に、5つの例文([1]から引用)に対して、ChatGPTが生成したJSON形式を載せます。

ChatGPT(GPT-4)からの回答
--------------------------------------------------------------------------------------
[a] ニッケイ: 樹皮に芳香があり、葉は長楕円形で、液果が黒く熟す。
--------------------------------------------------------------------------------------
  "ニッケイ": {
    "全般": "樹皮 芳香",
    "": {
      "what": "長楕円形",
      "how": ""
    },
    "": {
      "what": "",
      "how": "",
      "when": ""
    },
    "果実": {
      "what": "液果",
      "how": "黒 熟す"
    }
  }

[myコメント] タグ"全般"の値が適切ですね。

--------------------------------------------------------------------------------------
[b] キクザキイチゲ: 3出複葉が3輪生し、茎先に白いキクのような花の咲く春植物。
--------------------------------------------------------------------------------------
  "キクザキイチゲ": {
    "全般": "春植物",
    "": {
      "what": "3出複葉 3輪生",
      "how": ""
    },
    "": {
      "what": "白い キクのような",
      "how": "茎先 咲く",
      "when": "春"
    },
    "果実": {
      "what": "",
      "how": ""
    }
  }

[myコメント] タグ"花"のサブタグ"when"の値が"春"なのは適切ですね。

--------------------------------------------------------------------------------------
[c] オモト: 葉は厚くて縁が波打ち、淡黄緑の花が円筒状に咲き液果は赤い。
--------------------------------------------------------------------------------------
  "オモト": {
    "全般": "",
    "": {
      "what": "厚い 縁 波打ち",
      "how": ""
    },
    "": {
      "what": "淡黄緑 円筒状",
      "how": "咲く",
      "when": ""
    },
    "果実": {
      "what": "液果",
      "how": "赤い"
    }
  }

[myコメント] "葉"のサブタグ"what"の値"波打ち"は、"how"の値の方がいいかも。でも全体的にgoodですね。

--------------------------------------------------------------------------------------  
[d] バイカオウレン: 掌状複葉の小葉は5枚あり、梅に似た白い花が単生し、袋果ができる。
--------------------------------------------------------------------------------------
  "バイカオウレン": {
    "全般": "",
    "": {
      "what": "掌状複葉 小葉 5枚",
      "how": ""
    },
    "": {
      "what": "白い 梅に似た",
      "how": "単生 咲く",
      "when": ""
    },
    "果実": {
      "what": "袋果",
      "how": "できる"
    }
  }

[myコメント] "花"のサブタグ"how"の値"咲く"は、原文には無いところが面白い。

--------------------------------------------------------------------------------------  
[e] ポーチュラカ: 多肉質で地を這い葉はへら形で、枝先に多彩な花が咲く。
--------------------------------------------------------------------------------------
  "ポーチュラカ": {
    "全般": "多肉質 地這い",
    "": {
      "what": "へら形",
      "how": ""
    },
    "": {
      "what": "多彩",
      "how": "枝先 咲く",
      "when": ""
    },
    "果実": {
      "what": "",
      "how": ""
    }
  }

[myコメント] タグ"全般"の値を設定してくれたところが嬉しい。

感 想
 なかなか、まずまず、ですね。このような結果を得ることは、普通の形態素解析と係り受け解析では難しく、膨大なコーパスの学習とattention機構がなせる技だと感じます。
 当然ながら、プロンプト文をどのように与えるかで、結果はかなり異なります。満足できない場合は、試行錯誤である程度改善できるのではないでしょうか。あくまで、道具としてどのように使っていくのか、ということですね。

参考資料
[1]渡辺坦:植物の名前を探しやすい デジタル植物写真集
http://plantidentifier.ec-net.jp/

2023年8月19日土曜日

ChatGPT Plusで和文からの画像生成を楽しむ

 前報では、ChatGPT Plus(有料版)にNASAの公開画像を検索できるプラグインSpace Photo Explorerを組み込んで試行した。今回は、日本語文から画像を生成する(ためのプロンプトを生成する)プラグインPhotorealisticを試した。もっと手軽に使えるMicrosoft BingImage Creattorに比べて、生成されたプロンプトを確認したり、修正したりできる柔軟性が好まれるのかもしれない。

日本語文から画像を生成する例
 一つの例を示す。日本語で次のように要求した:
"量子もつれに基づく量子テレポーテーションのイメージを描いて"

これだけで、Fig.1に示すような画像を生成できた。
 画像は無数に生成することができるが、このうち、(a)の画像は「量子もつれ」を強調したものになっているようだ。一方、(b)の画像は、別々の研究室にいる二人の間で、「量子テレポーテーション」が起こっていることを想起させる。両画像とも、与えた日本語の意図をよく汲み取っているように思われる。驚くべき結果ではなかろうか!

日本語文から画像を生成するフロー
 以下のようなフローで画像が生成される。
山本の要求:量子もつれに基づく量子テレポーテーションのイメージを描いて
ChatGPT(GPT-4 + Photorealistic)の応答(画像生成用プロンプト):
 Quantum entanglement visualized as two intertwined particles glowing in a deep space setting, medium: hyper-realistic photography, style: reminiscent of the visuals from the movie "Interstellar", lighting: soft ambient glow highlighting the particles with a backdrop of distant stars, colors: deep blues, purples, and shimmering whites, composition: shot with a Canon EOS 5D Mark IV DSLR camera, EF 85mm f/1.8 lens, Resolution 30.4 megapixels, ISO sensitivity: 100, Shutter speed 1/125 second, with a focus on the entangled particles in the center of the frame --ar 16:9 --v 5.1 --style raw --q 2 --s 750
Stable Diffusionによる画像生成:
 上記で生成されたプロンプトを、画像生成ソフトStable Diffusionなどへ入力する。その際、(多数公開されている)学習済みモデルから、適当な物を選択する。この選択次第で、画像の質や傾向がかなり変わる。generateボタンを押すと、暫くすると画像が生成される。Fig.2はその一例である。
 Stable Diffusionの実行は、web上でもできるようだが、私の場合は、ローカルマシン(M1 Mac mini)にその実行環境を構築して使った。その際、M1独自のGPUの性能が遺憾無く発揮され、思っていたよりもかなり高速に画像が生成できた。

日常生活の画像も
 さて、「量子もつれ」みたいな専門的話題ではなく、もっと日常生活でのシーンも画像にしてみよう。こんな感じになった。
山本の要求:夏休みの宿題に励む小学生の姿
ChatGPT(GPT-4 + Photorealistic) & Stable Diffusion:Fig.3の図を生成した。

山本の要求:避難訓練で大きなビルから逃げる人々の様子
ChatGPT(GPT-4 + Photorealistic) & Stable Diffusion:Fig.4の図を生成した。
感 想
 自然言語(英語など)でプロンプトを作成し、画像を生成させるソフトはいくつかあるのだが、上記のStable Diffusionはフリーソフトであり、原則として、生成された画像に対する著作権の問題も発生しないようである。
 問題は、そのプロンプト(仕様記述+画像生成制御パラメータ設定)の作成がとても面倒なことであった。それを、ChatGPTのプラグインPhotorealisticが見事に解決した!上記のように、日本語で要求与えるだけでよくなったのだから。
 だが、日本語の要求文次第で、いくらでも生成される画像の構成や質が変わる。経験を積んで適切に利用していくことが求められるだろう。あまりのめり込んで、時間と電力の浪費とならぬように。

2023年8月16日水曜日

ChatGPT PlusでNASAの公開画像を楽しむ

 とうとう、ChatGPT Plus(有料版)を契約した。毎月$20の支払いだが、それだけの価値は十分にあるだろう。まず、無料版はGPT-3.5だったが、Plusでは格段に強力になったGPT-4が使えることが大きい。実はそれだけではない。各種のプラグインも使えるので、用途が大幅に広がるのである。無料版では、テキストチャットだけだったが、Plusではプラグインを使って、画像の高度な検索、画像の生成、グラフ描画、等々ができるのである。素晴らしい!
(->続編はこちら

 以下に、NASAの公開画像を検索できるSpace Photo Explorerというプラグインを試した結果を示す。NASAの公開画像は、ほとんど著作権フリーなので、ブログなどでも、こうして自由に掲載できる。天文、宇宙ファンにはとてもありがたいことだ。
--------------------------

山本:惑星に関して、何か珍しい天体ショーのような現象はありませんか。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 2012年6月5日、地球の隣の惑星である金星が太陽の前を通過する様子が、国際宇宙ステーションから撮影されました。このような金星の太陽面通過は非常に珍しい現象で、次回は2117年になると予測されています。
山本:確か、月から地球を望む写真があったと思います。それをお願いします。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 Apollo 11の宇宙船から見た地球が月の地平線上に昇る様子。写っている月の地形は、近くのSmyth's Sea地域です。
山本:感動的ですね。我々は地球上でどのように生きるべきかを考えさせられます。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 まさにその通りです。これらの画像は、地球が宇宙の広大な空間の中でどれほど小さく、そして特別であるかを示しています。宇宙から見た地球の画像は、国境や戦争、人種や宗教の違いなど、私たちが日常的に直面する多くの人工的な障壁を超えて、私たち全員が同じ小さな青い惑星に住んでいることを思い出させてくれます。

山本:月面に残した人間の足跡の画像を見たい。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 Apollo 11の宇宙飛行士が月面での活動中に70mmの月面カメラで撮影した、宇宙飛行士のブーツの足跡のクローズアップ。
山本:月に雨が降らないとすれば、このような足跡は半永久的に残るような気がしますが、どうでしょうか。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 おっしゃる通りです。月には大気がほとんど存在しないため、風や雨による浸食がありません。そのため、月面に残された足跡や宇宙船の着陸地点、さらには宇宙飛行士たちが設置した機器などの痕跡は、何百万年もの間変わらずそのままの状態で残ると考えられています。この事実は、月探査の歴史や月の環境の独特さを考えるときに非常に興味深いものとなります。

山本:月の重力は地球の重力よりもかなり小さいことを示す画像はありますか。月面で活動している様子などで。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 宇宙飛行士John W. Youngが月面でアメリカの国旗に敬礼している様子。彼がジャンプしている姿は、月の低重力を感じさせます。
山本:次に、火星の北極の氷の画像を見たい。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 火星の北極の氷冠の季節の変化の一例です。
山本:火星に生命の痕跡の可能性を探究する場所はありますか。その付近の画像を見たい。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 火星のJezeroクレーターは、過去の生命の兆候を探求するための主要な場所として選ばれました。このクレーターには、何十億年も前に川が湖に流れ込んでできたデルタが存在します。デルタは、古代の微生物の生命の兆候を探すのに最適な場所と考えられています。以下は、Jezeroクレーターとその周辺の画像です。
山本:海王星という名前の由来は分かりますか。また、その美しい画像があればお願いします。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 海王星は、ローマ神話の海の神「ネプトゥーヌス」から名前が取られています。ネプトゥーヌスは、ギリシャ神話の海の神ポセイドンに相当する神で、海や水を司る神として崇拝されていました。海王星は青く美しい色をしており、この色が海を連想させることから、この名前がつけられました。
山本:海王星とその衛星が写っている画像を見たい。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 以下はVoyager 2によって撮影された海王星とその大きな衛星トリトンの画像の一部です。
山本:冥王星の夜と昼が分かる画像はありますか。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 この画像は、Plutoの明るい高度の大気のヘイズが、日の出前と日の入り後に表面を柔らかく照らす方法を示しています。
山本:冥王星は巨大な衛星を持つとのことですが、それが分かる画像を見たい。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 カロンは、冥王星の5つの衛星の中で最も大きく、直径約755マイル(約1,215キロメートル)あります。冥王星とカロンは、そのサイズと質量の関係から、しばしば「二重惑星」として言及されることがあります。
山本:土星の輪を近くから撮影した画像が欲しい。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 以下は、Cassini宇宙探査機が土星の輪を近くから撮影した画像の一部です。この画像は、土星の輪の驚くべき詳細な構造を示しています。輪は、遠くから見るとぼやけて見える多くの小さなリングレットで構成されています。しかし、近くで撮影すると、輪の構造はかなりの変動を示します。
山本:土星の輪の影が土星に写っている画像が欲しい。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 以下、三日月の土星とその輪、そして輪の影が写っている全面カラー画像。
山本:将来地球に衝突する可能性のある小惑星はありますか。
ChatGPT(GPT-4 + SpacePhotoExplorer):
 はい、地球に衝突する可能性のある小惑星はいくつか知られています。しかし、その多くのリスクは非常に低く、多くの場合、さらなる観測によって衝突の可能性が排除されることが多いです。(例)アポフィス (Apophis): 2004年に発見されたこの小惑星は、当初、2036年に地球に衝突する可能性があるとされました。しかし、さらなる観測により、そのリスクは大幅に低下しました。

 興味深い対話はまだまだ続くのですが、この辺りで筆を置きます。

2023年8月12日土曜日

ChatGPTと並んで載った「圏論」

 ChatGPTの喧騒の中、静謐に数学の基礎論に浸る、それは理想の生活である。

 いきなりだが、今から50年以上前に私が学んだ数学には、圏論(Category Theory)は全く出てこなかった。(私がよく学んだ)集合論では捉えきれない数学の深淵な世界を(という言い方が妥当かどうかも分からないが)切り拓く理論として、現代の数学者の間では既に常識となっているようだ。これまで、一般ソフトウェア技術者などには程遠い存在と思われていたが、最近、情勢は少しづつ変わってきたようだ。

 下図の日経サイエンス(2023年5月号)の表紙には、ChatGPTと並んで「圏論の世界」という記事のタイトルが大きく出ている!他にも、Web上や書籍に関連したものが増えてきた。
 単に、数学者の間の話ではなく、計算機科学や量子物理との関連を扱った書籍も出版されているのである。例えば、”Categories for Quantum Theory”、"圏論による量子計算のモデルと論理"、"圏論的量子力学"などのタイトルがある。だが、すぐにそれに飛びつくことはできないだろう。私には、もっとやさしく基礎的な書籍が必要である。しかし、ふあっ〜とした漫画のような解説ではなく、数学的に論理がしっかり書かれていて勉強できそうな本が欲しい。色々調べて、以下の2冊を購入した。
 一冊目は、斉藤毅著「抽象数学の手ざわり」である。サブタイトルは、"ピタゴラスの定理から圏論まで"となっていて、集合と構造(素因数分解)、圏(対象と射)、関手(ガロア理論)の "こころ" を掴めそうな内容になっている。これに馴染んだら、次の二冊目へ行くのが良いのではないか。
 二冊目は、この世界では著名な、もっとも基礎的な洋書テキストらしい。Tom Leinster著「Basic Category Theory」である。Cambridge studies in advanced mathematicsのシリーズとして出版されている。一見すると、厳密な抽象数学の形式で書かれているのだが、教育的配慮が行き届いており、一冊目で馴染んだ後は、なんとかついて行ける雰囲気がある。これを読破した後には、圏論の世界の入り口に立つことができるだろう。

 ChatGPTの喧騒の中、静謐に数学の基礎論に浸るのも良いだろう。もちろん、それは高い理想的な生活であり、実践は容易ではない。

2023年8月10日木曜日

A Thunkable app reproducing the polarized filters experiments

I created an app in Thunkable that faithfully reproduces the photon polarization experiment. Thunkable is a no-code programming system, similar to MIT App Inventor, but it incorporates a unique concept and is mainly an application development environment for advanced users.

Purpose of the app
The main aim of the app is to familiarize students with the fundamentals of quantum computing through photon polarization. What I am doing here is an experiment in which linear polarizers are superimposed and images are viewed. When two polarizing sheets are stacked vertically (axis angle 0°) as in Fig.1(a), it is clearly visible, but when the front sheet is tilted 90° as in Fig.1(b), it is not visible at all. However, if another polarizing sheet is inserted between these two sheets at an angle of 45° as in Fig.1(c), it can be seen to some extent. Since the polarizing sheet is a filter, it is hard to imagine that it is better to see three polarizers than two. No matter how many times I try, it still surprises me. 
App overview
The newly developed Thunkable app, as shown in Fig. 2, faithfully reproduces this mysterious phenomenon on a smartphone screen.
Also, please take a look at the video below, which shows the operation in the order of (a), (b), and (c) in Fig.2. The installation of the polarizing sheet is specified using a switch, and the angle of its axis can be changed by operating a slider.


Mathematical model behind the app
This phenomenon can be explained by the quantum computing model shown in Fig.3. That is, it can be explained using an ordered orthonormal basis that corresponds to the orientation of the polarizer. The details are explained in the section “The Basis Associated with a Given Polarization Direction” in Reference [1].

Important points when creating the app
When developing this app, it is necessary to find the probability p that a photon polarized at an arbitrary angle θ passes through a polarizing sheet with a tilt angle α. It can be calculated using the formula shown in Fig.4.
By reflecting this probability of passing proportionally to the transparency of the colored paint, we were able to reproduce a close-to-realistic appearance on the smartphone screen.

(Note) In this app, calculations are made assuming that the square polarizer is large enough. Therefore, when a small polarizing plate is used as shown below, the appearance of the edge portion may differ from the actual experimental results.
Link to the app
(This app has been tested on Android, but not yet on iOS.)

Reference
 [1] Chris Bernhardt: Quantum Computing for Everyone, The MIT Press, 2020.

2023年8月1日火曜日

生成AIブロックがMIT App Inventorで使えるようになった(2)

 前報の続編です。(2023-08-03、GUIにもこだわり、全面改訂しました!

 例えば、スライダーが3本あり、そのつまみを音声で動かしたいします。結論から言うと、

"スライダーの2番を0度に、3番を45度に、1番を90度に設定せよ。"

などと発話するだけでできました。音声から生成されたテキストから、数値だけを取り出すのはちょっと面倒ですね。英語と違って、空白の区切りが無いこともその一因です。まあ、正規表現を利用したExtesion(これに関してはこちらをご参照)などを使う手もありますが...

 ここでは、本来、アプリの中で実施すべきこの処理を、ChatGPTにやらせています!具体的には、 次の図をご覧ください。「指示文」がChatBotに対する命令です。そして、発話文はそのデータとなります。結果として、この発話例からは、3行のコンマ区切り数値が得られています。そうなれば、App Inventorの「List from CSV Table」ブロックが使えて、スライダーの値の設定はすぐにできます。

 Speech2TextやChatGPTの特性を踏まえて使う必要があります。ちょっとした発話の違いで、Speech2Textの出力テキストは変わります。このアプリは、発話後は自動的に実行結果を出しますが、Speech2textの結果を確認・修正した後にChatGPTへ進むように変更しても良いでしょう。
 また、同一テキストに対して、ChatGPTはいつも同じ結果を出すとは限りませんので、ここにも注意が必要です。深層学習などの仕組みには確率的要素が多分に含まれているからです。場合によっては、「指示文」を調整する必要があるでしょう。例えば、こんな感じ。

-----------------------------------
 なお、この例題は、既に報告した「光子の偏光アプリ」での、3枚の偏光板の角度を音声で自由に変更するために検討したものです。元の画像を再掲します。