忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Qiskit】Hゲートで重ね合わせ状態を作ろう!1量子ビットの確率実験

前回は、何も操作しない初期状態の量子ビットを測定すると、必ず 0(100%)になることを確認しました。今回はついに、量子コンピュータの真骨頂である「Hゲート(アダマールゲート)」を使って、量子を「確率の波(重ね合わせ状態)」に変換する実験をしてみます!

1. サンプルコード

量子ビットにHゲートを適用し、確率の波を作ってから測定するコードです。

from qiskit import QuantumCircuit
from qiskit.providers.basic_provider import BasicSimulator

# 1量子ビット、1古典ビットを準備
qc = QuantumCircuit(1, 1)

# Hゲート(アダマールゲート)を適用して「確率の波」にする
qc.h(0)

# 測定
qc.measure(0, 0)

# 回路図をテキスト形式で出力
print("--- 回路図 ---")
print(qc.draw(output='text'))

# シミュレータで1000回実行
simulator = BasicSimulator()
result = simulator.run(qc, shots=1000).result()
counts = result.get_counts()

print("\n--- 実行結果 ---")
print(f"実行結果: {counts}")

2. 実行結果と回路図

上記のコードを実行すると、次のような回路図と結果が得られます。

--- 回路図 ---
     ┌───┐┌─┐
  q: ┤ H ├┤M├
     └───┘└╥┘
c: 1/══════╩═
           0 

--- 実行結果 ---
実行結果: {'1': 463, '0': 537}

3. 解説:ついに重ね合わせ状態ができた!

実行結果を見ると、先ほどまで 100% だった 0 だけでなく、1 もほぼ半々の確率(この時は463回と537回)で出現しています!

  • Hゲートの物理的効果:極低温で静止していた純粋な |0> の状態に対し、外部から絶妙なエネルギー(パルス)を加えることで、状態をぐるっと回転させました。
  • 確率の波の誕生:これにより、量子は「0 でもあるし 1 でもある」という確率の波(重ね合わせ状態)に変換されます。
  • 測定による収縮:その波の状態のまま測定器にかけることで、毎回ランダムに 01 が決定されるようになります。
Hゲートによって量子が「波」になり、ついにランダムな確率の世界が姿を現しました!
この確率の波こそが、量子コンピュータが並列計算を行える最大の原動力です。
PR

【Qiskit】1量子ビットの測定実験:「何もしないと0」の物理的意味

量子コンピュータのコードを書くとき、初期状態の量子ビットをそのまま測定するとどうなるでしょうか?今回は、あえて操作を加えずに 1量子ビット を定義して測定するシンプルな実験と、その裏にある物理的な意味を解説します。

1. サンプルコード

1量子ビットと1つの古典ビットを準備し、Hゲートなどの操作を行わずにそのまま測定するコードです。

from qiskit import QuantumCircuit
from qiskit.providers.basic_provider import BasicSimulator

# 1量子ビット、1古典ビットを準備
qc = QuantumCircuit(1, 1)

# (操作を加えずにそのまま測定)
qc.measure(0, 0)

# シミュレータで1000回実行
simulator = BasicSimulator()
result = simulator.run(qc, shots=1000).result()
counts = result.get_counts()

print(f"実行結果: {counts}")

2. 実行結果

上記のコードを実行すると、何度(何回shotsを回しても)結果は必ず以下のようになります。

実行結果: {'0': 1000}

3. 解説:なぜ「1」は出ないのか?

「量子力学=ランダムに確率で変わるもの」というイメージがあると 1 も混ざりそうになりますが、ここには明確な理由があります。

  • 初期状態は純粋な |0>:実際のハードウェア(超伝導回路など)は極低温に冷却され、余計なエネルギーが奪われた状態(基底状態)からスタートするため、何も操作しなければ 100% 確実な 0 です。
  • 「波」にするにはエネルギーが必要:Hゲート(アダマールゲート)などで外部からエネルギーを加え、量子を揺らがせて「確率の波(重ね合わせ)」に変換して初めて、01 が確率的に出現するようになります。
  • 測定と初期状態の違い:初期状態の 0 は静まり返った純粋な状態ですが、測定後の 0 は「波」の状態で漂っていたものが測定の衝撃で強制的に収縮させられた結果です。
量子は「何もしなければピシッと0」!
Hゲートなどのエネルギー操作で「波」に変換して初めて、量子らしい確率の世界が始まります。

【DS検定】AIが突然覚醒する!?「グロッキング(Grokking)」現象とは

「いくら学習させてもデータを丸暗記(過学習)するだけで、一向に未知の問題が解けない…」と思っていたAIモデルが、学習ステップを極端に長く継続した結果、ある瞬間に突然「データの法則性」を理解して精度100%に跳ね上がる。そんな嘘のような現象が実在します。それが「グロッキング(Grokking)」です!

1. 【 問題 】

ディープラーニングの学習過程において、訓練データに対する精度が100%に達して過学習(丸暗記)が起きた後もさらに大量の学習(勾配降下法)を続けさせると、ある地点で突然、未知の検証データに対する精度が激増して汎化性能を獲得する現象を何と呼ぶでしょうか?

① グロッキング(Grokking)
② カタストロフィック・フォーゲッティング(破滅的忘却)
③ 勾配消失(Vanishing Gradient)
④ スパーシティ(疎性)


2. 【 解答 】

正解: ① グロッキング(Grokking)

3. 整理:従来常識を覆す「過学習のその先」

これまでの機械学習の教科書では「検証用データの精度が下がり始めたら(過学習が起きたら)、即座に学習をストップする(早期終了:Early Stopping)」のが鉄則とされていました。しかし、グロッキングはその常識を覆します。

【 グロッキング発生時の精度の変化 】

[学習初期〜中期]
・訓練データの精度:100%(完璧に答えを暗記した!)
・検証データの精度:0% 〜 低い(丸暗記なので応用が効かない=過学習状態)

普通ならここで学習を止めるが、さらに過剰に学習を続ける…

[学習終盤(何万ステップ後)]
・訓練データの精度:100%
・検証データの精度:0% から 突然 100% に急上昇!(覚醒)

内部のネットワーク構造を解析した研究によると、過学習状態のときは「力任せの複雑な計算(丸暗記)」で解いていたモデルが、過剰な学習(正則化等の影響)を経る中で、よりシンプルで本質的な数学的ルール(表現)へと再構築された結果、突然応用力が開花することが分かっています。


4. なぜ起きる?と「創発(Emergence)」との違い

AIの能力向上に関する重要用語として、「創発」との違いもセットで整理しておきましょう。

用語意味・現象の特徴
グロッキング
(Grokking)
同一のモデル・同一のデータで「学習時間(ステップ数)」を極端に長く伸ばしたときに、突然過学習を脱出してルールを「会得(理解)」する現象。
創発能力
(Emergent Abilities)
LLM(大規模言語モデル)などで、「パラメータ数(モデル規模)」や「データ量」をある閾値以上に大きくしたときに、突然推論能力や計算能力などの新機能が開花する現象。

5. DS検定・AI資格形式:実戦4択クイズ

問:ディープラーニングにおける「グロッキング(Grokking)」現象に関する記述として、最も適切なものはどれか。

① モデルのパラメータ数を小さくすればするほど発生しやすくなり、過学習を未然に防ぐための推奨テクニックである。
② 訓練データへの適合(丸暗記)が完了した後、さらに学習を長時間継続することで、遅れて汎化性能(応用力)が急激に獲得される現象である。
③ 新しいタスクを学習させた際に、過去に学習したタスクの記憶が完全に上書きされて消滅してしまう現象のことである。
④ 勾配降下法において、学習率が大きすぎるために損失関数の値が無限大に発散してしまう現象のことである。

【 正解: ② 】

解説: グロッキングの本質を問う問題です。
②が正解です。訓練精度が上がった後、遅れて(Lagged)検証精度が激増するのが最大の特徴です。
①グロッキングを起こすには膨大な計算ステップが必要となるため、実用上の過学習対策として能動的に狙うのは計算コスト的に容易ではありません。
③は「破滅的忘却(Catastrophic Forgetting)」の説明です。
④は「勾配爆発(Exploding Gradient)」などの説明です。


6. まとめ

「過学習の限界を超えて学習し続けたら、AIが突然本質を理解して賢くなった」というグロッキングは、ディープラーニングの奥深さを象徴する非常にエキサイティングなテーマです。 「丸暗記(過学習)の後に遅れて起こる汎化性能の急上昇」というキーワードが出てきたら、迷わず「グロッキング」と回答できるようにしておきましょう!



【機械学習の知識】ピアソン相関係数の概要と読み解き方

2つのデータの関係性を分析する際、「一方が増えると、もう一方も増えるのか?」という関係性を数値で客観的に評価したい場面が多々あります。その最も代表的な指標が「ピアソン相関係数」です。今回はその意味と数値の読み解き方を整理します。

1. 【 概要 】

ピアソン相関係数とは、2つの変数が「どれだけ同じように変化するか(直線的な関係性があるか)」を表す統計指標です。

例えば、「気温とアイスクリームの売上」のように、一方が上がればもう一方も上がる関係にあるのか、あるいは全く無関係なのかを「数値」として客観的に判断するために用いられます。


2. 【 基本手順(数値の読み解きルール) 】

(1) 相関係数は、必ず `-1` から `1` までの値を取る
(2) 数値の「絶対値」が大きいほど、相関が強い(連動性が高い)
(3) 正の値(プラス)は、一方が大きくなれば他方も大きくなる「正の相関」
(4) 負の値(マイナス)は、一方が大きくなれば他方は小さくなる「負の相関」
(5) `0` に近い値は、2つの変数に関連性が見られない「無相関」

3. 整理:各状態の具体的な意味

相関係数の数値(プラス、マイナス、ゼロ)がそれぞれ何を意味しているのか、具体例を交えてステップごとに見ていきましょう。

【 各数値が示す具体的な状態 】

状態(1):正の相関(値が 0 より大きく 1 に近い)
一方が増えると、もう一方も同じように増える関係です。
例:「気温」と「エアコンの電気代」、「勉強時間」と「テストの点数」など。

状態(2):負の相関(値が 0 より小さく -1 に近い)
一方が増えると、もう一方は逆に減っていく関係です。
例:「商品の価格」と「売上数量」、「標高」と「気温」など。

状態(3):無相関(値が 0 に近い)
一方の変化が、もう一方に全く影響を与えていない状態です。
例:「身長」と「テストの点数」、「靴のサイズ」と「年収」など。

状態(4):絶対値と強さの目安
「0.7以上(または -0.7以下)」= 強い相関がある
「0.4〜0.7(または -0.4〜-0.7)」= 中程度の相関がある
「0.2以下(または -0.2以上)」= ほとんど相関がない

4. 関連して押さえたい「相関関係と因果関係の決定的な違い」

データ分析の現場で最も注意しなければならないのが、「相関関係があるからといって、因果関係があるとは限らない」という点です。

例えば、「アイスクリームの売上」と「水難事故の件数」のピアソン相関係数を計算すると、強い『正の相関(プラスの値)』が出ます。

しかし、「アイスを買うと溺れる(因果関係)」わけではありません。実際には「夏場で気温が高い」という第3の要因(潜伏変数)が、両方を同時に増加させているだけです。

相関係数はあくまで「数値が連動して動いているか」を示しているに過ぎず、「どちらかが原因で、どちらかが結果か」までは証明してくれません。分析の際は、数値だけで判断せず背景のロジックをしっかり考える必要があります。


5. 補足:Python(Pandas)での相関係数の出し方

実際のデータ分析(Python)で、ピアソン相関係数を一瞬で算出するコードの例です。
Pandasを使えば、全項目同士の相関係数を表(相関行列)にして確認できます。

# 2つの列のピアソン相関係数を計算(デフォルトがピアソンです)
df['気温'].corr(df['売上'])

# データフレーム全体の相関行列を出力
df.corr()

# 出力イメージ
# 気温と売上の相関係数が「0.85」なら、強い正の相関!

6. まとめ

データマイニングや機械学習の前処理で頻繁に使われる「ピアソン相関係数」。-1から1までの範囲をとり、プラスなら正の相関(共に増える)、マイナスなら負の相関(一方が増えると一方は減る)、絶対値が1に近いほど強い連動性を示すという基本ルールを押さえておきましょう。因果関係との違いに注意しながら、データ間の隠れたつながりを見つける強力な武器として活用してください!


【DS検定対策】「相関」と「因果」は違う!統計的因果推論の基本

データ分析で最も重要な問いの一つが、「その結果は本当にその施策が原因で起きたのか?」ということです。データ同士の「単なる相関関係」と「本当の因果関係」を明確に見極め、正しい意思決定を行うための手法、それが「統計的因果推論」です。

1. 【 問題 】

データ分析において、変数間の単純な関連性(相関関係)だけでなく、交錯因子などのバイアスを取り除いて「ある原因(介入)が特定の結果を引き起こしたか」という因果関係を統計的に推論する枠組みを何と呼ぶでしょうか?

① 統計的因果推論(Causal Inference)
② 主成分分析(PCA)
③ アソシエーション分析
④ 因子分析(Factor Analysis)


2. 【 解答 】

正解: ① 統計的因果推論(Causal Inference)

3. 整理:「相関関係」と「因果関係」の決定的な違い

2つのデータの動きが似ているからといって、そこに原因と結果の関係があるとは限りません。

【 よくある間違い:擬似相関(見せかけの相関) 】

「アイスクリームの売上が増えると、水難事故件数が増える」

・相関関係:あり(アイスが売れる時期に、水難事故も増えている)
・因果関係:なし(アイスを食べたから事故が起きたわけではない)

真の原因(交錯因子):気温の上昇(夏)
「気温が高い」から「アイスが売れる」し、同時に「海や川で泳ぐ人が増えて事故が増える」だけです。この気温のような第3の変数を「交錯因子(錯乱因子)」と呼びます。

4. 試験に出る!因果推論の主なアプローチ

統計的因果推論では、交錯因子の影響を排除して「純粋な効果」を測定するために様々な手法が使われます。

手法・概念仕組み・特徴
ランダム化比較試験
(RCT / A/Bテスト)
対象を無作為(ランダム)に2グループに分け、片方だけに施策を行う。因果推論の黄金律(最も信頼性が高い)とされる手法。
傾向スコアマッチング
(Propensity Score)
ランダム分けができない過去データ(観察データ)において、似た属性(背景)を持つデータ同士をペアにして比較し、バイアスを減らす手法。
反実仮想モデル
(Counterfactual)
「もしこの施策を行わなかったら(もし〜だったら)どうなっていたか?」という「起こらなかった世界の IF 」を推測して効果を比較する考え方。

5. DS検定形式:実戦4択クイズ

問:統計的因果推論およびデータ分析における「相関」と「因果」に関する記述として、最も適切なものはどれか。

① 2つの変数間に高い相関関係(相関係数が 0.9 以上)が認められれば、必ずそこには因果関係が存在すると判定してよい。
② 交錯因子(第3の変数)が存在する場合、実際には因果関係がない2つの変数の間に、あたかも因果関係があるかのような相関が生じることがある。
③ ランダム化比較試験(RCT)を行うと交錯因子の影響が極めて大きくなるため、観察データを用いた回帰分析の方が因果推論に適している。
④ 「あるキャンペーンを実施した結果、売上が上がった」ことを証明するには、キャンペーン期間中の売上データのみを集計すれば十分である。

【 正解: ② 】

解説: 因果推論の基本思想を問う本質的な問題です。
②が正解です。交錯因子の存在によって生じる見せかけの相関を「擬似相関」と呼びます。
①相関係数がどれだけ高くても、擬似相関の可能性があるため因果関係の証明にはなりません。
③RCTはランダム割り当てによって交錯因子を均等化できるため、因果推論において最も理想的な手法です。
④キャンペーンを実施しなかった場合(反実仮想)の売上と比較しなければ、単なる季節変動などの影響と区別できません。


6. まとめ

DS検定や実務において、「単なる相関と因果の違い」「交錯因子の除去」「A/Bテストや傾向スコア」といったテーマが出たら、正解は「統計的因果推論」に関連する知識です。 データを扱うデータサイエンティストにとって、「相関関係=因果関係ではない」という視点は最も重要な倫理・スキルの一つですので、しっかりと押さえておきましょう!