2025年8月29日金曜日

「量子変分アルゴリズム設計」でIBMの上級認定資格を取得

 前回、「量子機械学習」で、IBMの認定資格(Intermediate)を取得しました。今回は、「量子変分アルゴリズム設計」という認定資格(Advanced)です。下記URLのとおり、今回のチュートリアルは、量子力学の色彩が少し濃くなっています。分量も多く、1週間ほどかけて学び、受験しました。何とか合格しました!

🟢IBMチュートリアル:量子変分アルゴリズム設計https://quantum.cloud.ibm.com/learning/en/courses/variational-algorithm-design/variational-algorithms

🔴量子変分アルゴリズム(QVA:Quantum Variational Algorithm)の意義

 先日、理研のスパコン(富岳)とIBMの最新QuantumマシンHeronの連携のニュースがありました。そこでの有力なアルゴリズムの枠組みが、今回のQVAです。化学計算や組み合わせ最適化などを、既存のスパコンと量子コンの連携で解くための実用的な方法とされています。下図は、このニュース記事と今回のチュートリアルをもとに作成した私のオリジナル作品です!なので、©も宣言しています!

 化学の電子構造問題や組み合わせ最適化問題では、それぞれ特有のハミルトニアン(エネルギー演算子)の期待値が最小となる量子状態を探す(=基底状態エネルギーを得る)ことが求められます。これを、スパコンと量子コンの連携で解きます。ワークフローは図の通りですが、要点は、スパコン側は、量子コンが推定したハミルトニアンの期待値を受け取り、目的の基底状態エネルギーへ向けた最適化を図ります。一方、量子コンは、スパコン側が用意したAnsatz(パラメータ化された量子回路)を測定し、ハミルトニアンの期待値を推定することに徹します。

 この構成は、古典ニューラルネットワークを想起させます。スパコン側で構成するAnsatzは、ハミルトニアンに適合したネットワークの層とニューロン数を決めることに相当し、そこに含まれるパラメータは、辺の重みやバイアスに相当すると考えられます。

 基底状態エネルギーへ向けた最適化では、コスト関数(=期待値)に対するパラメータの微分が必要なはずですが、量子コン側での微分は負担も大きく、ノイズの影響を受けやすいので、現実的ではないようです。そこで、スパコン側の最適化は、通常、gradient-freeな方法で行われます。なお、スパコン側は、このようなワークフローを、多数のパラメータ初期値を用意して並列に実行(マルチスタート)できます。ただし、量子コン側はどの程度マルチで走れるのかはまだよく分かりませんが。

🔴QVAが量子コンピューティングの全てではない

 IBMでは、この枠組みを"Quantum-Centric Supercomputing"と呼んでいます。しかし、上の図を眺めていると、「頭脳は従来のスーパンコンで、量子コンはこれまでにない驚異の物理実験装置」のように思えます。一方、量子コンピューティングの他の分野、例えば、量子暗号通信や量子機械学習などの発展も大いに期待されています。このような情報科学寄りの問題では、ハミルトニアンとは直接関係しない技法(確率振幅の増幅や位相推定など)が使われます。真に量子コンピュータに向いた問題は何なのかが、だんだん見えてくるのかも知れないです。

2025年8月20日水曜日

A Minimal Collection of LaTeX Examples for Mac Pages

 LaTeXにあまり慣れていない(私のような)人が、量子コンピューティングで資料を作る必要に迫られて作った忘備録です。これだけ頭に入れておけば、大体足りそうな、mini例題集です。なお、私は、LaTeXに関しては、WordよりもMac Pagesの方が、使いやすいように思います。


 この例題の全体は、こちらのpdfファイルにあります。

2025年8月19日火曜日

量子機械学習でIBM認定資格を取得

 IT分野では、資格認定が色々あります。量子コンピューティングの世界もそうなってきました。今回、量子機械学習(QML : Quantum Machine Learning)の基礎に関するIBM認定資格を取得しました。下図はそのデジタルバッチと認定証です。勉強や探求を続けるには、このようなマイルストーンがあるといいですね。

Earned IBM Certification in Quantum Machine Learning
In the IT field, there are many different kinds of professional certifications. Now, the world of quantum computing is beginning to follow the same path. This time, I obtained an IBM certification on the fundamentals of Quantum Machine Learning (QML). The image below shows the digital badge and certificate. Having milestones like this is a great motivation to keep studying and exploring further.

🔴IBM認定資格の意味
 IBMでは量子コンピューティング分野のいくつかの資格認定を、Fundamental、Intermediate、Advancedに分けています。今回の資格(Intermediate)認定バッチは、例えて言うならば、「量子機械学習」という山岳への入山許可証みたいなものかと思います。道は険しく、まだまだこれからです。デジタルバッチの右下にある、登りかけの階段が象徴的です!

🔴IBMの量子コンピューティング関係チュートリアル
 量子機械学習関係の書籍はまだあまり多くないです。そんななか、IBMが提供している様々な量子計算チュートリアルの一つ、「量子機械学習」は非常に充実した内容になっています。以下のURLをご覧ください。

⭐️量子コンピューティングチュートリアル全体
    https://quantum.cloud.ibm.com/learning/en

⭐️量子機械学習チュートリアル
    https://quantum.cloud.ibm.com/learning/en/courses/quantum-machine-learning

 従来からの公開内容が、2025-07-01の開発環境の一新に伴い、大幅に改訂されています。(1)古典機械学習との関係、(2)古典データの量子化のためのEncoding、(3)Fidelityと量子カーネル、(4)QVC(量子変分回路分類器)とQNN(量子ニューラルネットワーク)などで構成されています。

 このチュートリアル全体の学習には、(経験による個人差が大きいですが)標準的には10時間程度。何ヶ所かに、そのセクションを要約した短いビデオがあり、大いに助かりました。また、理論と計算法の説明に加えて、シミュレータおよび量子コンピュータ実機で動かす例題もあり、コードを実行させながら理解を深められます。

 この講座全体を終えた後、1時間ほどのオンライン試験を受けます。守秘義務のため試験内容等は書けませんが、合格ラインは80点/100満点です。不合格になっても、一定期間後には、再挑戦できる教育的配慮もなされています。

 ただし、前提条件として、量子ビットと量子ゲートの基礎(重ね合わせ、確率振幅、相対位相、テンソル積、ユニタリ変換、エルミート行列、量子もつれ、観測量、測定など)、および、量子計算プログラム開発環境にも、ある程度馴染んでいる必要があります。そうでない場合は、下記の講座からスタートするのが良いと思います。
 ⭐️量子情報の基礎
    https://quantum.cloud.ibm.com/learning/en/courses/basics-of-quantum-information

🔴情報工学科ではどうする
 
世の中の関心も高いので、情報系学科では、量子コンピューティング基礎科目を設置するところが増えています。現時点では実用的でなくても、このような先進分野の魅力を教えてこそ大学、という見方もあるでしょう。一方、そんな時間があるのなら、急成長の生成AIやAIエージェント技術をうんと教えて、就職させた方いい、と言えるかもしれない。0か1かではないこの状況が、まさに量子力学的であリます!

2025年8月11日月曜日

量子状態の内積と量子回路の測定

⭕️はじめに

 ベクトルの内積は高校数学でも習います。機械学習などにおいても、2つのベクトルの類似度の計算としてよく出てきます。量子の世界、つまり量子状態ベクトル(以降、簡単のために単に量子状態と呼ぶ)についても内積は極めて重要です。ここでは、量子状態の内積に関する基本事項を復習します。具体的に手計算してみます。


⭕️量子状態の内積を回路の測定から推定(Swap Test)


 二つの量子状態|ψ>と|φ>について、以下の式が成り立つことを示すことが狙いです。左辺は、内積の絶対値の2乗であり、右辺のP(0)は、下図に示す量子回路において、ancilla(補助)ビットを測定した場合の|0>の確率です。

$$|⟨ψ∣ϕ⟩|^2=2P(0)−1$$

| <ψ |φ> |= 2P(0) -1


 ancillaは最上段の1量子ビットです。また、|ψ>と|φ>の量子ビット数は任意ですが(swapするため)両者で同一である必要があります。


(1)量子状態を計算する 


---これ以降は、こちらのpdfファイルでご覧ください。(Bloggerでは、LaTex数式の取り扱いが少し面倒なため)---



2025年7月19日土曜日

量子風鈴?で涼しさを

 猛暑に風鈴はいいものだ。ただし、チリンチリンと、時に耳障りになることもある。そこで、音は出ないが、量子ビットの不思議な世界を想起させる「量子風鈴」なるものを私の研究部屋に吊るしてみた。

熊本城天守閣から吊り下げられたかのような量子風鈴

「量子風鈴」のある研究室風景
 熊本城のカレンダーの前に、透明プラスチック球体が3個吊るされている。これらの球体については何度かこのブログの記事にしてきたので詳細は略します。中央とその下にある2個はBloch Sphereであり、単一量子ビットの状態とそれに対する基本的な量子論理ゲートを射影演算子で表現している。一番上の球体は、4量子ビットのもつれた状態をQ-Sphereで可視化している。

 扇風機の風に乗ってゆらつらするので、少しは涼しげな気分になる。だが実は、それ以上に、量子コンピューティングの世界を探求して行く意欲を持続させるための"おまじない"でもある!

生成AIの判断が、人間の感覚に近かった一つの例

 Webに掲載されたある記事のタイトルが以下のようになっていました。
 (句読点や文章中の空白は原文のままです。)

住宅地でヒグマ駆除、ハンターがライフル銃で 死者出た北海道福島町
 このタイトルを読んだ人は、撃たれたのはヒグマなのか、人間なのか、直ぐにわかるでしょうか?私の第一印象は、「おやっ、何かおかしなタイトルだなあ」ということでした。そこで、生成AIにも判断してもらいました。結論として、現代の生成AIは、(少なくとも本例に関しては)人間の感覚と近いところに来ているということでした。

🟢[生成AI - a]の回答
 非常に曖昧で、文を読んだだけでは「誰が撃たれて死亡したのか」が明確に伝わりません。「ヒグマ駆除」という言葉から、「ヒグマが撃たれた」とは読み取れます。しかし「死者出た」という語句が続くため、人間の死者が出たのか、ヒグマのことを指しているのかが不明瞭です。特に「ヒグマ駆除」と「死者出た」が同列で並べられているため、「駆除の過程で人が撃たれて死亡した可能性」まで想起させてしまいます。

🟢[生成AI - b]の回答
 このタイトルだけでは、撃たれたのがヒグマなのか、人なのかは分かりません。「死者出た北海道福島町」という部分が、撃たれた結果亡くなったのがヒグマなのか、あるいは別の要因で人が亡くなったのか(例えば、ヒグマに襲われて亡くなった、または駆除作業中に事故で亡くなったなど)が不明瞭だからです。文脈として「ヒグマ駆除」とあるので、ヒグマが死んだことは示唆されますが、「死者出た」が誰を指すのかが明確でないため、このタイトルだけでは判断できません。記事本文を読む必要があります。

2025年7月16日水曜日

稲作について生成AIに聞いてみた

 お米の値段、流通が話題になっています。近所を散歩していて、すっかり少なくなった水田ですが、まだ7月中旬だというのに、写真の通り、水田に水が全く無い!ひび割れしているじゃないですか!これじゃ不作になって、米の値段がさらに高騰するのではないか?

「中干し」でひび割れした水田(厚木市 2025-7-15)

 違いました!これは、梅雨明け前後に行われる、稲の生育を調整する手法で「中干し」と呼ばれるものでした。水を一時的に抜くことで、田んぼの表面を乾かし、酸素を取り込める様にして根の健全な発達を促す効果があるとのこと。田んぼをひび割れさせることで、土中に溜まった有害なメタンガスなどを排出させる、また、病害虫を防ぐ効果もある。水をなくすことで、稲に適度なストレスを与えて、育成を調整することにもなるらしい。

 いつ頃からこのような手法が取られていたのか?生成AIからの回答によれば、江戸時代中期にはすでに行われていた。つまり、水の管理の基本として、灌漑と排水が行われていた。17世紀末に書かれた「農業全書」(宮崎安貞著)には、「中干し」を指すと思われる以下の叙述があるという:

「分げつ過多の稲は倒れやすし、時に水を抜きてこれを止むるべし」

🟢感想
 私は、普段、量子コンピューティングやPythonプログラム開発に生成AIを使っている。だが、今回の様な調べ物にも、とても有用だと分かる。時代は変わってきた。今後はさらに、AIエージェントが、人に変わって勝手に?調べ物もしてくれるらしい。昨日、ソフトバンクからその事業化の発表もあった。小学生の夏の自由研究なども様変わりするだろう。ああ!

2025年7月4日金曜日

IBM Quantum Composer - 惜しまれてsunset

----重大な修正------- Composerはsunsetではなかった!2025-07-08 JST確認したところ、New Platformへ移行した後も、Composerは従来通りOpen Planで利用できることが分かった!(ただし、ファイルはローカルに保存するように変更された。それをアップロードすることはできる。)こちらのポストが参考になる。これは力強い!
--------------------------

(元記事はこのままにしておきます。)

【要旨】
量子コンピューティング教育上の優れたプラットフォームIBM Quantum Classic Platformが、2025年7月1日をもって終了(sunset)となった。数ヶ月前から予告があり、完全に new platformへ移行した。小生も準備済みだったので特に問題はないのだが、こんな素晴らしい開発環境、特にその中のComposer(作曲家)という機能を惜しんで、以下に記録しておきたい。

🟢IBM Quantum Platformからの通知(2025-07-01)
 下図の通りである。量子コンピュータハードウェア開発競争の激化が背後にあるようだ。初心者向けの環境から、よりプロフェッショナルな利用のサポートにシフトしたように思われる。ともかく、このPlatformでのOpen Plan(無償)はもはや使えないことが分かる。私は、2年間ほど愛用してきた。図にある通り、これまでに865件のジョブを投入した。小さな量子回路ではあるが(基本的な量子アルゴリズムである、BB84、Ekrt、Grover、Superdense Coding、Teleportation、Simon、Phase Kickback、Phase Estimation, QFT等々)を探求した。その利用経験から得られた知見は、現在とても役立っている!!!その後の、Quantum Machine Learningへの取り組みにも繋がった。大いに感謝したい。
IBM Quantum Classic Platformのサービス終了

🟢量子コンピューティングの全ての操作を一括提供のComposer
 このClassic Platformにおいて、特に使いやすく有用であったComposer機能を振り返り、記憶に留めたい。ログインすると、その場で、以下の項目を一気に実施することができたのである!

(1)ビジュアルに量子回路を編集し、シミュレートする
(2)その量子回路の状態の表示(Q-Sphere、Probability、StateVector)
(3)OpenQSAM(手動量子回路編集)との連携
(4)IBM Quantumマシン実機での実行と結果の取得

量子回路の編集と量子状態表示(Q-Sphere, Probability, StateVector)
OpenQASM(右側)との連携

🟢新しいプラットフォーム(IBM Quantum New Platform)
 新しいプラットフォームでは、上記の様なWebサービスは終了となった。それらと同等のことは、各自がローカルにQiskit環境を設定して行うことになった。しかし、(詳細は略すが)新しい様々な機能が新たに使えるようになった。特に、これまでOpen Planでは使えなかった新鋭の実機 ibm_torino(Heronプロセッサ)が利用可能となったことは大きい!

2025年6月23日月曜日

Comparison of Kernel PCA on Gaussian and Quantum kernel

Auto-translated from Japanese.

[Abstract]
The ad_hoc_data dataset is commonly used in research exploring quantum methods for data classification. An example of applying the KPCA (Kernel Principal Component Analysis) method to this dataset is provided in the IBM tutorial "Qiskit Machine Learning 0.8.3". In the tutorial, a comparison is made between a Gaussian kernel (the classical RBF kernel) and a quantum kernel (based on the ZZFeatureMap). The results demonstrated an example of quantum advantage. This article revisits and reaffirms those findings.

🔴 Characteristics of the Input Dataset: ad_hoc_data
This is an artificial dataset designed to make linear separation (classification) difficult for classical methods but easier for quantum techniques. Although it lacks practical applications, it is often used in studies of quantum advantage. Specifically, the dataset is constructed so that classification is challenging with classical kernels (e.g., Gaussian RBF), but effective with quantum kernels based on quantum feature maps such as ZZFeatureMap. It is primarily a binary classification dataset (labels 0 and 1), split into training and test sets.

    A key parameter, gap, controls how easily the classes can be separated. Larger values generally make the separation easier. Figure 1 shows the sample distribution. The samples for classes 0 and 1 are grouped into small clusters, making linear separation appear difficult.


🔴 Mechanism of KPCA (Kernel Principal Component Analysis) and Classification
KPCA is an extension of traditional PCA using the kernel trick, allowing it to effectively handle datasets with nonlinear structures. First, the input data is implicitly mapped into a high-dimensional feature space using a kernel function. In that space, similarities between samples are calculated, forming a kernel matrix (see Fig. 2). The kernel can be either a classical kernel (e.g., Gaussian RBF) or a quantum kernel (e.g., using a quantum feature map).

    Next, PCA is applied to this kernel matrix to project the data onto the principal components (or, reduce dimensionality).

    At this stage, we are only preparing for classification — no label information is used yet. Interestingly, when constructing a kernel matrix based on fidelity (similarity) using the ZZFeatureMap, a class-like structure (similar to clustering) can emerge even without using labels, particularly in datasets favorable to quantum kernels such as ad_hoc_data. That is, a block-like structure becomes visible in the heatmap of the kernel matrix.

    Figure 2(a) demonstrates this clearly. Most of the data pairs with label 0 (indices 0–49) form a high-similarity block (dark green), as do those with label 1 (indices 50–99). By contrast, in the classical Gaussian kernel case (Fig. 2(b)), this block structure is much less evident.


    After this stage, we proceed to supervised learning by incorporating label information. While Support Vector Classification (SVC) could be used, we opted for Logistic Regression due to its simplicity and compatibility with quantum kernels such as ZZFeatureMap-based.

    The classification results are shown in Fig. 3. They appear to reflect the structure seen in the kernel matrix of Fig. 2. Indeed, the test accuracy was 0.95 using the quantum kernel (Fig. 3(a)) and 0.6 with the classical kernel (Fig. 3(b)). This provides an illustrative example of the potential benefits of quantum kernels.

🔴Reference [Qiskit Machine Learning 0.8.3]

カーネルPCA法における古典カーネルと量子カーネルの比較

[要旨]データのクラス分けに関する量子的手法の研究用として、ad_hoc_datasetがある。これに、KPCA法 (Kernel Principal Component Analysis)を適用する例が、IBMのチュートリアル "Qiskit Machine Learning 0.8.3"にある。その中で、Gaussianカーネル(古典rbfカーネル)と量子カーネル(ZZFeatureMapに基づく)を適用した場合の比較がある。結果として、量子優越性を示す例となっていた。本記事では、これを再確認した。

🔴入力データセット ad_hoc_dataの特徴
 これは、古典的な方法では線形分離(クラス分け)が難しいが、量子的手法ではそれが容易になるように設計された人工的データセットである。実用性はないが、量子優位性(quantum advantage)の研究などで利用される。すなわち、古典的なカーネル(GaussianカーネルRBF等)では分類が難しいが、量子特徴マップ(ZZFeatureMap等)に基づく量子カーネルではうまく分類できるように構成されている。主にバイナリ分類用のデータセット(ラベル 0 と 1)であり、トレーニングセットとテストセットに分けられる。

 このデータセットの生成用のパラメータの一つであるgapは、クラスの分離性を決める。この値が大きいほど、クラス分けは容易になる傾向となる。Fig.1にそのデータサンプルの分布を示す。クラス0とクラス1のデータがそれぞれ小さなグループとなって散在しており、線形分離は困難のように見える。

🔴KPCA(Kernel Principal Component Analysis)の仕組みとクラス分け
 KPCAは、"非線形構造データ"の分類に有効なように、通常の主成分分析PCAをKernel Tickによって拡張したものである。すなわち、まず、カーネルを使って、入力データを暗黙的に高次元空間に写像し、その空間での特徴表現(データサンプル間の類似度の計算)を行う。結果としてFig.2に示すようなカーネル行列が得られる。カーネルとしては、古典カーネル(Gaussianカーネルrbf等)や量子カーネル(Quantum Feature mapに基づく)を使うことができる。これに続けて、主成分分析PCAの手法を適用して、その空間での主成分への射影(または次元削減)を行う。

 ここまでは、クラス分類のための準備であり、分類学習はしていない。クラスを示すラベル情報も全く使っていない。しかし驚くべきことに、ad hoc datasetのような量子カーネル向きのデータセットに対して、ZZFeatureMap を用いた fidelity(類似度) に基づくカーネル行列を構成すると、クラス構造(クラスタリング的な構造)が浮かび上がる場合がある。つまり、ラベル情報がなくても、カーネル行列のヒートマップを見ると、ブロック構造(クラスタ)が現れる。

 Fig.2(a)は、まさにそれを示している!すなわち、ラベル0のデータ(番号0〜49)のペアは、ほとんどが高い類似度(濃い緑色)を示すブロックになっている。ラベル1(番号50〜99)についても同様である。しかし、これに反して古典Gaussianカーネルの場合(FIg.2(b))は、そのようなブロック構造が明瞭でない。
 さて、この後、カーネル行列に加えて、ラベル情報を用いた教師付き学習を行う。その際の分類学習器としてSVCを使っても良いのだが、ここでは、より軽量でZZFeatureMapとの相性も良いとされるLogistic Regression(ロジスティック回帰)を使った。

 Fig.3にその結果を示す。この結果は、Fig.2に示したカーネル行列の構造がそのまま反映されているように見える!つまり、テストデータに対する分類精度は、量子カーネルの場合0.95(Fig.3(a))、古典カーネルの場合0.6(Fig.3(b))であった。量子カーネルの可能性を示唆する一例となった!

🔴参考資料 [Qiskit Machine Learning 0.8.3]

2025年6月11日水曜日

Enjoy Observing Classical and Quantum Kernels in SVC

[Abstract]
The Support Vector Classifier (SVC) is a well-known and effective method for classification. One of its key strengths is the kernel trick, which implicitly maps complex, intertwined data into a higher-dimensional space using a kernel function—allowing for linear separation in that space. In this article, we’ll visually explore and enjoy the differences between classical and quantum kernels!

🟢 Input Dataset: Gaussian Parity
Classical SVC is highly powerful and often outperforms current quantum methods. However, quantum techniques offer novel capabilities that classical approaches cannot, which is why research in this area is gaining momentum.In this article, we use a dataset known as Gaussian Parity, which is considered well-suited for quantum methods.

     As shown in Fig. 1, this dataset consists of 80 samples (56 for training and 24 for testing) and two class labels. The data points from each class are interleaved in a diagonally crossed pattern, making linear separation difficult without transformation. This is where the kernel function—mentioned in the abstract—comes into play.

🟢 SVC Results with Classical and Quantum Kernels
Let’s start with the conclusion. Figure 2 shows classification results using SVC trained with (a) a classical kernel (RBF) and (b) a quantum kernel (a kernel matrix based on the ZZFeatureMap). On the test set, classification accuracy was 0.58 for (a) and 0.93 for (b).

     Of course, these results can vary depending on parameter settings. However, in this instance, the quantum kernel significantly outperformed the classical one. Also, the direction of the decision boundary differs considerably between (a) and (b).

🟢 Exploring the Classical Kernel (RBF)
Let’s take a closer look at the classical case. The RBF kernel is not used directly, but rather called internally during SVC training. It implicitly maps the input data into a higher-dimensional space.
Based on the learned model, we can use Principal Component Analysis (PCA) to project this high-dimensional space into three dimensions and visualize the decision function in 3D.

     The top two images in Fig. 3 show this 3D decision function. You can observe two peaks and two valleys. If we slice this 3D surface at the decision function value = 0, the resulting plane gives us the decision boundary.

🟢 Exploring the Quantum Kernel Matrix
Now let’s examine the quantum case. As shown in Fig. 4, the decision function exhibits a more complex pattern, with more peaks and valleys than in the classical case.
When we slice the surface at decision function = 0, we obtain a decision boundary that achieves a classification accuracy of 0.93.

     This example suggests that the quantum method is exploring and learning within a feature space that classical methods cannot access. This may open the door to entirely new possibilities!


2025年6月6日金曜日

初夏の散歩道-厚木市郊外

 6月に入りまだ梅雨前ですが、初夏らしい日が続いています。散歩道(厚木市郊外)で写した数枚の写真をご覧ください。 2025年6月6日午前の散歩にて。

 かっての同僚の先生から、「もうトウモロコシが実っているのですか?北海道の感覚では、もっと後ですよね。そういえば、大通公園のとうきび売りの露店は本当に少なくなりました。」とのコメントをいただきました。そうなんですね。北海道では、「トウモロコシ」とは言わずに、「とうきび」と呼びます。でも、東京近辺に長年住んでいるとそれに合わせてしまったことに気が付く。懐かしい響き。

2025年5月22日木曜日

Holding the Quantum State of the Mermin-Peres Magic in the Palm of Your Hand

In my previous posts [here] and [here], I introduced the Mermin-Peres Magic Square. While there’s nothing particularly new in this post, I wanted to explore what it feels like to literally hold a quantum state in the palm of my hand. It’s just a plastic sphere I made as a hobby, but it gives me a more tangible sense of what a 4-qubit quantum state might be like.
Quantum state in the palm of my hand

For the corresponding quantum circuit and a detailed explanation, please see [here]. There’s no need to explain Figure 1—if you hold this ball in your hand, you’ll understand the depth of it...

From the initial state, through the generation of entanglement, to the final quantum state—it’s all captured inside this sphere! At first, I thought the 3D rendering from Qiskit’s QSphere would be enough. But once I actually built this physical model and held it in my hand, I realized it offered a somewhat different experience.
Fig.1 Quantum state of Mermin-Peres Magic (4-qubit)


2025年5月17日土曜日

Exploring Quantum Entanglement through Visualization

[Abstract]
The Mermin-Peres Magic Square is a well-known example that illustrates quantum entanglement. I have written related articles in the past (in Japanese, available [here]). This time, I aimed to deepen my understanding by visualizing the phenomenon, using four different methods:
(1)Display of a disk shape using my own simulator, (2)3D Qsphere representation with Qiskit, (3)Pauli correlation analysis, and (4)Measurement on IBM Quantum real hardware.

🔴Example: Tiny Mermin-Peres Magic

An explanation of this example is provided [here]. As shown in Fig. 1, Alice and Bob each possess two qubits. In the first half, their qubit pairs are prepared in an entangled quantum state, ǀψ₁⟩. After that, there is no further interaction between them. Nevertheless, when the final state ǀψ₂⟩ is measured, a strong correlation is observed between their outcomes (as shown later in Fig. 2 and Fig. 3). Specifically, the number of "1"s in the 2-bit classical measurement results is always even for one party and odd for the other. This reveals a strong inverse (or anti-) correlation.

🔴Confirmation Using a Homemade Quantum Circuit Simulator

Figure 2 shows the results of verifying the behavior of this example using a homemade quantum circuit simulator. The probability and phase of each basis state are displayed on a disk. In addition, numerical lists of the probability amplitudes, probabilities, and phases are provided.

For example, in the quantum state ǀψ₁⟩, if Alice's qubits are in the state ǀ00⟩, Bob's qubits will definitely be in the state ǀ11⟩. In the final state ǀψ₂⟩, if Alice is in the state ǀ00⟩, Bob's state will be either ǀ01⟩ or ǀ10⟩. It is also possible to confirm whether the total number of "1"s in the measured classical bitstrings is even or odd, as described earlier. In other words, this disk representation allows us to visually understand the quantum entangled state shared between Alice and Bob.

🔴3D display of quantum states using Qiskit's Qsphere

Quantum entanglement cannot be separated into individual qubit states, so quantum states cannot be displayed individually on a Bloch sphere. However, by using Qiskit's Qsphere, it is possible to simultaneously display all possible basis states on a sphere, as shown in Fig. 3. Here, the size of the circle at the tip of the quantum state vector is the probability value, and the color indicates the phase. It matches well with the disk display in Fig. 2.


🔴Indication of the strength of quantum entanglement by Pauli correlation

One way to investigate the quantum entangled state in more detail is the Pauli correlation measurement. This is based on the fact that, for example, the expectation value when the quantum state ǀψ⟩ is measured on the Z axis is calculated as follows: ⟨ZZ⟩ = ⟨ψǀ Z⊗Z ǀψ⟩

As an example, for the Bell state ǀψ⟩ = (ǀ00⟩+ǀ11⟩)/√2, calculations show that ⟨ZZ⟩ = 1, which means that the Z measurements of the two qubits are correlated in exactly the same direction. On the other hand, for the simple tensor product ǀψ⟩ = ǀ01⟩, ⟨ZZ⟩ = -1, which shows a strong correlation in the opposite direction but is not entangled.

In Fig. 4, in addition to the Z measurement, X and Y measurements are also performed. Although the above Pauli measurements can calculate correlations, they do not necessarily fully reflect the "quantum entanglement". Therefore, in some cases, measurements other than the Z measurement may be performed.
In Fig. 4, ZZ(q2,q3) on the horizontal axis is the ⟨ZZ⟩ calculation for Bob's quantum bit, and ZZ(q0,q1) on the vertical axis is the ⟨ZZ⟩ calculation for Alice's quantum bit. The color of the square at the intersection represents the product of their values ​​(expectation values). The darker the red, the closer it is to +1.

In the state ǀψ1⟩, if the Z measurement results of Alice's two qubits are in the same direction, then the Z measurement results of Bob's two qubits will also be in the same direction. If, on the other hand, the Z measurement results of Alice's two qubits are in opposite directions, then the Z measurement results of Bob's two qubits will also be in opposite directions. Such a strong correlation is also observed in ⟨XX⟩ and ⟨YY⟩, so they can be said to be in a fully entangled state.

On the other hand, in the state ǀψ2⟩, the Z measurement of the two qubits will have the same direction for either Alice or Bob, but different directions for the other. Therefore, it makes sense that the squares in the right panel of Fig. 4 are dark blue (the product of the expectations is -1).
 
🔴Measurement results on an actual IBM Quantum computer

Finally, Fig. 5 shows the measurement results on an actual IBM Quantum computer. This is the result of 10,000 shots performed on one of the most advanced machines, ibm_torino (Heron r1). Although there are some errors (likely due to noise) in both the measurements for the quantum states ǀψ1⟩ and ǀψ2⟩, the results well support the calculation results shown in Fig. 2, Fig. 3, and Fig. 4. It is once again amazing how far quantum computers have progressed!

2025年5月16日金曜日

可視化で量子もつれの理解を深める

【要旨】量子もつれを利用した例題の一つにMermin-Peres Magicがある。関連記事は過去にも書いてきた。(ここです)今回は、ビジュアル化によってさらに理解を深めたいので、量子状態の表示と分析を4通りの方法で行なってみた。①自作シミュレータでの円盤表示、②QiskitのQsphereによる3D表示、③パウリ相関測定、④IBM Quantumマシンによる実測である。

🔴例題Tiny Mermin-Peres Magic
 この例題の説明はここ示した。Fig.1に示す通り、AliceとBobはそれぞれ2量子ビットを保有している。両者の量子ビット対は、前半で量子もつれの状態 ǀψ1⟩となる。それ以降は両者のインタラクションは無い。それにもかかわらず、最終状態 ǀψ2⟩を測定すると、(後でFig.2やFig.3に示すように)両者に強い相関が見られる。すなわち、両者の測定結果の古典2ビット列に含まれる"1"の個数は、必ずどちらかは偶数個であり、他方は奇数個になる。いわば逆向きの強い相関である。

🔴自作量子回路シミュレータによる確認
 この例題の動作を、自作の量子回路シミュレータで確認した結果をFig.2に示す。起こり得る基底状態の確率と位相が円盤に表示される。また、確率振幅、確率、位相の数値リストも表示されている。
 例えば、量子状態 ǀψ1⟩では、Aliceがǀ00⟩ならばBobは必ずǀ11⟩となる。最終状態 ǀψ2⟩では、例えば、Aliceがǀ00⟩ならばBobはǀ01⟩か又はǀ10⟩となり、上述した測定古典ビットでの"1"の個数が偶数か奇数も確認できる。すなわち、この円盤表示から、両者の量子もつれの状況を掴むことができる。

🔴QiskitのQsphereによる量子状態の3D表示
 量子もつれ状態は、個々の量子ビット状態に分離できないので、Bloch球に個別に量子状態を表示することはできない。しかし、QiskitのQsphereを利用すると、Fig.3に示す通り、起こり得る基底状態を同時に球面に表示することができる。ここで、量子状態ベクトルの先端の円の大きさは確率の値であり、色は位相を示す。Fig.2の円盤表示と良く合致している。

🔴パウリ相関による量子もつれの強さの表示
 量子もつれ状態をさらに詳しく調べる方法の一つはパウリ相関測定である。これは、例えば、量子状態 ǀψ⟩をZ軸測定した場合の期待値が以下のように計算されることに基づく。
⟨ZZ⟩ = ⟨ψǀ Z⊗Z ǀψ⟩
 一例として、ǀψ⟩ = (ǀ00⟩+ǀ11⟩)/√2というベル状態の場合は、計算してみると、⟨ZZ⟩ =1となる。これは2つの量子ビットのZ測定結果が確実に同じ方向になる相関を意味する。一方、ǀψ⟩= ǀ01⟩という単なるテンソル積ならば、⟨ZZ⟩ = -1となり、逆向きの強い相関を示すが、量子もつれではない。
 Fig.4では、Z測定に加えて、X測定とY測定も行なっている。上記のような各パウリ測定は、相関を計算できるが、必ずしも「量子もつれ」を完全に反映したものではない。そのため、場合によっては、Z測定以外の測定を行うことがある。
 Fig.4の横軸のZZ(q2,q3) は、Bobの量子ビット状態に対する⟨ZZ⟩ であり、縦軸のZZ(q0,q1) は、Aliceの量子ビット状態に対する⟨ZZ⟩ である。そして、その交点に示された正方形の色は、それらの値(期待値)の積を表現している。濃い赤色ほど+1に近い。
 状態 ǀψ1⟩においては、Aliceの2量子ビットのZ測定結果が同一方向ならば、Bobの2量子ビットのZ測定結果も同一方向となる。あるいは、AliceとBobのZ測定結果は、ともに異なる方向となる。そのような強い相関が、⟨XX⟩ と⟨YY⟩ でも観測されるので、両者は完全なもつれ状態にあると言える。
 一方、状態 ǀψ2⟩では、2量子ビットのZ測定結果は、AliceとBobのどちらかでは同じ方向となり、他方では異なる方向となる。したがって、Fig.4の右側の図の正方形は濃い青色(期待値の積は-1)になることは納得できる。
 
🔴IBM Quantum コンピュータ実機での測定結果
 最後に、IBM Quantum実機での測定結果をFig.5に示す。最新鋭機の一つibm_torino(Heron r1)で、10,000 ショット実行した結果である。量子状態 ǀψ1⟩と ǀψ2⟩での測定とも、若干のエラー(ノイズによると思われる)が生じているが、Fig.2、Fig.3、Fig.4で示した計算結果をよく裏付ける結果となっている。量子コンピュータが、ここまで進歩してきたことに改めて驚く次第である!

2025年5月9日金曜日

最新版Qiskit2.0を利用した量子コンピューティングの解説書

 IBMの量子コンピューティング開発プラットフォームQiskitは、頻繁に改訂されることで有名だ。研究開発が活発な証しではあるが、時として以前に書いたコードが動かなくなる状況が発生し、困ることも多い。直近では、かなり大幅な改訂版となったQiskit2.0が公開されている。IBMのサイトに関連ドキュメントはあるが、これを取り上げた書籍は(和書、洋書とも)まだ見当たらないと思っていた。ところが、以下の和書が早くも出版されていることを知り驚いた!
中山茂、Qiskit2.0 量子コンピューティング入門、2025年5月
🔴本書の特徴(深い理論も実際に動くコードでイメージを掴みやすい)
 著者の中山茂教授は、これまでもタイムリーに量子関連書籍を多数執筆されている。彼の著書では、量子コンピューティングに関するかなり深い理論も、量子回路シミュレータや量子コンピュータ実機で実際に動くコードを示して、分かりやすく説明している。それが最大の特徴と言える。それによって、読者はイメージを掴みやすく、より深く理解しようという意欲が湧く。

 本書(全214頁)の内容は、量子コンピューティングの基本から始まり、量子テレポーテーション、グローバー探索、量子フーリエ変換、ショアの因数分解といった重要なアルゴリズムをカバーしている。そして、ショアの因数分解に等に現れる量子/古典のハイブリッドアルゴリズムが、現状では実際的であることを強調している。実際、ショアの因数分解では、古典的には困難なモジュロ冪函数の周期発見を量子アルゴリズムで、そして、その後のユークリッド互除法を古典的に行う方法を、実際に動くコードを使って詳細に説明している。

 実は、さらに素晴らしいと感じたのが第4章(量子非局所性と期待値計算)である。ここでも、Qiskitコードを使って、量子物理学の根幹に関わる量子非局所性を説明している。すなわち、ベル状態でのテンソル積の期待値測定の量子回路を組んで、その測定結果を示しながら量子非局所性を実験的に証明している。

🔴量子状態 ∣ψ⟩に対する演算子Aの期待値 ⟨ψ∣A∣ψ⟩
 上に述べた「ベル状態でのテンソル積の期待値測定」の一つを具体的に見てみよう。
 例えば、ベル状態の一つを ψ = (1/√2)(∣01⟩+∣10⟩)とする。その時、⟨ZZ⟩=⟨ψ∣Z⊗Z∣ψ⟩は、パウリZ演算のテンソル積(行列)の期待値を与える。その値は、(具体的な展開計算は略すが)-1となる。これは、2つの量子ビットに対するZ基底測定が、それぞれ異なる値(0 or 1)となることが確実なことを意味する。そのような逆向きの強い相関である。
 このことを、QiskitのStatevectorクラスを使ったQiskitコードを作り確認している。すなわち、それを実行させると測定値が-1となり、手計算の結果と合致すること分かる。
(以下の図は、本書に載っているものではなく、私が用意した参考図である。)

2025年5月5日月曜日

IBM Quantum無料枠の利用可能時間の計算が変更になった!

 IBM Quantum無料利用枠の新しい計算方法:最近気付いたことだが、私にとってはちょっと重要事項なので書き留める!

 IBM Quantumの無料プラン(Open Plan)における利用時間の計算方法は、これまでの「28日毎にリセットされる固定制」から、「直近28日間のローリングウィンドウ制」に変更さた!ただし、IBM Quantum の新しいプラットフォーム(early access)の場合である。6月末まで利用可能な旧プラットフォームはそのままのようだが。
Here’s the image illustrating the change in IBM Quantum’s free usage calculation method.
An example

🟢変更前:固定制(28日毎に自動リセット)
 これまでは、Open Planの利用時間は28日毎に0:00 UTCにリセットされ、28日あたり最大10分間の量子計算時間が提供されていた。

🟢変更後:ローリングウィンドウ制(直近28日間)
 現在は、直近28日間の累積利用時間が10分間に制限される「ローリングウィンドウ制」が採用されている。28日経過しても、自動的にまた10分間使えるようにリセットされることはない!

 この変更により、過去28日間の利用状況に応じて残り時間が変動するので、それを念頭に量子コンピュータ実機を使わなければならない。これが本来の姿かも知れない。

2025年4月29日火曜日

御礼:ブログページビュー(アクセス数)20万回超え

🔴感謝:本ブログへのアクセス回数が20万回に到達
 2016年末に開設したこのブログ、このほど、20万回webビュー(アクセス)に達した。直近の約130件(これまでの総計は約500件)はほとんど量子コンピューティングに関する記事である。ブログアイコンもそれらしくした。ご愛読、そして、フィードバックしていただいた方々に御礼申し上げたい。


🔴実用的な量子コンピュータへの道は険しい
 最近、国産の256量子ビット(世界最大規模の)コンピュータが開発されたというニュースがあった。素晴らしいことだが、その発表には、実用問題を解くには最低6万量子ビットを要するうえ、現在は達成されていないノイズ耐性が必要ということが含まれていた。すなわち、これで世界が変わった!というわけでは全くない。その先はとてつもなく険しそうだ。

 この業界の巨人IBMのロードマップでも、2025年に156x7 = 1092量子ビットでError suppression and mitigation(誤り抑制と緩和)、2026年以降にError correction(本格的に?誤り訂正)となっている。例えば、Shor's素因数分解アルゴリズムの実用化には、100万量子ビットが必要との情報もある。研究開発は続く... 。私もできるだけ学び、少しづつ前へ進み、ブログ記事も続けたい。

 そんな厳しい状況だが、大手企業やベンチャー、大学などでは多くの人々が活発に量子コンピューティングに関して、論文やSNSでの発信を行なっている。それは、ますます増える傾向にある。私自身も、わずかながら、そういう人たちと何らかのつながりを持とうとしてやっている。

🔴本ブログ記事を査読、引用、掲載して戴いた方々に感謝
 これまでに下記の方々に、量子コンピューティングに関する私のブログ記事を査読参照掲載して戴いた。とてもありがたいことである。すでに、それらに関する記事は個別に掲載済みだが、ここ改めて感謝したい。

(1) Chris Bernhardt (Prof. of Mathematics at Fairfield University)
・掲載サイト:Chris Bernhardt info

(2) Isaac L. Chuang (Prof. of Physics MIT), Selim Tezel (MIT App Inventor Education Team Lead)
・掲載サイト:MIT App Inventor Stories from the Field, 理化学研究所 Q-Potal

(3) Nivio dos Santos (Product Manager at Avalara Brasil)
・掲載サイト:http://www.nivio.com.br/

(4) Javier Mancilla Montero (PhD in Quantum Computing, Quantum Machine Learning Researcher)
・掲載サイト:Linkedin記事
・当方の元記事:Visualizing and Understanding QSVC

(5) Peter Y. Lee (Ph.D. in EE from Princeton, faculty member at Fei Tian College)
・掲載サイト:Polaris QCI Publishing Web site

2025年4月28日月曜日

A Basic Mathematics Book for Learning Quantum Computing

In the previous article, we introduced a new book on quantum computing. However, many people may want to first learn basic mathematics before reading such books. I would like to briefly introduce the following book as one such book. Generally speaking, the relationship between this book and the previous one is as follows:

Peter Y. Lee, James M. Yu, Ran Cheng :Mathematical Foundations of Quantum Computing, Polaris QCI Publishing, 2025.

This book is a large volume of 539 pages. It provides a very thorough explanation of the basics of mathematics related to quantum computing. Parts 1 and 2 are basic mathematics, mainly linear algebra. However, since Dirac Notation (bra-ket) is already used here, it becomes clear that this is not purely basic mathematics, but is aimed at quantum computing. The authors explain that readers who have already mastered the basics of linear algebra can skip these parts and move on to Part 3. Even for such readers, Part 2 is very useful for reviewing points that they may have forgotten. In other words, this book also serves as an encyclopedia.

In the third and fourth parts, the most important operations in quantum computing are explained in detail, with a focus on "Tensor products". Although it is not very noticeable, it is worth noting that the "Change of Basis" introduced in the second part is explained in more detail in this third part. This will be important in many fields,  including quantum key distribution later. You will also see that the "Kronecker Product" is important in simplifying quantum computing. More advanced content such as "Singular Value Decomposition" is also included. Furthermore, one of the outstanding features of this book is that "Probability", another foundation of quantum computing, is dealt with extensively in the fourth part.

At the beginning, there is a "Level Indicator" explanation, which is useful for understanding the level of difficulty of the content. However, it would be even better if it had a marking to indicate which of the minimum necessary knowladge is required to read the second book, "Quantum Computing & Information." This is because this book contains a huge amount of content, and some people want to study efficiently. For example, it may be okay to skip "Discrete Fourier Transform" and "Markov Chains" for the time being.

2025年4月24日木曜日

Visualizing and Understanding QSVC

[Abstract] 
QSVC (Quantum Support Vector Classifier) ​​can sometimes produce new classification decision boundaries that are different from those of classical SVC. An example of this was reported in a previous article. This time, we visualized (part of) the QSVC process that leads to this point. Visualization is not simply beautiful or easy to understand. While it can help us understand the mechanism in concrete terms, it can also be a trigger for new questions to arise, encouraging progress. Javier's book “QML Unlocked” was very useful, and is mentioned at the end of this article.

🔴What to visualize
A small dataset for visualization, 16 samples of Gaussian Parity, was prepared. It consists of two features and a label. The parts to be visualized in the overall flow of QSVC are shown below.
  1. Normalization (scaling) of input data: No need for visualization.
  2. Reduction of input data dimension: Not necessary in this case, since it is two-dimensional (2 features).
  3. Display of input data: Draw data samples in a 2D scatter plot. → Figure 1
  4. Convert input data to quantum state: Display quantum state on Bloch sphere. → Figure 2
  5. Create quantum kernel matrix: Represented as a heat map. → Figure 3
  6. Perform SVC learning: Display the resulting classification decision boundary in 2D. → Figure 4

🔴Visualization of Quantum Feature Map

Here, we use ZZFeatureMap, which is equipped in Qiskit, to convert each sample of the input data in Figure 1 into a quantum state (feature vector). The result is plotted on two Bloch spheres, as shown in Figure 2. As shown in the figure, ZZFeatureMap is a system (considered to be four-dimensional) that includes two quantum bits of entanglement and phase shift, so quantum states are displayed in both q0 and q1.

🔴Visualization of Quantum Kernel Matrix

Next, we create a quantum kernel matrix using the results of the feature map. Each element is the fidelity calculated by the inner product of two combinations of quantum states. Figure 3 shows this matrix as a heat map. The brighter it is, the higher the similarity.
Classical SVC also implicitly calculates the corresponding similarity using a kernel function during training. On the other hand, quantum QSVC calculates all similarities in advance to create a kernel matrix, which is then passed to classical SVC training. SVC training has the option kernel='precomputed'. QSVC repeatedly runs the quantum circuit for all combinations of inputs to create a quantum kernel matrix.

Now, this quantum kernel matrix does not contain any original label information. Therefore, classification cannot be performed using this matrix alone. Learning  (SVC learning) using this matrix and label information is required. However, even with just Figure 3, it is possible to predict whether two samples are likely to fall into the same class or into different classes.

For example, the similarity between the vectors of sample numbers 0 and 2 is quite low, as shown in [A] in Figure 3. As shown in Figure 2, the two are almost orthogonal. And they have different labels. Therefore, it is highly likely that they will be placed in different classes.
Furthermore, the similarity between the vectors of sample numbers 4 and 8 is quite high, as shown in [B] in Figure 3. As shown in Figure 2, the two are also heading in a similar direction. And they have the same label. Therefore, it can be predicted that they will be highly likely to be placed in the same class.

🔴Visualization of classification decision boundary

Next, using the quantum kernel matrix in Figure 3 and the original label information, classification training is performed. This training is the same as classical SVC training. The resulting decision boundary is shown in Figure 4. The relationship between data points 0 and 2 [A] and the relationship between 4 and 8 [B] are as expected above.

🔴The decisive difference between quantum QSVC and classical SVC

The decisive difference between QSVC and classical SVC is not whether the kernel matrix is ​​calculated in advance, but in which space the vector inner product (similarity) is calculated. In classical SVC, the input data is also classified after mapping it to a high-dimensional space using a kernel function. However, the properties and structure of that space are different from QSVC.
In QSVC, it is important to know what kind of quantum feature map is used to convert the input into a quantum state. Whether or not QSVC's superiority is demonstrated depends on whether the feature map can realize a mapping that is difficult to realize classically.

🔴[Reference book] Introduction to Javier's "QML Unlocked"

There are few books in Japanese to learn quantum machine learning. The ones already published have a strong theoretical aspect and are not very suitable for beginners. In the meantime, the English book by Javier Mancilla Montero, shown in Figure 5, has very easy-to-understand explanations. Although the above example is my own original work, I obtained very useful information from this book, so I would like to briefly introduce the contents of this book.
It is a compact book (228 pages in total) with 10 chapters. Chapters 1-3 are an overview of quantum computing and machine learning. Chapters 4-7 cover QSVC, and chapters 8-10 cover more advanced topics such as VQC (Variational Quantum Classifier).

Overall, the book focuses on the explanation of QSVC. Although there are few mathematical expressions, the description is precise and quite deep. The explanation of creating a quantum kernel using several types of feature maps is excellent. Going further, it also attempts to combine them for SVC learning (multi-kernel learning). It explains this concretely using quantum platforms such as Qiskit and PennyLane. All the codes provided were able to run perfectly in my local environment.

Those who reach Chapter 4 for the first time may be a little confused. This is because the chapter explains code that demonstrates (1) MinMaxScaling, (2) dimensionality reduction using principal component analysis, (3) quantum state generation using ZZFeatureMap, (4) quantum kernel matrix generation, and (5) SVC learning all at once for a large dataset consisting of 1,000 samples with 20 features. However, there is no need to worry, because the following chapters explain dimensionality reduction in detail in Chapter 5, FeatureMap in Chapter 6, and SVC learning using quantum kernels in Chapter 7. In other words, the overall picture is shown first, followed by specific discussions.

For large-scale input data, creating feature maps and quantum kernel matrices, and training using them takes a lot of time in simulation. Although this book is not a programming book, as a countermeasure, it also provides multi-core parallel processing code using the PennyLane library and Python joblib. In fact, on my M1-mac-mini (8 cores), I was able to achieve a speedup of more than four times.

----------------------------------------------------------
🟢Special thanks to Javier Mancilla Montero, Ph.D. for posting this article of mine on Linkedin, see below.
----------------------------------------------------------