Seperti jawaban lain menyarankan, alasan utama untuk menggunakan SGD adalah untuk mengurangi biaya perhitungan gradien sementara sebagian besar masih mempertahankan arah gradien ketika dirata-ratakan atas banyak mini-batch atau sampel - yang pasti membantu membawa Anda ke minimum lokal.
- Mengapa minibatch berfungsi ?
Matematika di balik ini adalah bahwa, "benar" gradien dari fungsi biaya (gradien untuk kesalahan generalisasi atau untuk set sampel tak terhingga besar) adalah ekspektasi gradien atas data yang benar menghasilkan distribusi ; gradien aktual yang dihitung pada kumpulan sampel selalu merupakan perkiraan terhadap gradien sebenarnya dengan distribusi data empiris .
pdatap^data
g=Epdata(∂J(θ)∂θ)
Keturunan gradien batch dapat membawa Anda kemungkinan "optimal" gradien diberikan semua sampel data Anda, itu bukan gradien "benar" sekalipun. Batch yang lebih kecil (minibatch) mungkin tidak seoptimal batch penuh, tetapi keduanya merupakan perkiraan - demikian juga minibatch sampel tunggal (SGD). Perbedaan antara kesalahan standar mereka berbanding terbalik dengan ukuran minibatch. Yaitu,
mE p data(g(m))=E p data(∂J(θ)SE(g^(n))SE(g^(m))=mn−−−√
Yaitu, pengurangan kesalahan standar adalah akar kuadrat dari peningkatan ukuran sampel. Persamaan di atas adalah untuk gradien yang dihitung dalam satu langkah penurunan gradien minibatch. Ketika Anda mengulangi langkah-langkah pembaruan gradien minibatch dan menggunakan semua sampel pelatihan akhirnya dalam satu zaman, Anda benar-benar menghitung rata-rata gradien berdasarkan pada semua sampel yang diberikan. Yaitu, untuk ukuran minibatch ,
Dari persamaan di atas, kita dapat menyimpulkan bahwa, dengan satu zaman, gradien rata-rata Anda dengan ukuran minibatch yang berbeda
mmEp^data(g^(m))=Ep^data(∂J(θ)∂θ)
m (dari satu ke batch penuh) memiliki kesalahan standar yang sama, dan yang lebih penting, mereka semua adalah perkiraan setia ke gradien "benar", yaitu, bergerak ke arah yang benar dari gradien "benar".
- Mengapa minibatch dapat bekerja lebih baik .
Pertama, minibatch membuat beberapa masalah pembelajaran dari yang secara teknis tidak dapat diatasi untuk ditangani karena berkurangnya permintaan komputasi dengan ukuran batch yang lebih kecil.
Kedua, mengurangi ukuran bets tidak berarti mengurangi akurasi gradien. Sampel pelatihan banyak memiliki banyak suara atau pencilan atau bias. Sebuah minibatch sampel acak dapat mencerminkan distribusi penghasil data yang sebenarnya lebih baik (atau tidak lebih buruk) daripada batch penuh asli. Jika beberapa iterasi pembaruan gradient minibatch memberi Anda estimasi yang lebih baik, secara keseluruhan hasil rata-rata satu zaman bisa lebih baik daripada gradien yang dihitung dari batch penuh.
Ketiga, minibatch tidak hanya membantu menangani sampel data yang tidak menyenangkan, tetapi juga membantu menangani fungsi biaya tidak menyenangkan yang memiliki banyak minimum lokal. Seperti yang disebutkan Jason_L_Bens, terkadang manifold kesalahan mungkin lebih mudah untuk menjebak gradien reguler ke dalam minimum lokal, sementara lebih sulit untuk menjebak gradien acak sementara yang dihitung dengan minibatch.
Akhirnya, dengan gradient descent, Anda tidak mencapai minimum global dalam satu langkah, tetapi mengulangi manifold erro. Gradient sebagian besar hanya memberi Anda arah untuk beralih. Dengan minibatch, Anda dapat beralih lebih cepat. Dalam banyak kasus, semakin banyak iterasi, semakin baik poin yang bisa Anda capai. Anda tidak benar-benar peduli di semua cuaca, titiknya optimal secara global atau bahkan secara lokal. Anda hanya ingin mencapai model yang masuk akal yang membawa Anda kesalahan generalisasi yang dapat diterima. Minibatch membuatnya lebih mudah.
Anda mungkin menemukan buku "Pembelajaran mendalam" oleh Ian Goodfellow, et al, memiliki diskusi yang cukup bagus tentang topik ini jika Anda membacanya dengan seksama.