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
{
"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
{
"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
{
"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の隠れ層。