Optimalisasi penurunan gradien

9

Saya mencoba memahami optimasi gradient descent dalam algoritma ML (pembelajaran mesin). Saya mengerti bahwa ada fungsi biaya — di mana tujuannya adalah untuk meminimalkan kesalahan . Dalam skenario di mana bobot sedang dioptimalkan untuk memberikan kesalahan minimum, dan turunan parsial digunakan, apakah itu mengubah dan di setiap langkah atau merupakan kombinasi (misalnya, dalam beberapa iterasi hanya yang diubah dan ketika tidak mengurangi kesalahan lagi, turunannya dimulai dengan )? Aplikasi dapat berupa model regresi linier, model regresi logistik, atau meningkatkan algoritma.y^-yw1,w2w1w2w1w1w2

Pb89
sumber

Jawaban:

10

Keturunan gradien memperbarui semua parameter pada setiap langkah. Anda dapat melihat ini di aturan pembaruan:

w(t+1)=w(t)-ηf(w(t)).

Karena gradien fungsi kerugian bernilai vektor dengan dimensi yang cocok dengan , semua parameter diperbarui pada setiap iterasi.f(w)w

Tingkat pembelajaran adalah angka positif yang mengubah skala gradien. Mengambil langkah terlalu besar dapat terus-menerus memantul Anda di permukaan kerugian tanpa peningkatan fungsi kerugian Anda; langkah terlalu kecil bisa berarti memperlambat kemajuan menuju optimal.η

Meskipun Anda bisa memperkirakan parameter regresi linier menggunakan gradient descent, itu bukan ide yang baik.

Demikian juga, ada cara yang lebih baik untuk memperkirakan koefisien regresi logistik.

Sycorax berkata Reinstate Monica
sumber
Jadi algoritma dapat mencoba kombinasi yang berbeda seperti kenaikan w1, penurunan w2berdasarkan arah dari turunan parsial untuk mencapai minimum lokal dan hanya untuk mengkonfirmasi algoritma tidak akan selalu memberikan global minimum selalu?
Pb89
dan apakah turunan parsial juga membantu menjelaskan berapa banyak kenaikan atau penurunan yang harus dilakukan untuk w1dan w2atau yang dilakukan dengan tingkat pembelajaran / penyusutan sementara turunan parsial hanya memberikan arah penurunan?
Pb89
Gradien adalah vektor, sehingga memberikan arah dan besarnya. Vektor dapat diubah secara sewenang-wenang oleh skalar positif dan akan memiliki arah yang sama, tetapi pengubahan ukuran akan mengubah besarnya.
Sycorax berkata Reinstate Monica
Jika besarnya juga diberikan oleh gradien lalu apa peran susut atau tingkat belajar?
Pb89
Tingkat pembelajaran mengatur ulang gradien. Misalkan memiliki norma (panjang) yang besar. Mengambil langkah besar akan memindahkan Anda ke bagian yang jauh dari permukaan yang hilang (melompat dari satu gunung ke gunung lainnya). Pembenaran inti dari penurunan gradien adalah bahwa itu adalah pendekatan linier di sekitar . Perkiraan itu selalu tidak tepat, tetapi mungkin lebih buruk semakin jauh Anda bergerak - karenanya, Anda ingin mengambil langkah-langkah kecil, jadi Anda menggunakan beberapa kecil , di mana 'kecil' sepenuhnya merupakan masalah khusus. w ( t ) ηf(x)w(t)η
Sycorax berkata Reinstate Monica
7

Ketika optimasi terjadi melalui turunan parsial, pada setiap belokan ia mengubah w1 dan w2 atau merupakan kombinasi seperti pada beberapa iterasi hanya w1 yang berubah dan ketika w1 tidak mengurangi kesalahan lebih banyak, turunan dimulai dengan w2 - untuk mencapai minimum lokal?

Di setiap iterasi, algoritma akan mengubah semua bobot pada saat yang sama berdasarkan vektor gradien. Bahkan, gradien adalah vektor. Panjang gradien sama dengan jumlah bobot dalam model.

Di sisi lain, mengubah satu parameter pada suatu waktu memang ada dan itu disebut algoritma layak koordinat , yang merupakan jenis algoritma optimasi gradien gratis . Dalam praktiknya, ini mungkin tidak berfungsi sebaik algoritma berbasis gradien.

Berikut ini adalah jawaban yang menarik tentang algoritma bebas gradien

Apakah mungkin untuk melatih jaringan saraf tanpa backpropagation?

Haitao Du
sumber
1

Tujuan penurunan gradien adalah untuk meminimalkan fungsi biaya. Minimalisasi ini dicapai dengan menyesuaikan bobot, untuk kasus Anda w1 dan w2. Secara umum mungkin ada n bobot seperti itu.

Keturunan gradien dilakukan dengan cara berikut:

  1. inisialisasi bobot secara acak.
  2. menghitung fungsi biaya dan gradien dengan bobot yang diinisialisasi.
  3. perbarui bobot: Ini mungkin terjadi bahwa gradien adalah O untuk beberapa bobot, dalam hal itu bobot tersebut tidak menunjukkan perubahan apa pun setelah memperbarui. misalnya: Misalkan gradien adalah [1,0] W2 akan tetap tidak berubah.
  4. periksa fungsi biaya dengan bobot yang diperbarui, jika penurunan cukup dapat diterima melanjutkan iterasi yang lain berakhir.

saat memperbarui bobot yang berat (W1 atau W2) berubah sepenuhnya ditentukan oleh gradien. Semua bobot diperbarui (beberapa bobot mungkin tidak berubah berdasarkan gradien).

A Santosh Kumar
sumber
"jika penurunan cukup dapat diterima melanjutkan iterasi yang lain berakhir", apakah ada nilai default yang diterapkan dalam paket python ( sklearn) atau paket R seperti caret? Apakah pengguna dapat ditentukan hanya dalam fungsi gradient descent yang dibuat secara manual?
Pb89
1

Layak gradien diterapkan untuk kedua w1dan w2untuk setiap iterasi. Selama setiap iterasi, parameter diperbarui sesuai dengan gradien. Mereka kemungkinan memiliki turunan parsial yang berbeda.

Periksa di sini .

Halo Dunia
sumber