Connect with us

AI 101

Apa itu Gradient Descent?

mm

Apa itu Gradient Descent?

Jika Anda telah membaca tentang cara jaringan saraf dilatih, Anda pasti telah menemukan istilah “gradient descent” sebelumnya. Gradient descent adalah metode utama untuk mengoptimalkan kinerja jaringan saraf, mengurangi tingkat kesalahan/jumlah kesalahan jaringan. Namun, gradient descent dapat sedikit sulit dipahami bagi mereka yang baru dalam pembelajaran mesin, dan artikel ini akan berusaha memberikan Anda intuisi yang cukup tentang cara kerja gradient descent.

Gradient descent adalah algoritma optimasi. Ini digunakan untuk meningkatkan kinerja jaringan saraf dengan membuat penyesuaian pada parameter jaringan sehingga perbedaan antara prediksi jaringan dan nilai sebenarnya/diharapkan jaringan (yang disebut sebagai kesalahan) adalah sekecil mungkin. Gradient descent mengambil nilai awal parameter dan menggunakan operasi berbasis kalkulus untuk menyesuaikan nilai mereka menuju nilai yang akan membuat jaringan seakurat mungkin. Anda tidak perlu mengetahui banyak kalkulus untuk memahami cara kerja gradient descent, tetapi Anda perlu memiliki pemahaman tentang gradien.

Apa itu Gradien?

Anggaplah ada grafik yang mewakili jumlah kesalahan yang dilakukan jaringan saraf. Bagian bawah grafik mewakili titik-titik dengan kesalahan terendah, sedangkan bagian atas grafik adalah tempat kesalahan tertinggi. Kami ingin bergerak dari atas grafik ke bawah. Gradien hanya cara untuk mengkuantifikasi hubungan antara kesalahan dan bobot jaringan saraf. Hubungan antara kedua hal ini dapat digambarkan sebagai kemiringan, dengan bobot yang salah menghasilkan lebih banyak kesalahan. Kemiringan kemiringan/gradien mewakili seberapa cepat model belajar.

Kemiringan yang lebih curam berarti pengurangan kesalahan yang besar sedang dilakukan dan model belajar dengan cepat, sedangkan jika kemiringan adalah nol, model berada pada dataran dan tidak belajar. Kami dapat bergerak turun kemiringan menuju kesalahan yang lebih kecil dengan menghitung gradien, arah gerakan (perubahan pada parameter jaringan) untuk model kami.

Mari kita geser metafora sedikit dan bayangkan sebuah seri bukit dan lembah. Kami ingin mencapai bagian bawah bukit dan menemukan bagian lembah yang mewakili kesalahan terendah. Ketika kami memulai dari atas bukit, kami dapat mengambil langkah besar turun bukit dan yakin bahwa kami menuju ke titik terendah di lembah.

Namun, ketika kami mendekati titik terendah di lembah, langkah kami harus menjadi lebih kecil, atau kami bisa melebihi titik terendah sebenarnya dan berakhir di sisi lain. Serupa dengan itu, memungkinkan bahwa ketika menyesuaikan bobot jaringan, penyesuaian dapat sebenarnya mengambil jaringan lebih jauh dari titik kesalahan terendah, dan oleh karena itu penyesuaian harus menjadi lebih kecil seiring waktu. Dalam konteks menuruni bukit menuju titik kesalahan terendah, gradien adalah vektor/instruksi yang merincikan jalur yang harus kami ambil dan seberapa besar langkah kami harus.

Sekarang kami tahu bahwa gradien adalah instruksi yang memberitahu kami arah mana yang harus kami ambil (koefisien mana yang harus diperbarui) dan seberapa besar langkah yang harus kami ambil (seberapa banyak koefisien harus diperbarui), kami dapat menjelajahi bagaimana gradien dihitung.

Menghitung Gradien & Gradient Descent

Gradient descent dimulai dari tempat dengan kesalahan tinggi dan melalui beberapa iterasi, mengambil langkah dalam arah kesalahan terendah, dengan tujuan menemukan konfigurasi bobot optimal. Photo: Роман Сузи via Wikimedia Commons, CCY BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)

Untuk melakukan gradient descent, gradien harus dihitung terlebih dahulu. Untuk menghitung gradien, kami perlu mengetahui fungsi biaya/kerugian. Kami akan menggunakan fungsi biaya untuk menentukan turunan. Dalam kalkulus, turunan hanya merujuk pada kemiringan fungsi pada titik tertentu, jadi kami sebenarnya hanya menghitung kemiringan bukit berdasarkan fungsi kesalahan. Kami menentukan kesalahan dengan menjalankan koefisien melalui fungsi kesalahan. Jika kami mewakili fungsi kesalahan sebagai “f”, maka kami dapat menyatakan bahwa persamaan untuk menghitung kesalahan adalah sebagai berikut (kami hanya menjalankan koefisien melalui fungsi biaya yang dipilih):

Kesalahan = f(koefisien)

Kami kemudian menghitung turunan, atau menentukan kemiringan. Mendapatkan turunan dari kesalahan akan memberitahu kami arah mana yang menuju ke bawah kemiringan, dengan memberikan kami tanda yang tepat untuk menyesuaikan koefisien kami. Kami akan mewakili arah yang tepat sebagai “delta”.

delta = fungsi_turunan(kesalahan)

Kami sekarang telah menentukan arah mana yang menuju ke bawah menuju titik kesalahan terendah. Ini berarti kami dapat memperbarui koefisien dalam parameter jaringan saraf dan berharap mengurangi kesalahan. Kami akan memperbarui koefisien berdasarkan koefisien sebelumnya minus perubahan nilai yang sesuai seperti yang ditentukan oleh arah (delta) dan argumen yang mengontrol besarnya perubahan (ukuran langkah kami). Argumen yang mengontrol ukuran pembaruan disebut “alfa” dan kami akan mewakili sebagai “alpha”.

koefisien = koefisien – (alpha * delta)

Kami kemudian hanya mengulangi proses ini sampai jaringan telah konvergen di sekitar titik kesalahan terendah, yang seharusnya dekat dengan nol.

Sangat penting untuk memilih nilai yang tepat untuk laju pembelajaran (alfa). Laju pembelajaran yang dipilih harus tidak terlalu kecil atau terlalu besar. Ingat bahwa ketika kami mendekati titik kesalahan terendah, langkah kami harus menjadi lebih kecil, atau kami bisa melebihi titik kesalahan terendah sebenarnya dan berakhir di sisi lain. Titik kesalahan terendah sangat kecil dan jika laju perubahan kami terlalu besar, kesalahan dapat berakhir meningkat lagi. Jika ukuran langkah terlalu besar, kinerja jaringan akan terus bergetar di sekitar titik kesalahan terendah, melebihi di satu sisi dan kemudian di sisi lain. Jika ini terjadi, jaringan tidak akan pernah konvergen ke konfigurasi bobot optimal.

Sebaliknya, jika laju pembelajaran terlalu kecil, jaringan dapat memerlukan waktu lama untuk konvergen ke bobot optimal.

Jenis Gradient Descent

Sekarang bahwa kami memahami bagaimana gradient descent bekerja secara umum, mari kita lihat beberapa jenis gradient descent.

Blogger dan programmer dengan spesialisasi di Machine Learning dan Deep Learning topik. Daniel berharap untuk membantu orang lain menggunakan kekuatan AI untuk kebaikan sosial.