Pengoptimum Klasik
Apa itu pengoptimum?​
Victoria Lipinska menerangkan pengoptimum klasik, dan bagaimana ia berfungsi sebagai sebahagian daripada VQE.
Kamu akan mendengar tentang beberapa contoh pengoptimum dan bagaimana prestasinya dalam kehadiran dan ketiadaan hingar.
Rujukan​
Artikel-artikel berikut dirujuk dalam video di atas.
- A Comparison of Various Classical Optimizers for a Variational Quantum Linear Solver, Pellow-Jarman, et al.
- The Variational Quantum Eigensolver: A review of methods and best practices, Tilly, et al.
- Quantum computational chemistry, McArdle, et al.
- Barren plateaus in quantum neural network training landscapes, McClean, et al.
- Connecting Ansatz Expressibility to Gradient Magnitudes and Barren Plateaus, Holmes, et al.
- Effect of barren plateaus on gradient-free optimization, Arrasmith, et al.
Mengekod pengoptimum klasik​
Dalam pelajaran-pelajaran sebelum ini, kamu telah belajar cara membuat Hamiltonian yang sesuai untuk digunakan pada komputer kuantum dan cara membuat litar variasi. Kamu 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 kamu 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)
Some example code is shown below. We restrict our discussion here to the last two arguments.
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 diperhatikan, semuanya merupakan kaedah untuk meminimumkan fungsi skalar satu atau lebih pemboleh ubah:
- cobyla: Algoritma Pengoptimuman Melalui Anggaran Linear (COBYLA).
- slsqp: Pengaturcaraan Kuasa Dua Terkecil Berurutan (SLSQP).
- nelder-mead Algoritma Nelder-Mead.
Kebanyakan algoritma pengoptimuman klasik yang tersedia ialah peminimulan setempat, kerana ia menggunakan pelbagai kaedah untuk mencari minimum setempat, tetapi tidak dijamin untuk mencari minimum global. Sesetengah pengoptimum klasik secara eksplisit menganggar kecerunan dan menggunakannya untuk mencari minimum setempat. Yang lain mungkin menggunakan anggaran linear atau kuadratik berturutan bagi fungsi objektif untuk mencari minimum.
Algoritma-algoritma ini mempunyai beberapa pilihan yang sama, tetapi dengan perbezaan halus. Contohnya, semua mempunyai pilihan untuk menentukan bilangan maksimum iterasi menggunakan notasi 'maxiter': 200 dari atas. Semua mempunyai beberapa pilihan yang menyatakan kriteria henti berdasarkan nilai fungsi atau pemboleh ubah, walaupun kriteria ini sedikit berbeza untuk algoritma yang berbeza. COBYLA, sebagai contoh, membolehkan kamu menyatakan toleransi (contohnya, 'tol': 0.0001) yang merupakan had bawah "rantau kepercayaan". Berbanding, SLSQP membolehkan kamu menyatakan matlamat dalam ketepatan fungsi yang digunakan dalam kriteria henti ('ftol'). Nelder-Mead membolehkan kamu menyatakan toleransi dalam perbezaan antara tekaan parameter () berturutan (xatol) atau toleransi dalam perbezaan antara nilai berturutan yang diperoleh untuk fungsi kos (fatol) (atau kedua-duanya).
Untuk senarai lengkap algoritma dan pilihan yang tersedia, lawati dokumentasi minimize SciPy.