| # Experiment Report |
|
|
| ## Summary |
| - opt_gapは最適なpartition+mappingとの差分ノイズで、0が最適一致を示す。 |
| - 監督学習とRLを同一スケールで比較するため、val_opt_gap/opt_gapを採用。 |
| - opt_gap正規化係数: min=0.0000, std=157.6755 (報酬もstdで正規化)。 |
| - RLはpolicy loss/entropy/approx_klを学習状況の指標として記録する。 |
| - PPOはvalue loss/clip frac/explained varも診断指標として記録する。 |
|
|
| ## Tables |
|
|
| ### Supervised summary |
|
|
| | run | model | hidden | epochs | final_val_opt_gap | best_val_opt_gap | |
| | --- | --- | --- | --- | --- | --- | |
| | cnn_h128-64_lr0.001 | cnn | 128,64 | 5 | 0.6025 | 0.6025 | |
| | mlp_h128-64_lr0.001 | mlp | 128,64 | 5 | 0.1741 | 0.1701 | |
| | vector_h128-64_lr0.001 | vector | 128,64 | 5 | 0.0681 | 0.0681 | |
|
|
| ### RL summary |
|
|
| | run | algo | hidden | episodes | final_reward_ma | opt_gap_ep200 | opt_gap_ep500 | final_opt_gap | best_opt_gap | avg_opt_gap | |
| | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| | ppo_h64-32_ep500 | ppo | 64,32 | 500 | -0.0956 | 0.1053 | 0.0949 | 0.0949 | 0.0902 | 0.2247 | |
| | rl_h64-32_ep500 | rl | 64,32 | 500 | -0.8185 | 1.2689 | 0.6225 | 0.6225 | 0.5287 | 0.9880 | |
|
|
| ## Random baseline |
|
|
| - ランダム分割(9960回)の平均opt_gap: 1.0038 |
| |
| ## Sample inputs/outputs |
| |
| ### Sample 960 |
| |
| ```json |
| { |
| "index": 960, |
| "input": { |
| "circuit_layers": [ |
| { |
| "type": "1q", |
| "qubits": [ |
| 0, |
| 1, |
| 3, |
| 4, |
| 5 |
| ] |
| }, |
| { |
| "type": "2q", |
| "qubits": [ |
| 0, |
| 3 |
| ] |
| }, |
| { |
| "type": "1q", |
| "qubits": [ |
| 2, |
| 4, |
| 5 |
| ] |
| }, |
| { |
| "type": "2q", |
| "qubits": [ |
| 2, |
| 3 |
| ] |
| } |
| ], |
| "machine": { |
| "one_q_order": [ |
| 3, |
| 4, |
| 5, |
| 0, |
| 1, |
| 2 |
| ], |
| "two_q_order": [ |
| [ |
| 0, |
| 5 |
| ], |
| [ |
| 0, |
| 2 |
| ], |
| [ |
| 4, |
| 5 |
| ], |
| [ |
| 1, |
| 3 |
| ], |
| [ |
| 0, |
| 1 |
| ], |
| [ |
| 0, |
| 4 |
| ], |
| [ |
| 1, |
| 2 |
| ], |
| [ |
| 1, |
| 5 |
| ], |
| [ |
| 3, |
| 4 |
| ], |
| [ |
| 2, |
| 5 |
| ], |
| [ |
| 2, |
| 3 |
| ], |
| [ |
| 0, |
| 3 |
| ], |
| [ |
| 3, |
| 5 |
| ], |
| [ |
| 1, |
| 4 |
| ], |
| [ |
| 2, |
| 4 |
| ] |
| ] |
| } |
| }, |
| "optimal_partition": [ |
| false, |
| true, |
| false, |
| false, |
| false, |
| false |
| ], |
| "supervised": { |
| "cnn": { |
| "partition": [ |
| true, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 0, |
| 1, |
| 2, |
| 4, |
| 5, |
| 3 |
| ], |
| "opt_gap": 0.7800830861646056 |
| }, |
| "mlp": { |
| "partition": [ |
| false, |
| true, |
| false, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 0, |
| 1, |
| 2, |
| 3, |
| 4, |
| 5 |
| ], |
| "opt_gap": 0.13952705606196197 |
| }, |
| "vector": { |
| "partition": [ |
| false, |
| true, |
| false, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 0, |
| 3, |
| 5, |
| 4, |
| 1, |
| 2 |
| ], |
| "opt_gap": 0.08878994476670309 |
| } |
| }, |
| "rl": { |
| "start_partition": [ |
| false, |
| false, |
| false, |
| false, |
| true, |
| true |
| ], |
| "start_noise": 39.0, |
| "final_partition": [ |
| false, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "final_noise": 36.0, |
| "start_mapping": [ |
| 0, |
| 1, |
| 2, |
| 3, |
| 4, |
| 5 |
| ], |
| "final_mapping": [ |
| 2, |
| 1, |
| 0, |
| 4, |
| 5, |
| 3 |
| ], |
| "start_opt_gap": 0.13952705606196197, |
| "opt_gap": 0.1205006393262399 |
| } |
| } |
| ``` |
| |
| ### Sample 143 |
|
|
| ```json |
| { |
| "index": 143, |
| "input": { |
| "circuit_layers": [ |
| { |
| "type": "1q", |
| "qubits": [ |
| 1, |
| 3, |
| 5 |
| ] |
| }, |
| { |
| "type": "2q", |
| "qubits": [ |
| 1, |
| 4 |
| ] |
| }, |
| { |
| "type": "1q", |
| "qubits": [ |
| 0, |
| 2, |
| 5 |
| ] |
| }, |
| { |
| "type": "2q", |
| "qubits": [ |
| 0, |
| 3 |
| ] |
| } |
| ], |
| "machine": { |
| "one_q_order": [ |
| 1, |
| 4, |
| 5, |
| 0, |
| 3, |
| 2 |
| ], |
| "two_q_order": [ |
| [ |
| 0, |
| 1 |
| ], |
| [ |
| 1, |
| 3 |
| ], |
| [ |
| 1, |
| 4 |
| ], |
| [ |
| 2, |
| 4 |
| ], |
| [ |
| 2, |
| 3 |
| ], |
| [ |
| 0, |
| 4 |
| ], |
| [ |
| 1, |
| 2 |
| ], |
| [ |
| 0, |
| 5 |
| ], |
| [ |
| 3, |
| 4 |
| ], |
| [ |
| 1, |
| 5 |
| ], |
| [ |
| 3, |
| 5 |
| ], |
| [ |
| 0, |
| 2 |
| ], |
| [ |
| 0, |
| 3 |
| ], |
| [ |
| 2, |
| 5 |
| ], |
| [ |
| 4, |
| 5 |
| ] |
| ] |
| } |
| }, |
| "optimal_partition": [ |
| false, |
| false, |
| true, |
| false, |
| false, |
| false |
| ], |
| "supervised": { |
| "cnn": { |
| "partition": [ |
| true, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 0, |
| 1, |
| 2, |
| 4, |
| 5, |
| 3 |
| ], |
| "opt_gap": 0.57713464098357 |
| }, |
| "mlp": { |
| "partition": [ |
| false, |
| false, |
| true, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 0, |
| 3, |
| 2, |
| 5, |
| 4, |
| 1 |
| ], |
| "opt_gap": 0.11415850041433254 |
| }, |
| "vector": { |
| "partition": [ |
| false, |
| false, |
| true, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 1, |
| 5, |
| 2, |
| 4, |
| 0, |
| 3 |
| ], |
| "opt_gap": 0.06342138911907363 |
| } |
| }, |
| "rl": { |
| "start_partition": [ |
| true, |
| true, |
| true, |
| true, |
| false, |
| false |
| ], |
| "start_noise": 132.0, |
| "final_partition": [ |
| false, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "final_noise": 25.0, |
| "start_mapping": [ |
| 0, |
| 1, |
| 2, |
| 3, |
| 4, |
| 5 |
| ], |
| "final_mapping": [ |
| 2, |
| 1, |
| 0, |
| 4, |
| 5, |
| 3 |
| ], |
| "start_opt_gap": 0.7547145305169762, |
| "opt_gap": 0.07610566694288835 |
| } |
| } |
| ``` |
|
|
| ### Sample 1887 |
|
|
| ```json |
| { |
| "index": 1887, |
| "input": { |
| "circuit_layers": [ |
| { |
| "type": "1q", |
| "qubits": [] |
| }, |
| { |
| "type": "2q", |
| "qubits": [ |
| 2, |
| 3 |
| ] |
| }, |
| { |
| "type": "1q", |
| "qubits": [ |
| 0, |
| 2, |
| 3, |
| 5 |
| ] |
| }, |
| { |
| "type": "2q", |
| "qubits": [ |
| 1, |
| 5 |
| ] |
| } |
| ], |
| "machine": { |
| "one_q_order": [ |
| 0, |
| 1, |
| 4, |
| 2, |
| 3, |
| 5 |
| ], |
| "two_q_order": [ |
| [ |
| 2, |
| 5 |
| ], |
| [ |
| 1, |
| 4 |
| ], |
| [ |
| 1, |
| 2 |
| ], |
| [ |
| 2, |
| 4 |
| ], |
| [ |
| 0, |
| 1 |
| ], |
| [ |
| 4, |
| 5 |
| ], |
| [ |
| 0, |
| 4 |
| ], |
| [ |
| 0, |
| 2 |
| ], |
| [ |
| 2, |
| 3 |
| ], |
| [ |
| 1, |
| 3 |
| ], |
| [ |
| 1, |
| 5 |
| ], |
| [ |
| 0, |
| 5 |
| ], |
| [ |
| 3, |
| 4 |
| ], |
| [ |
| 0, |
| 3 |
| ], |
| [ |
| 3, |
| 5 |
| ] |
| ] |
| } |
| }, |
| "optimal_partition": [ |
| true, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "supervised": { |
| "cnn": { |
| "partition": [ |
| true, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 0, |
| 1, |
| 2, |
| 4, |
| 5, |
| 3 |
| ], |
| "opt_gap": 0.07610566694288835 |
| }, |
| "mlp": { |
| "partition": [ |
| true, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 0, |
| 1, |
| 5, |
| 3, |
| 4, |
| 2 |
| ], |
| "opt_gap": 0.11415850041433254 |
| }, |
| "vector": { |
| "partition": [ |
| true, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "mapping": [ |
| 3, |
| 1, |
| 0, |
| 5, |
| 4, |
| 2 |
| ], |
| "opt_gap": 0.09513208367861045 |
| } |
| }, |
| "rl": { |
| "start_partition": [ |
| false, |
| false, |
| true, |
| true, |
| false, |
| true |
| ], |
| "start_noise": 100.0, |
| "final_partition": [ |
| false, |
| false, |
| false, |
| false, |
| false, |
| false |
| ], |
| "final_noise": 24.0, |
| "start_mapping": [ |
| 0, |
| 1, |
| 2, |
| 3, |
| 4, |
| 5 |
| ], |
| "final_mapping": [ |
| 2, |
| 1, |
| 0, |
| 4, |
| 5, |
| 3 |
| ], |
| "start_opt_gap": 0.57713464098357, |
| "opt_gap": 0.09513208367861045 |
| } |
| } |
| ``` |
|
|
| ## RL validation (100 samples) |
|
|
| - after avg_opt_gap: 0.0949, best: 0.0000, worst: 0.1839 |
| - before avg_opt_gap: 1.0043, best: 0.0127, worst: 3.7102 |
|
|
| ## Images |
|
|
| - learning curves: reports_6q/learning_curves.png |
| - zoom (mlp/vector): reports_6q/learning_curves_zoom.png |
| - rl val opt_gap (after): reports_6q/rl_val_opt_gap_after.png |
| - rl val opt_gap (before): reports_6q/rl_val_opt_gap_before.png |
| - rl reward moving avg: reports_6q/rl_reward_mavg.png |
| - rl policy metrics: reports_6q/rl_policy_metrics.png |
| - ppo diagnostics: reports_6q/ppo_diagnostics.png |
| |
| ## Image notes |
| |
| - learning_curves.png: 2x2でmlp/vector/cnnのval opt_gapとrl opt_gapを表示。凡例の`h=64,32`は隠れ層構成、`rl h=64,32`/`ppo h=64,32`はアルゴリズムと隠れ層を示す。 |
| - learning_curves_zoom.png: mlp/vectorのみのval opt_gapをズーム表示。凡例はモデル名と隠れ層構成。 |
| - rl_val_opt_gap_after.png: RLで得た最終partition+mappingのopt_gapヒストグラム。凡例なし。 |
| - rl_val_opt_gap_before.png: 初期partition+mappingのopt_gapヒストグラム。凡例なし。 |
| - rl_reward_mavg.png: window=20の報酬移動平均。凡例はアルゴリズムと隠れ層。 |
| - rl_policy_metrics.png: policy loss/entropy/approx_klの推移。凡例はアルゴリズムと隠れ層。 |
| - ppo_diagnostics.png: value loss/clip frac/explained var/approx_kl/policy entropyの推移。凡例はPPOの隠れ層。 |
|
|