Apa perbedaan antara Gradient Descent dan Stochastic Gradient Descent?
Saya tidak terlalu terbiasa dengan ini, dapatkah Anda menggambarkan perbedaannya dengan contoh singkat?
Apa perbedaan antara Gradient Descent dan Stochastic Gradient Descent?
Saya tidak terlalu terbiasa dengan ini, dapatkah Anda menggambarkan perbedaannya dengan contoh singkat?
Jawaban:
Untuk penjelasan singkat dan cepat:
Dalam gradient descent (GD) dan stochastic gradient descent (SGD), Anda memperbarui serangkaian parameter secara berulang untuk meminimalkan fungsi kesalahan.
Sementara di GD, Anda harus menjalankan melalui SEMUA sampel dalam set pelatihan Anda untuk melakukan pembaruan tunggal untuk parameter dalam iterasi tertentu, dalam SGD, di sisi lain, Anda menggunakan HANYA SATU atau SUBSET sampel pelatihan dari set pelatihan Anda untuk melakukan pembaruan untuk parameter dalam iterasi tertentu. Jika Anda menggunakan SUBSET, itu disebut Minibatch Stochastic gradient Descent.
Jadi, jika jumlah sampel pelatihan besar, sebenarnya sangat besar, maka menggunakan gradient descent mungkin memakan waktu terlalu lama karena dalam setiap iterasi ketika Anda memperbarui nilai-nilai parameter, Anda menjalankan set pelatihan lengkap. Di sisi lain, menggunakan SGD akan lebih cepat karena Anda hanya menggunakan satu sampel pelatihan dan itu mulai membaik dengan sendirinya dari sampel pertama.
SGD sering menyatu jauh lebih cepat dibandingkan dengan GD tetapi fungsi kesalahannya tidak terlalu diminimalkan seperti pada kasus GD. Seringkali dalam sebagian besar kasus, perkiraan dekat yang Anda dapatkan dalam SGD untuk nilai parameter sudah cukup karena mereka mencapai nilai optimal dan terus berosilasi di sana.
Jika Anda memerlukan contoh untuk kasus ini, periksa catatan Andrew NG di sini di mana ia dengan jelas menunjukkan langkah-langkah yang terlibat dalam kedua kasus tersebut. cs229-note
Sumber: Quora Thread
Dimasukkannya kata stochastic berarti sampel acak dari data pelatihan dipilih di setiap langkah untuk memperbarui parameter selama optimasi, dalam kerangka gradient descent .
Melakukan hal itu tidak hanya menghitung kesalahan dan memperbarui bobot dalam iterasi yang lebih cepat (karena kami hanya memproses sejumlah kecil sampel dalam sekali jalan), itu juga sering membantu untuk bergerak menuju yang optimal dengan lebih cepat. Memiliki lihat jawabannya di sini , untuk informasi lebih lanjut mengapa menggunakan minibatches stokastik untuk melatih penawaran keuntungan.
Salah satu kemungkinan downside, adalah bahwa jalan menuju optimal (dengan asumsi itu akan selalu menjadi optimal yang sama) dapat jauh lebih ribut. Jadi, alih-alih kurva kehilangan halus yang bagus, menunjukkan bagaimana kesalahan menurun di setiap iterasi gradient descent, Anda mungkin melihat sesuatu seperti ini:
Kami dengan jelas melihat penurunan yang menurun dari waktu ke waktu, namun ada variasi besar dari zaman ke zaman (pelatihan batch ke batch pelatihan), sehingga kurva bising.
Ini hanya karena kita menghitung rata-rata kesalahan atas subset stokastik / yang dipilih secara acak kami, dari seluruh dataset, di setiap iterasi. Beberapa sampel akan menghasilkan kesalahan tinggi, beberapa rendah. Jadi rata-rata dapat bervariasi, tergantung pada sampel mana yang kami gunakan secara acak untuk satu iterasi gradient descent.
Dalam Gradient Descent atau Batch Gradient Descent, kami menggunakan seluruh data pelatihan per epoch sedangkan, dalam Stochastic Gradient Descent, kami hanya menggunakan satu contoh pelatihan per epoch dan Mini-batch Gradient Descent terletak di antara dua ekstrem ini, di mana kami dapat menggunakan mini-batch (sebagian kecil) data pelatihan per zaman, aturan praktis untuk memilih ukuran mini-batch berkekuatan 2 seperti 32, 64, 128 dll.
Untuk lebih jelasnya: catatan kuliah cs231n