Langkau ke kandungan utama

Pengoptimum Klasik

Apa itu pengoptimum?

Victoria Lipinska menerangkan pengoptimum klasik, dan bagaimana ia berfungsi sebagai sebahagian daripada VQE.

Anda akan mendengar tentang beberapa contoh pengoptimum dan bagaimana prestasinya dalam kehadiran dan ketiadaan hingar.

Rujukan

Artikel-artikel berikut dirujuk dalam video di atas.

Mengekod pengoptimum klasik

Dalam pelajaran-pelajaran sebelum ini, anda telah belajar cara membuat Hamiltonian yang sesuai untuk digunakan pada komputer kuantum dan cara membuat litar variasi. Anda juga belajar bahawa litar variasi (atau ansatz) mengandungi parameter yang perlu diubah, dan pilihan parameter yang optimum ialah pilihan yang menghasilkan fungsi kos atau tenaga yang paling rendah. Oleh itu, masalah kita dikurangkan kepada mencari parameter optimum dalam ruang parameter. Kebanyakan kerja dalam pengoptimum klasik telah dilakukan untuk kita, kerana pengoptimum yang sangat baik tersedia daripada beberapa sumber.

Dalam pelajaran ini anda akan belajar:

  • Bagaimana pengoptimum klasik sesuai dalam pengiraan VQE
  • Pengoptimum klasik apa yang tersedia daripada SciPy
  • Pengoptimum apa yang belum tersedia melalui SciPy dan cara menambah sementara ini menggunakan qiskit.algorithms
  • Pilihan apa yang tersedia untuk pengoptimum ini dan kepentingannya bagi pengkomputeran kuantum

SciPy ialah perpustakaan Python sumber terbuka percuma dengan pakej yang relevan dalam banyak bidang pengkomputeran saintifik, termasuk pengoptimuman. Secara khusus, SciPy mempunyai pakej pengoptimuman yang merangkumi minimize:

from scipy.optimize import minimize This minimize function has several arguments, but the most relevant arguments for quantum chemistry are:

  • The cost function (cost_func). This is related to the Hamiltonian, but also includes some complexities, such as determining the expectation value by using Estimator, and in the case of excited state calculations, might include orthogonality conditions.
  • An initial state (x0) for the system, often the Hartree Fock state
  • Other arguments, including arguments of the cost function itself
  • The method set to the classical optimizer you select
  • Options for the classical optimizer (not to be confused with Session options discussed in the next section)

Beberapa contoh kod ditunjukkan di bawah. Kita hadkan perbincangan kita di sini kepada dua argumen terakhir.

cost_func,
x0,
args=(ansatz, hamiltonian, estimator),
method="cobyla",
options={"maxiter": 200})

SciPy mempunyai dokumentasi tentang semua kaedah minimize yang tersedia. Berikut adalah beberapa contoh yang patut diberi perhatian, kesemuanya adalah kaedah untuk meminimumkan fungsi skalar bagi satu atau lebih pembolehubah:

  • cobyla: Algoritma Optimization BY Linear Approximation (COBYLA).
  • slsqp: Sequential Least Squares Programming (SLSQP).
  • nelder-mead Algoritma Nelder-Mead.

Kebanyakan algoritma pengoptimuman klasik yang tersedia adalah minimizer tempatan, dalam erti kata mereka menggunakan pelbagai kaedah untuk mencari minima tempatan, tetapi tidak dijamin untuk mencari minima global. Sesetengah optimizer klasik secara eksplisit menganggarkan gradien dan menggunakannya untuk mencari minima tempatan. Yang lain mungkin menggunakan penghampiran linear atau kuadratik berturutan bagi fungsi objektif untuk mencari minima.

Algoritma ini mempunyai beberapa pilihan yang sama, tetapi dengan perbezaan yang halus. Sebagai contoh, kesemuanya mempunyai pilihan untuk menentukan bilangan maksimum iterasi menggunakan notasi 'maxiter': 200 di atas. Kesemuanya mempunyai pilihan tertentu untuk menentukan kriteria penghentian berdasarkan nilai fungsi atau pembolehubah, walaupun kriteria ini sedikit berbeza untuk algoritma yang berbeza. COBYLA, sebagai contoh, membenarkan anda menentukan toleransi (sebagai contoh, 'tol': 0.0001) yang merupakan sempadan bawah pada suatu "trust region". Sebagai perbandingan, SLSQP membenarkan anda menentukan sasaran ketepatan fungsi yang digunakan dalam kriteria penghentian ('ftol'). Nelder-Mead membenarkan anda menentukan toleransi dalam perbezaan antara tekaan parameter (xx) berturutan (xatol) atau toleransi dalam perbezaan antara nilai berturutan yang diperoleh untuk fungsi kos f(x)f(x) (fatol) (atau kedua-duanya). Untuk senarai lengkap algoritma dan pilihan yang tersedia, lawati dokumentasi minimize SciPy.