Bagaimana memahami Gradient Descent, algoritma ML yang paling popular

Gradient Descent adalah salah satu algoritma yang paling popular dan banyak digunakan untuk melatih model pembelajaran mesin.

Model pembelajaran mesin biasanya mempunyai parameter (berat dan bias) dan fungsi kos untuk menilai seberapa baik sekumpulan parameter tertentu. Banyak masalah pembelajaran mesin mengurangkan mencari satu set bobot untuk model yang meminimumkan fungsi kos.

Sebagai contoh, jika ramalannya p , sasarannya adalah t , dan metrik ralat kita adalah ralat kuasa dua, maka fungsi kos J (W) = (p - t) ² .

Perhatikan bahawa nilai yang diramalkan p bergantung kepada input X serta model pembelajaran mesin dan (semasa) nilai-nilai parameter W . Semasa latihan, tujuan kami adalah untuk mencari satu set nilai untuk W sehingga (p - t) ² kecil. Ini bermaksud ramalan kita p akan hampir dengan sasaran t .

Keturunan kecerunan adalah kaedah berulang. Kami bermula dengan beberapa set nilai untuk parameter model kami (berat dan bias), dan memperbaikinya secara perlahan.

Untuk meningkatkan satu set bobot tertentu, kami cuba memahami nilai fungsi kos untuk bobot yang serupa dengan bobot semasa (dengan mengira kecerunan). Kemudian kami bergerak ke arah yang mengurangkan fungsi kos.

Dengan mengulangi langkah ini ribuan kali, kita akan terus mengurangkan fungsi kos kita.

Pseudocode untuk Gradient Descent

Keturunan kecerunan digunakan untuk mengurangkan fungsi kos J (W) parameterized oleh parameter model W .

Kecerunan (atau derivatif) memberitahu kita condong atau kemerosotan fungsi kos. Oleh itu, untuk meminimumkan fungsi kos, kita bergerak ke arah yang bertentangan dengan kecerunan.

  1. Memulakan berat W secara rawak.
  2. Hitung kecerunan G parameter kos fungsi kos. Ini dilakukan dengan menggunakan pembezaan separa: G = ∂J (W) / ∂W. Nilai kecerunan G bergantung pada input, nilai semasa parameter model, dan fungsi kos. Anda mungkin perlu melihat semula topik pembezaan jika anda mengira kecerunan dengan tangan.
  3. Kemas kini pemberat dengan jumlah berkadar dengan G, iaitu W = W - ηG
  4. Ulangi sehingga kos J ( w ) berhenti berkurang, atau beberapa kriteria penamatan yang ditentukan sebelumnya dipenuhi.

Pada langkah 3, η adalah kadar pembelajaran yang menentukan ukuran langkah yang kita ambil untuk mencapai tahap minimum. Kita perlu berhati-hati dengan parameter ini. Nilai tinggi η mungkin melampaui minimum, dan nilai yang sangat rendah akan mencapai minimum dengan sangat perlahan.

Pilihan yang popular untuk kriteria penamatan adalah bahawa kos J ( w ) berhenti berkurang pada set data pengesahan.

Intuisi untuk Keturunan Gradien

Bayangkan anda ditutup matadi kawasan yang kasar, dan objektif anda adalah untuk mencapai ketinggian terendah.

Salah satu strategi termudah yang dapat Anda gunakan, adalah merasakan landasan ke segala arah, dan mengambil langkah ke arah tempat tanah turun paling cepat.

Sekiranya anda terus mengulangi proses ini, anda mungkin berakhir di tasik, atau lebih baik lagi, di suatu tempat di lembah besar.

Medan kasar serupa dengan fungsi kos, dan meminimumkan fungsi kos adalah serupa dengan berusaha mencapai ketinggian yang lebih rendah.

Anda dilipat buta, kerana kami tidak mempunyai kemewahan untuk menilai (atau 'melihat') nilai fungsi untuk setiap set parameter yang mungkin.

Merasakan kemerosotan kawasan di sekitar anda adalah serupa dengan mengira kecerunan, dan mengambil langkah serupa dengan satu lelaran kemas kini parameter.

Ngomong-ngomong - tutorial ini adalah sebahagian daripada Kursus Sains Data percuma dan Kursus Pembelajaran Mesin percuma di Commonlounge. Kursus merangkumi banyak tugasan dan projek langsung. Sekiranya anda berminat untuk belajar Sains Data / ML, sarankan untuk memeriksanya.

Varian Keturunan Gradien

Terdapat beberapa varian penurunan gradien, bergantung pada seberapa banyak data yang digunakan untuk mengira kecerunan.

Sebab utama variasi ini adalah kecekapan komputasi. Set data mungkin mempunyai berjuta-juta titik data, dan mengira kecerunan pada keseluruhan dataset mungkin mahal.

  • Bend gradient descent menghitung kecerunan fungsi kos hingga parameter W untuk keseluruhan data latihan . Oleh kerana kita perlu mengira kecerunan untuk keseluruhan kumpulan data untuk melakukan satu pembaruan parameter, penurunan keturunan kumpulan dapat menjadi sangat lambat.
  • Stochastic gradient descent (SGD) menghitung kecerunan untuk setiap kemas kini menggunakan satu titik data latihan x_i (dipilih secara rawak). Ideanya adalah bahawa kecerunan yang dikira dengan cara ini adalah pendekatan stokastik terhadap kecerunan yang dikira menggunakan keseluruhan data latihan. Setiap kemas kini kini lebih cepat dikira daripada keturunan gradien kumpulan, dan melalui banyak kemas kini, kita akan menuju ke arah umum yang sama.
  • Dalam keturunan gradien kumpulan kecil , kami mengira kecerunan untuk setiap kumpulan latihan mini kumpulan kecil. Maksudnya, pertama-tama kita membahagikan data latihan ke dalam kumpulan kecil (katakan sampel M setiap kumpulan). Kami melakukan satu kemas kini setiap kumpulan kecil. M biasanya berada dalam julat 30–500, bergantung pada masalahnya. Biasanya mini-batch GD digunakan kerana infrastruktur pengkomputeran - penyusun, CPU, GPU - sering dioptimumkan untuk melakukan penambahan vektor dan pendaraban vektor.

Daripada jumlah ini, SGD dan mini-batch GD paling popular.

Dalam senario biasa, kami melakukan beberapa catatan data latihan sebelum kriteria penamatan dipenuhi. Setiap hantaran dipanggil zaman . Juga, perhatikan bahawa kerana langkah kemas kini jauh lebih efisien dalam pengiraan SGD dan mini-batch GD, kami biasanya melakukan 100s-1000s kemas kini di antara pemeriksaan untuk kriteria penamatan yang dipenuhi.

Memilih kadar pembelajaran

Biasanya, nilai kadar pembelajaran dipilih secara manual. Kita biasanya bermula dengan nilai kecil seperti 0.1, 0.01 atau 0.001 dan menyesuaikannya berdasarkan sama ada fungsi kos menurun dengan sangat perlahan (meningkatkan kadar pembelajaran) atau meletup / tidak menentu (penurunan kadar pembelajaran).

Walaupun memilih kadar pembelajaran secara manual masih merupakan amalan yang paling biasa, beberapa kaedah seperti pengoptimum Adam, AdaGrad dan RMSProp telah dicadangkan untuk memilih kadar pembelajaran yang sesuai secara automatik.

Dikarang bersama oleh Keshav Dhandhania dan Savan Visalpara.

Mula-mula diterbitkan sebagai sebahagian daripada Kursus Pembelajaran Mesin dan Kursus Sains Data percuma di www.commonlounge.com.