№ 2009Квантовые вычисленияУровень 3

Порядок обучения квантовой состязательной сети

Квантовая генеративная состязательная сеть обучает генератор 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.