Kata Pengantar
Artikel ini akan fokus pada metode untuk memecahkan masalah optimasi matematis berdasarkan penggunaan gradien fungsi. Tujuan utamanya adalah untuk mengumpulkan dalam artikel semua ide paling penting yang terkait dengan metode ini dan berbagai modifikasinya.
UPD Dalam komentar mereka menulis bahwa pada beberapa browser dan formula aplikasi seluler tidak ditampilkan. Sayangnya, saya tidak tahu bagaimana menghadapinya. Saya hanya bisa mengatakan bahwa saya menggunakan makro "inline" dan "display" dari editor Habrava. Jika Anda tiba-tiba tahu cara memperbaikinya - silakan tulis di komentar.
Catatan dari penulis
Pada saat penulisan, saya membela disertasi, tugas yang mengharuskan saya untuk memiliki pemahaman yang mendalam tentang metode teoritis pada dasarnya optimasi matematika. Namun demikian, mata saya (dari orang lain) masih kabur dari rumus panjang yang menakutkan, jadi saya menghabiskan banyak waktu untuk mengisolasi ide-ide kunci yang akan menandai variasi metode gradien yang berbeda. Tujuan pribadi saya adalah menulis artikel yang berisi jumlah minimum informasi yang diperlukan untuk pemahaman topik yang kurang lebih terperinci. Tetapi bersiaplah, bagaimanapun juga, seseorang tidak dapat melakukannya tanpa formula.
Pernyataan masalah
Sebelum menjelaskan metode, Anda harus terlebih dahulu menggambarkan masalahnya, yaitu: "Diberikan banyak
mathcalK dan fungsi
f: mathcalK rightarrow mathbbR perlu menemukan titik
xβ dalam mathcalK sedemikian rupa
f(x) geqf(xβ) untuk semua
x in mathcalK ", Yang biasanya ditulis seperti ini
f(x) rightarrow minx in mathcalK.
Secara
teori , biasanya diasumsikan demikian
f Merupakan fungsi yang dapat dibedakan dan cembung, dan
mathcalK - set cembung (dan bahkan lebih baik, jika sama sekali
mathcalK= mathbbRn ), ini memungkinkan kami untuk memberikan jaminan keberhasilan penerapan gradient descent. Dalam
praktiknya, gradient descent berhasil diterapkan bahkan ketika tugas tidak memiliki salah satu properti di atas (contoh nanti dalam artikel).
Sedikit matematika
Misalkan untuk saat ini kita hanya perlu mencari fungsi minimum satu dimensi
f(x) rightarrow minx in mathbbR.
Kembali pada abad ke-17, Pierre Fermat datang dengan kriteria yang memungkinkan untuk menyelesaikan masalah optimasi sederhana, yaitu,
jika xβ - titik minimum fβ lalufβ²(xβ)=0
dimana
fβ² - turunan
f . Kriteria ini didasarkan pada pendekatan linier.
f(x) kiraβkiraf(xβ)+fβ²(xβ)(xβxβ).
Lebih dekat
x untuk
xβ , semakin akurat perkiraan ini. Di sisi kanan adalah ekspresi itu, kapan
fβ²(xβ) neq0 mungkin lebih suka
f(xβ) less adalah esensi utama dari kriteria. Dalam kasus multidimensi, serupa dari pendekatan linier
f(x) approxf(xβ)+ nablaf(xβ)T(xβxβ) (selanjutnya
xTy= sumni=1xiyi - produk skalar standar, bentuk penulisan ini disebabkan oleh fakta bahwa produk skalar sama dengan produk matriks dari vektor baris oleh vektor kolom), kriteria diperoleh
nablaf(xβ)=0.
Nilai
nablaf(xβ) -
gradien fungsi
f pada intinya
xβ . Juga, kesetaraan gradien ke nol berarti kesetaraan semua turunan parsial menjadi nol, oleh karena itu, dalam kasus multidimensi, orang dapat memperoleh kriteria ini hanya dengan menerapkan kriteria satu dimensi untuk setiap variabel secara terpisah.
Perlu dicatat bahwa kondisi ini diperlukan, tetapi tidak cukup, contoh paling sederhana adalah 0 untuk
f(x)=x2 dan
f(x)=x3

Kriteria ini cukup dalam kasus fungsi cembung, sebagian besar karena hal ini dimungkinkan untuk mendapatkan begitu banyak hasil untuk fungsi cembung.
Fungsi kuadratik
Fungsi kuadratik dalam
mathbbRn Merupakan fungsi dari bentuk
f(x)=f(x1,x2, ldots,xn)= frac12 sumni,j=1aijxixjβ sumni=1bixi+c
Untuk menghemat ruang (dan lebih sedikit repot dengan indeks), fungsi ini biasanya ditulis dalam bentuk matriks:
f(x)= frac12xTAxβbTx+c,
dimana
x=(x1, ldots,xn)T ,
b=(b1, ldots,bn)T ,
A Adalah matriks di mana di persimpangan
i string dan
j kolom adalah nilainya
frac12(aij+aji) (
A ternyata simetris - ini penting). Selanjutnya ketika menyebutkan fungsi kuadrat, saya akan memiliki fungsi di atas.
Mengapa saya berbicara tentang ini? Faktanya adalah bahwa fungsi kuadrat penting dalam optimasi karena dua alasan:
- Mereka juga terjadi dalam praktek, misalnya, ketika membangun regresi linear-kuadrat terkecil
- Gradien fungsi kuadrat adalah fungsi linier, khususnya untuk fungsi di atas
frac partial partialxif(x1,x2, ldots,xn)=aiixi+ sumj neqi frac12(aij+aji)xjβbi,
Atau dalam bentuk matriks
nablaf(x)=Axβb,
Demikian sistemnya nablaf(x)=0 - sistem linear. Tidak ada sistem yang lebih sederhana daripada linear. Pikiran yang saya coba sampaikan adalah optimalisasi fungsi kuadrat - kelas paling sederhana dari masalah optimasi . Di sisi lain, fakta itu nablaf(xβ)=0 - kondisi minimum yang diperlukan memungkinkan untuk menyelesaikan sistem linear melalui masalah optimisasi. Beberapa saat kemudian saya akan mencoba meyakinkan Anda bahwa ini masuk akal.
Properti Gradien Berguna
Nah, kita tampaknya telah menemukan bahwa jika suatu fungsi dapat dibedakan (memiliki turunan terhadap semua variabel), maka pada titik minimum gradien harus sama dengan nol. Tetapi apakah gradien membawa informasi yang berguna ketika tidak nol?
Mari kita coba memecahkan masalah yang lebih sederhana:
intinya diberikan x menemukan titik barx sedemikian rupa f( barx)<f(x) . Mari kita ambil satu poin di sebelah
x lagi menggunakan pendekatan linier
f( barx) kiraβkiraf(x)+ nablaf(x)T( barxβx) . Jika kamu ambil
barx=xβ alpha nablaf(x) ,
alpha>0 lalu kita dapatkan
f( barx) approxf(x)β alpha | nablaf(x) |2<f(x).
Begitu pula jika
alpha<0 lalu
f( barx) akan lebih
f(x) (selanjutnya
||x||= sqrtx21+x22+ ldots+x2n ) Sekali lagi, karena kami menggunakan perkiraan, pertimbangan ini hanya berlaku untuk kecil
alpha . Untuk meringkas di atas, jika
nablaf(x) neq0 , maka
gradien menunjukkan arah peningkatan fungsi lokal terbesar .
Berikut adalah dua contoh untuk fungsi dua dimensi. Gambar-gambar semacam ini sering dapat dilihat dalam demonstrasi gradient descent. Garis berwarna adalah garis
level yang disebut, ini adalah satu set titik di mana fungsi mengambil nilai tetap, dalam kasus saya ini adalah lingkaran dan elips. Saya menandai garis biru level dengan nilai yang lebih rendah, merah - dengan yang lebih tinggi.


Perhatikan bahwa untuk permukaan ditentukan oleh persamaan bentuk
f(x)=c ,
nablaf(x) menetapkan normal (pada orang umum - tegak lurus) ke permukaan ini. Perhatikan juga bahwa meskipun gradien menunjukkan arah peningkatan terbesar pada fungsi, tidak ada jaminan bahwa dalam arah yang berlawanan dengan gradien, Anda dapat menemukan minimum (misalnya, gambar kiri).
Keturunan gradien
Hanya ada langkah kecil yang tersisa untuk metode penurunan gradien dasar: kami belajar dari titik tersebut
x mendapatkan poin
barx dengan nilai fungsi yang lebih rendah
f . Apa yang mencegah kita mengulangi ini beberapa kali? Sebenarnya, ini adalah gradient descent: kita membangun urutannya
xk+1=xkβ alphak nablaf(xk).
Nilai
alphak disebut
ukuran langkah (dalam pembelajaran mesin -
kecepatan belajar ). Beberapa kata tentang pilihan
alphak : jika
alphak - sangat kecil, urutannya berubah secara perlahan, yang membuat algoritma tidak terlalu efisien; jika
alphak sangat besar, maka pendekatan linier menjadi buruk, dan bahkan mungkin salah. Dalam praktiknya, ukuran langkah sering dipilih secara empiris, dalam teori, gradien Lipschitz biasanya diasumsikan, yaitu, jika
| nablaf(x)β nablaf(y) | leqL |xβy |
untuk semua
x,y lalu
alphak< frac2L jaminan berkurang
f(xk) .
Analisis untuk fungsi kuadratik
Jika
A Adalah matriks yang dapat dibalik simetris,
Axeβ=b kemudian untuk fungsi kuadratik
f(x)= frac12xTAxβbTx+c titik
xβ adalah titik minimum (
UPD . asalkan minimum ini ada sama sekali -
f tidak mendekati
β infty nilai hanya jika
A positif pasti), dan untuk metode gradient descent kita dapat memperoleh yang berikut ini
xk+1βxβ=xkβ alphak nablaf(xk)βxβ=xkβ alphak(Axkβb)βxβ=
(xkβxβ)β alphakA(xkβxβ)=(Iβ alphakA)(xkβxβ),
dimana
I Apakah matriks identitas, mis.
Ix=x untuk semua
x . Jika
alphak equiv alpha itu akan berubah
|xkβxβ |= |(Iβ alphaA)k(x0βxβ) | leq |Iβ alphaA |k |x0βxβ |.
Ekspresi di sebelah kiri adalah jarak dari perkiraan yang diperoleh dalam langkah
k gradient descent ke titik minimum, di sebelah kanan - ekspresi dari form
lambdak beta yang konvergen ke nol jika
| lambda|<1 (kondisi yang saya tulis
alpha dalam paragraf sebelumnya, inilah yang menjamin). Estimasi dasar ini memastikan bahwa gradient descent menyatu.
Modifikasi Keturunan Gradien
Sekarang saya ingin berbicara sedikit tentang modifikasi gradient descent yang umum digunakan, terutama yang disebut
Metode gradien inersia atau dipercepat
Semua metode dari kelas ini dinyatakan sebagai berikut
xk+1=xkβ alphak nablaf(xk)+ betak(xkβxkβ1).
Istilah terakhir mencirikan "inersia" yang sama ini, algoritma pada setiap langkah mencoba untuk bergerak melawan gradien, tetapi pada saat yang sama ia bergerak sebagian oleh inersia dalam arah yang sama seperti pada iterasi sebelumnya. Metode tersebut memiliki dua sifat penting:
- Mereka praktis tidak menyulitkan gradient descent dalam rencana komputasi.
- Dengan seleksi yang cermat alphak, betak metode seperti itu adalah urutan besarnya lebih cepat dari penurunan gradien biasa bahkan dengan langkah yang dipilih secara optimal.
Salah satu metode pertama muncul di pertengahan abad ke-20 dan disebut
metode bola berat , yang menyampaikan sifat inersia metode: dalam metode ini
alphak, betak independen dari
k dan dipilih dengan cermat tergantung pada fungsi tujuan. Perlu dicatat
alphak mungkin apa pun kecuali
betak -
Biasanya hanya sedikit kurang dari satu .
Metode bola berat adalah metode inersia paling sederhana, tetapi bukan yang pertama. Dalam hal ini, menurut saya, metode pertama sangat penting untuk memahami esensi dari metode ini.
Metode Chebyshev
Ya, ya, metode pertama jenis ini ditemukan oleh Chebyshev untuk menyelesaikan sistem persamaan linear. Pada beberapa titik dalam analisis gradient descent, persamaan berikut diperoleh
xk+1βxβ=(Iβ alphakA)(xkβxβ)= ldots=
(Iβ alphakA)(Iβ alphakβ1A) ldots(Iβ alpha1A)(x0βxβ)=Pk(A)(x0βxβ),
dimana
Pk Apakah beberapa derajat jumlahnya banyak
k . Mengapa tidak mencoba mengambil
alphak jadi itu
Pk(A)(x0βxβ) apakah itu lebih kecil? Satu simpul polinomial universal yang menyimpang paling sedikit dari nol adalah polinomial Chebyshev. Metode Chebyshev pada dasarnya terdiri dalam memilih parameter keturunan sehingga
Pk adalah polinomial Chebyshev. Sebenarnya ada satu masalah kecil: untuk keturunan gradien normal, ini sama sekali tidak mungkin. Namun, untuk metode inersia, ini dimungkinkan. Hal ini terutama disebabkan oleh fakta bahwa polinomial Chebyshev memuaskan relasi pengulangan orde kedua
Tn+1(x)=2xTn(x)βTnβ1(x),
oleh karena itu, mereka tidak dapat dibangun untuk gradient descent, yang menghitung nilai baru dari hanya satu nilai sebelumnya, dan untuk inersia itu menjadi mungkin karena kenyataan bahwa dua nilai sebelumnya digunakan. Ternyata kompleksitas perhitungannya
alphak, betak tidak bergantung pada
k atau ukuran ruang
n .
Metode Gradien Konjugasi
Fakta lain yang sangat menarik dan penting (konsekuensi dari teorema Hamilton-Cayley):
untuk setiap matriks persegi A ukurannya n kalin ada polinomial P gelar tidak lebih n untuk itu P(A)=0 . Mengapa ini menarik? Ini semua tentang kesetaraan yang sama
xk+1βxβ=Pk(A)(x0βxβ).
Jika kita bisa memilih ukuran langkah dalam gradient descent sedemikian rupa untuk mendapatkan polinomial zeroing ini, maka gradient descent akan konvergen untuk angka iterasi tetap yang tidak lebih besar dari dimensi
A . Seperti yang sudah kita ketahui, kita tidak bisa melakukan ini untuk gradient descent. Untungnya, untuk metode inersia, kita bisa. Deskripsi dan pembenaran metode ini cukup teknis, saya akan membatasi diri pada esensi:
pada setiap iterasi, parameter dipilih yang memberikan polinomial terbaik, yang dapat dibangun dengan mempertimbangkan semua pengukuran yang dilakukan sebelum langkah pengukuran gradien saat ini . Pada saat bersamaan
- Satu iterasi penurunan gradien (tanpa memperhitungkan perhitungan parameter akun) berisi satu perkalian matriks dengan vektor dan 2-3 penambahan vektor
- Perhitungan parameter juga membutuhkan 1-2 perkalian matriks dengan vektor, 2-3 perkalian vektor skalar dengan vektor, dan beberapa penambahan vektor.
Yang paling sulit dalam hal perhitungan adalah perkalian Matriks dengan vektor, biasanya ini dilakukan dalam waktu
mathcalO(n2) Namun, untuk implementasi khusus, ini dapat dilakukan di
mathcalO(m) dimana
m - jumlah elemen bukan nol di
A . Mengingat konvergensi metode gradien konjugat, tidak lebih dari
n iterasi mendapatkan kompleksitas algoritma secara keseluruhan
mathcalO(nm) , yang dalam semua kasus tidak lebih buruk
mathcalO(n3) untuk metode Gauss atau Cholesky, tetapi jauh lebih baik jika
m<<n2 itu tidak begitu langka.
Metode gradien konjugasi juga berfungsi dengan baik jika
f bukan fungsi kuadrat, tetapi tidak menyatu dalam jumlah langkah yang terbatas dan sering membutuhkan modifikasi tambahan kecil
Metode Nesterov
Untuk komunitas optimisasi matematis dan pembelajaran mesin, nama "Nesterov" telah lama menjadi nama rumah tangga. Di tahun 80-an abad terakhir, Yu.E. Nesterov datang dengan versi yang menarik dari metode inersia, yang memiliki bentuk
xk+1=xkβ alphak nablaf(xk+ betak(xkβxkβ1))+ betak(xkβxkβ1),
itu tidak menyiratkan perhitungan yang rumit
alphak, betak seperti dalam metode gradien konjugat, secara umum, perilaku metode ini mirip dengan metode bola berat, tetapi konvergensinya biasanya jauh lebih dapat diandalkan baik secara teori maupun dalam praktik.
Penurunan gradien stokastik
Satu-satunya perbedaan formal dari gradient descent adalah penggunaan fungsi alih-alih gradien
g(x, theta) sedemikian rupa
E thetag(x, theta)= nablaf(x) (
E theta - harapan acak
theta ), sehingga keturunan gradien stokastik memiliki bentuk
xk+1=xkβ alphakg(xk, thetak).
thetak - Ini adalah beberapa parameter acak yang tidak kita pengaruhi, tetapi pada saat yang sama rata-rata kita melawan gradien. Sebagai contoh, perhatikan fungsinya
f(x)= frac12m summj=1 |xβyj |2, nablaf(x)= frac1m summj=1(xβyj)
dan
g(x,i)=xβyi.
Jika
i mengambil nilai
1, ldots,m sama rata-rata hanya rata-rata
g Merupakan gradien
f . Contoh ini juga menunjukkan hal berikut: kompleksitas menghitung gradien dalam
m kali lebih banyak dari kompleksitas komputasi
g . Ini memungkinkan penurunan gradien stokastik dilakukan pada saat yang sama di
m kali lebih banyak iterasi. Terlepas dari kenyataan bahwa penurunan gradien stokastik biasanya menyatu lebih lambat dari biasanya, karena peningkatan besar dalam jumlah iterasi, dimungkinkan untuk meningkatkan tingkat konvergensi per satuan waktu. Sejauh yang saya tahu, saat ini penurunan gradien stokastik adalah metode dasar untuk melatih sebagian besar jaringan saraf, diimplementasikan di semua perpustakaan ML utama: tensorflow, obor, caffe, CNTK, dll.
Perlu dicatat bahwa ide-ide metode inersia digunakan untuk penurunan gradien stokastik dan dalam praktik sering memberikan peningkatan, dalam teori, biasanya diasumsikan bahwa laju konvergensi asimptotik tidak berubah karena fakta bahwa kesalahan utama dalam penurunan gradien stokastik disebabkan oleh dispersi.
g .
Keturunan sub-gradien
Variasi ini memungkinkan Anda untuk bekerja dengan fungsi yang tidak dapat dibedakan, saya akan menjelaskannya secara lebih rinci. Kita lagi-lagi harus mengingat pendekatan linier - faktanya adalah bahwa ada karakteristik sederhana dari konveksitas melalui gradien,
fungsi terdiferensiasi f cembung jika dan hanya jika f(y) geqf(x)+ nablaf(x)T(yβx) untuk semua x,y . Ternyata fungsi cembung tidak harus dapat dibedakan, tetapi untuk setiap titik
x tentu saja ada vektor seperti itu
g itu
f(y) geqf(x)+gT(yβx) untuk semua
y . Vektor seperti itu
g biasa disebut
subgradien f pada intinya
x , himpunan semua subgradien ke poin
x disebut
subdifferential x dan menunjukkan
partialf(x) (terlepas dari penunjukannya - tidak ada hubungannya dengan turunan parsial). Dalam kasus satu dimensi
g Merupakan angka, dan properti di atas berarti grafik
f terletak di atas garis yang melewati
(x,f(x)) dan memiliki kemiringan
g (lihat gambar di bawah). Saya perhatikan bahwa mungkin ada beberapa subgradien untuk satu poin, bahkan jumlah yang tak terbatas.


Biasanya tidak terlalu sulit untuk menghitung setidaknya satu subgradien untuk suatu titik, keturunan subgradien pada dasarnya menggunakan subgradien alih-alih gradien. Ternyata ini sudah cukup, dalam teori, tingkat konvergensi menurun, namun, misalnya, dalam jaringan saraf fungsi yang tidak dapat dibedakan.
ReLU(x)= maks(0,x) mereka suka menggunakannya hanya karena pelatihan lebih cepat dengan itu (ini, omong-omong, contoh fungsi non-cembung non-dibedakan di mana (sub) gradien keturunan berhasil diterapkan. Fungsi itu sendiri
Relu jaringan saraf cembung tapi berlapis-lapis berisi
Relu , tidak cembung dan tidak dapat dibedakan). Sebagai contoh, untuk suatu fungsi
f(x)=|x| subdifferential dihitung dengan sangat sederhana
\ partial f (x) = \ begin {cases} 1, & x> 0, \\ -1, & x <0, \\ [-1, 1], & x = 0. \ end {cases}
Mungkin hal penting terakhir yang perlu diketahui adalah bahwa
keturunan sub-gradien tidak bertemu pada ukuran langkah yang konstan . Ini paling mudah dilihat untuk fungsi di atas.
f(x)=|x| . Bahkan tidak adanya turunan pada satu titik mematahkan konvergensi:
- Katakanlah kita mulai dari titik x0 .
- Langkah penurunan sub-gradien:
x_ {k + 1} = \ begin {cases} x_ {k} -1, & x> 0, \\ x_k + 1, & x <0, \\ ??? & x = 0. \ end {cases}
- Jika x0>0 maka beberapa langkah pertama kita akan mengurangi satu, jika x0<0 lalu tambahkan. Dengan satu atau lain cara, kita akan menemukan diri kita dalam interval [0,1) dari mana kita sampai [β1,0) , dan kemudian kita akan melompat di antara dua titik interval ini.
Secara teori, untuk keturunan sub-gradien, disarankan untuk mengambil urutan langkah-langkah
alphak= frac1(k+1)c.
Dimana
c biasanya
1 atau
frac12 . Dalam latihan, saya sering melihat langkah-langkah sukses
alphak=eβck , meskipun untuk langkah-langkah tersebut secara umum tidak akan ada konvergensi.
Metode proksimal
Sayangnya, saya tidak tahu terjemahan yang bagus untuk βproximalβ dalam konteks optimasi, itu sebabnya saya hanya akan memanggil metode ini. Metode proksimal muncul sebagai generalisasi metode gradien proyektif. Idenya sangat sederhana: jika ada fungsi
f direpresentasikan sebagai jumlah
f(x)= varphi(x)+h(x) dimana
varphi Merupakan fungsi cembung yang dapat dibedakan, dan
h(x) - cembung, di mana ada operator proksimal khusus
proxh(x) (dalam artikel ini saya akan membatasi diri hanya untuk contoh, saya tidak akan menjelaskan secara umum), maka sifat konvergensi dari gradient descent untuk
varphi tetap dan untuk gradient descent untuk
f jika setelah setiap iterasi berlaku operator proksimal ini untuk titik saat ini
xk , dengan kata lain, bentuk umum dari metode proksimal terlihat seperti ini:
xk+1=prox alphakh(xkβ alphak nabla varphi(xk))
Saya pikir sejauh ini benar-benar tidak dapat dipahami mengapa ini mungkin diperlukan, terutama mengingat bahwa saya tidak menjelaskan apa itu operator proksimal. Berikut ini dua contoh:
- h(x) - Fungsi indikator dari set cembung mathcalK itu adalah
h (x) = \ begin {cases} 0, & x \ in \ mathcal {K}, \\ + infty, & x \ notin \ mathcal {K}. \\ \ end {cases}
Dalam hal ini prox alphakh(x) Adalah proyeksi ke set mathcalK , yaitu, "paling dekat dengan x titik setel mathcalK ". Jadi, kita membatasi gradient descent hanya pada set mathcalK , yang memungkinkan kami untuk menyelesaikan masalah dengan pembatasan. Sayangnya, menghitung proyeksi dalam kasus umum dapat menjadi lebih sulit, jadi metode ini biasanya digunakan jika batasannya sederhana, misalnya, yang disebut kendala kotak: untuk setiap koordinat
li leqxi leqri
- h(x)= lambda |x |1= lambda sumni=1|xi| - ell1 -regulasi. Mereka suka menambahkan istilah ini ke masalah optimisasi dalam pembelajaran mesin untuk menghindari pelatihan ulang. Regulasi seperti ini juga cenderung membatalkan komponen yang paling tidak signifikan. Untuk fungsi seperti itu, operator proksimal memiliki bentuk (ekspresi untuk koordinat tunggal dijelaskan di bawah):
[prox _ {\ alpha h} (x)] _ i = \ begin {cases} x_i- \ alpha, & x_i> \ alpha, \\ x_i + \ alpha, & x_i <- \ alpha, \\ 0, & x_i \ dalam [- \ alpha, \ alpha], \ end {cases}
yang cukup mudah untuk dihitung.
Kesimpulan
Ini mengakhiri variasi utama dari metode gradien yang saya kenal. Mungkin pada akhirnya saya akan mencatat bahwa semua modifikasi ini (kecuali mungkin metode gradien konjugasi) dapat dengan mudah berinteraksi satu sama lain. Saya sengaja tidak memasukkan metode Newton dan metode kuasi-Newton (BFGS dan lainnya) dalam daftar ini: meskipun mereka menggunakan gradien, mereka adalah metode yang lebih kompleks dan memerlukan perhitungan tambahan spesifik, yang biasanya lebih mahal secara komputasi daripada menghitung gradien. Namun demikian, jika teks ini diminati, saya akan dengan senang hati melakukan peninjauan serupa pada mereka.
Literatur yang digunakan / direkomendasikan
Boyd. S, Vandenberghe L. Optimasi CembungShewchuk JR Pengantar Metode Gradient Konjugat Tanpa Rasa Sakit yang MenyedihkanTeori Optimasi Cembung Bertsekas DPNesterov Yu. E. Metode optimasi cembungGasnikov A.V. Keturunan gradien universal