Порядок обучения квантовой состязательной сети
Квантовая генеративная состязательная сеть обучает генератор G воспроизводить распределение настоящих данных R, попеременно обновляя генератор и дискриминатор D. D измеряет Z на выходном кубите d_out. В этом разделе источника $|1\rangle$ означает «настоящие», $|0\rangle$ — «сгенерированные». Обозначим средние Z на настоящем и сгенерированном входах через $z_R$ и $z_G$. Минимизируются $\mathrm{Cost}_D=z_R-z_G$ и $\mathrm{Cost}_G=z_G$. Параметры другой схемы при каждом обновлении фиксированы. Расхождение Кульбака–Лейблера (KL) сравнивает распределения; здесь меньшее значение лучше, и сохраняются веса лучшего генератора.
Расставьте все исходные строки псевдокода в правильном порядке и восстановите вложенность циклов и условия. N_EPOCHS — число эпох, num_disc_steps и num_gen_steps — числа обновлений D и G в каждой эпохе. Строки приведены в перемешанном порядке:
A. Вычислить расхождение KL между G и R.
B. Вычислить среднее Z кубита d_out на сгенерированных и настоящих данных.
C. Вычислить среднее Z кубита d_out на сгенерированных данных.
D. Для n от 0 до N_EPOCHS:
E. Если текущее расхождение KL меньше всех предыдущих:
F. Для g от 0 до num_gen_steps:
G. Сохранить текущие веса генератора.
H. Для d от 0 до num_disc_steps:
I. Обновить $\vec\theta_G$ по $\nabla_{\vec\theta_G}\mathrm{Cost}_G(\vec\theta_D,\vec\theta_G)$ оптимизатором ADAM.
J. Обновить $\vec\theta_D$ по $\nabla_{\vec\theta_D}\mathrm{Cost}_D(\vec\theta_D,\vec\theta_G)$ оптимизатором ADAM.