第36回 こうして、とったぞー!!!

第36回 こうして、とったぞー!!!

「探究学習をやってみました:Q-Questの参加(中編)」の探究活動報告

皆さん、こんにちは。テラオカ電子です。今回は、前回(第35回ブログ記事)で紹介した「Q-Quest(クエスト)」に参加したことの続編を述べます。

前回は、私が取り組んだ探究活動(Q-Quest)の概要、量子コンピュータとは何か、そして、YouTubeチャンネル「テラオカ光子」の開設を述べました。

はじめに復習です。前回、「量子コンピュータとは何か」について、私のイメージする解説を述べましたが、「安部礼二(average)」君にも「平均的」な解説をしてもらいましょう。ChatGPT(3.5)に「「量子コンピュータ」について、その原理、方式、および活用法を詳しく教えてください。」と問いかけました。ChatGPTから以下のような回答を得ました。


量子コンピュータは、従来のデジタルコンピュータとは異なる原理を用いて計算を行うコンピュータです。量子コンピュータは、量子力学の原理を利用して情報を処理し、並列計算や干渉を活用して、複雑な問題を効率的に解決することができます。


原理

1. 量子ビット (Qubit): 通常のコンピュータで用いられるビットの量子力学版であり、量子情報の最小単位です。通常のビットは0または1の状態を取りますが、量子ビットはこれに加えて量子重ね合わせ状態を取ることができます。これにより、量子コンピュータは複数の状態を同時に扱うことができます。

2. 量子重ね合わせ: 量子ビットは、0と1の両方の状態を同時に持つことができる「重ね合わせ」状態になります。これにより、同じ量のビットを持つ量子コンピュータは、通常のデジタルコンピュータよりも膨大な数の状態を効率的に表現できます。

3. 量子干渉: 量子ビットが重ね合わせ状態にあると、これらの状態は干渉を起こします。干渉により、特定の状態が強化または減衰し、計算において有益な情報を得ることができます。

4. 量子もつれ (Entanglement): 量子ビット同士が相互に依存し、一方の状態が他方の状態に影響を与えることがあります。これにより、量子コンピュータは非常に強力な並列計算を行うことができます。

方式:

1. ゲートベースの量子コンピュータ: 量子ビットを操作するための量子ゲートを使用して計算を行います。量子ビットに対する操作は、重ね合わせ、干渉、もつれなどの量子効果を利用して行われます。

2. 量子アニーリング:物理的な量子ビットを使用して、最適化問題を解くためにアニーリング手法を用いる方法です。この手法では、量子アニーラと呼ばれる装置を使用して、問題の解を見つけるために量子力学的な効果を利用します。

活用法:

1. 暗号解読: 量子コンピュータの高速性能を利用して、現在の暗号技術を解読することができます。しかし、これによって新しい量子安全な暗号技術の開発が進んでいます。

2. 薬物設計: 分子の模倣や相互作用の予測など、複雑な化学反応のシミュレーションに役立ちます。

3. 人工知能: 機械学習や最適化問題などの領域で、量子コンピュータは高速かつ効率的な計算を行うことができます。

4. 素因数分解: 大きな合成数を素因数分解する際の計算問題を解決するために使用されます。

5. 量子シミュレーション:量子コンピュータは、量子系の振る舞いや相互作用を模倣することができます。これにより、物質の性質や反応の研究が可能になります。

量子コンピュータはまだ発展途上の技術であり、実用化にはさまざまな課題が残されていますが、その可能性は非常に大きいとされています。


量子コンピュータの専門家であれば、細かい点で正確性を指摘するのでしょうが、私はこれを読んで、特に問題となる点(ハルシネーション)は、思い当りませんでした。大体、書籍にはこのようなことが書かれていたように思います。

量子アニーリングに関しては、もの足りないので補足します。ただし、これもテラオカのイメージなので、正しくないかもしれません。ご指摘頂ければ幸いです。

まず、格子上に並んだ電子のスピンを考えます(イジング模型)。電子のスピンのイメージは古典論では、小さな磁石です。電子の回転向きにより上向きスピン、下向きスピンとなります。そこに、最初、横磁場を与えてスピンの向きを揃えます。そして、その横磁場をだんだんと弱めていきます(アニーリング:「焼きなまし」)。すると、スピンには、相互に力が働いていますので、次第に、相互作用の力にしたがってスピンの向きが落ち着きます。ここで、このスピン間の相互作用にあらかじめ解きたい問題の組み合わせの条件を埋め込んで置けば、その解に応じたスピンの向きに収束しますので、そのスピンの向きの並びを読み出すことで、問題の解を得ることができます。

量子アニーリング方式は、量子ゲート方式とは、まったく異なる発想の原理に基づいています。「組み合わせ最適化問題」を利用する社会的ニーズが高まっている現在、注目されています。

それでは、今回、私たちのチームが開発した「クラス分け最適化アプリ」、そこで使った量子技術の工夫を述べたいと思います。

目次

【1 開発した「クラス分け最適化アプリ」の紹介】

私たちのチームが開発した「クラス分け最適化アプリ」は、生徒の成績や特性をできるだけ均等にクラスに分けるアプリです。

例えば、以図のような名簿(架空の名簿です)があったとします。各生徒の国語、数学、理科・・・の成績(評定)、性別(例えば、男:0、女:1)、要支援(例えば、支援が必要:1、不必要:0)です。ここで、生徒を各クラス(例えば4クラス)に、成績、性別、要支援ができるだけ均等になるように振り分けたいとします。要因が2種類程度であれば、エクセル等でソートすればできますが、要因の数が増え、また生徒数も多くなると、その組み合わせ数は膨大となり簡単に求めることができません。このような状況は一般に、「組合せ爆発」と呼ばれています。

私たちのチームでは、以下のようなタイプ別に3つの「クラス分け最適化アプリ」を制作しました。

私が制作したアドバンスモデルのアプリを紹介します(Streamlitのアプリは全て私が制作してました)。アプリの全体は下図のようになります。なお、Streamlitといのは、Pythonだけでアプリが作れるフレームワークです。

詳しく説明していきます。下図のように、左のサイドバーに、「固定生徒のリスト自動生成機能」を配置しています。これは、同じクラスにしたい生徒の組と違うクラスにしたい生徒の組のリストを自動で生成するものです。少ない人数であれば人がそれらの組みを振り分けるのは可能ですが、インターネット校のように、多人数の生徒を同じクラスにしたい、違うクラスにしたい場合のリストを作ることは難しいので、それを支援するものです。

まず、クラス数と生徒数を入力します。下図の例では、クラス数は4クラス、生徒数は50人としています。

次に、同じクラスにしたい生徒の組と、違うクラスにしたい生徒の組のリストをアップロードします。下図の例では、同じクラスにしたい生徒の組は、(1番と2番の生徒)、(3番と4番の生徒)、(5番と6番の生徒)および(1番、7番、8番の生徒)です。違う生徒の組は、(1番と3番の生徒)および(1番と5番の生徒)です。

そうすると、固定生徒のリストが生成され、ダウンロードできます。下図の例では、(1番、2番、7番、8番の生徒)が1組に固定されています。2組、3組も同様です。

次に、アプリの右側のメインの部分に移り、まず、量子アニーリングマシンを動かすためのトークンをアップロードします。トークンというのは、パスワードのことです。これは、FIXSTARSのサイトから作ることができます。また、この後、生徒名簿をアップロードしていきますが、そのひな形もダウンロードできます。

次に、生徒の属性ファイル(生徒名簿)をアップロードします。

次に、左サイドバーで生成した、または、自分で作った「固定生徒のリストファイル」をアップロードします。

すると、固定の生徒は固定されたままで、それを含めて生徒の属性が均一になるように、量子アニーリングマシンで計算が行われ、最適化したクラス分けの結果が得られます。このデータはダウンロードできます。

以上が、アドバンスモデルの概要です。その他のモデルである、スタンダードモデルは、固定生徒の自動生成機能がないものです。また、ベーシックモデルは、さらに固定生徒の事前割り当て機能がなく、生徒の属性のみでクラス分けするものです。

ここでは、私が制作したStreamlitというフレームワークのWebアプリを紹介しましたが、別の方が、Fretでベーシックモデルを実装していす。こちらは、ロール環境で動くものです。成績という個人情報(名前を番号にすればOKですが)をWebにアップロードすることに抵抗のある場合には、こちらのアプリがお薦めとなります。

【2 アプリで開発した量子技術】

次に、今回のアプリでの量子技術の工夫を述べます。この工夫で、前回のブログ記事(第35回)で述べたように「FIXSTARS賞」を頂きました。もちろん受賞の理由はこれだけではありませんが、主要因はこれだと考えています。

当初、生徒を各成績に基づいて均一にクラスに振り分ける指標として、成績の「平均値」を使っていました。例えば、各クラスの数学の評定値の平均がなるべく等しくなるようにです。でもやっていくうちに、平均値は同じでも、あるクラスには成績上位と下位が集まり、別のクラスでは、成績中位が集まることがあり得ます。これでは、教科を教える先生にとって、好ましくありません。なぜなら、以前の勤務校で、教務の先生から、「特進クラスと普通クラスで同じ教え方をしないでください」と注意されたことがあるのですが、クラス間で生徒の成績分布が異なると、教え方を変える必要があるので教科の先生にとって負担となるからです。

そこで、各教科のそれぞれの評定値が、各クラス同じ人数になるようにすることを考えました。具体的には、以図のように、評定値をone-hot変換します。例えば、3番の生徒の国語の成績は「3」ですが、「国語2」の成績を「1」にし、「国語0」、「国語1」、「国語3」、「国語4」の成績を「0」にします。このように、この新しく作った各成績の「1」の数が各クラスになるべく等しくなるように割り振ります。こうすることで、各クラス間の成績分布の偏りを防ぐことができます。

さらに、このような成績の変換を行うことは、次に示す効果を生み出しました。これまでの各成績や要因をクラスに均一に割り振るためには、あらかじめ、それぞれを「コスト関数」という数式にする必要があります。そして、量子アニーリングマシンでは、この各要因のコスト関数の線形和をマシンに与えて、実行させます。

ここで、線形和を計算するとき、各コスト関数に重み係数をかけるのですが、これは、どのコスト関数を優先するかを意味します。ところが一般的には、各コスト関数の計算方法は異なっているため、単純に重み係数の大きさで、優先順位を与えることはできません。あるコスト関数の重み係数を「1」にして、別のコスト関数の重み係数を「5」にしたからといって、コスト関数自体の計算が違うので、単純に5倍の優先度を与えることにはなりません。したがって、量子アニーリングマシンでは、この重み係数を付け方は、試行錯誤が必要です。

しかしながら、上記のように、全ての各要因について、その「1」の数を均一に割り振るようにコスト関数の計算方法を同じにしているので、単純に重み係数によって優先順位を付けることが可能になったのです。

こうすることで、完全ではありませんが、かなりの精度で、各要因の優先順位を持たせることができました。

下図は、旧クラスの生徒が新クラスに移る際、できるだけ「ばらける」ように振り分けた結果の例です。ここでは、このコスト関数の重み係数を「1」と小さく設定しています。そのため、ゆるく分けられています。ちなにみ、固定生徒は、各クラスに「固定」されて不動です。

以下は、国語と社会の成績の振り分けの結果です。各クラスのヒストグラムの棒は、左から評定「1」、「2」・・・「5」の人数です。ここでは、このコスト関数の重み係数を「5」と大きく設定しています。詳細な評価分析が必要ですが、ほぼ均一に割り振られています。

【3 まとめ】

以上、今回は、私たちのチームが開発した「クラス分け最適化アプリ」の紹介、そこで使った量子技術の工夫を述べました。この記事をよんで「量子コンピュータ」に興味を持ってもらえれば幸いです。

繰返しになりますが、私たちのチームは「FIXSTARS賞」を頂きました。だからといって何か賞金をもらえたわけではありませんが、技術的に面白いことができたことを評価して頂けてよかったです。

今回はここまでです。後編では、アプリのコンセプトとチームでの活動状況について述べます。

ここまで読んでくれて、ありがとうございます。

テラオカ電子 

【「Fixstars Amplify」のサイトはこちらから】

【紹介した「クラス分け最適化アプリ」はこちらからアクセスできます】

プログラムコードも公開しています。スリープ状態にあることもありますので、起動に2,3分かかることもあります。

【イチオシのYouTube動画】

このコーナでは、記事に関連する(関連しないかもしれません)気になるYouTube動画を紹介しています。今回は、上田正樹『悲しい色やね』(1982)を紹介します。最近は大阪に行くことはめったにないのですが、昔、出張で行ったとき、どういうわけかこの歌を思い出しました。今回このブログ記事を書いていて、大阪とは関係ありませんが、なぜか思い出しました。

「悲しい色やね 上田正樹 Osaka Bay Blues Masaki Ueda」

【2024/05/07投稿】

この記事を書いた人

目次