Mengurangi Kerugian: Penurunan Gradien Stokastik

Dalam penurunan gradien, tumpukan adalah kumpulan contoh yang Anda gunakan untuk menghitung gradien dalam satu iterasi pelatihan. Sejauh ini, kita asumsikan bahwa batch tersebut adalah seluruh set data. Ketika bekerja dalam skala Google, set data biasanya berisi miliaran atau bahkan ratusan miliar contoh. Selain itu, set data Google biasanya berisi sejumlah besar fitur. Akibatnya, batch bisa menjadi sangat besar. Batch yang sangat besar dapat menyebabkan satu iterasi saja memerlukan waktu yang sangat lama untuk dihitung.

Set data yang besar dengan contoh yang diambil sampelnya secara acak mungkin berisi data yang berlebihan. Faktanya, redundansi menjadi lebih mungkin terjadi seiring bertambahnya ukuran tumpukan. Beberapa redundansi dapat berguna untuk menghaluskan gradien yang berisi noise, tetapi batch yang sangat besar cenderung tidak membawa nilai yang jauh lebih prediktif daripada batch besar.

Bagaimana jika kita bisa mendapatkan rata-rata gradien yang tepat untuk komputasi yang jauh lebih sedikit? Dengan memilih contoh secara acak dari {i>dataset<i}, kita dapat memperkirakan (meskipun, bermasalah) rata-rata yang besar dari rata-rata yang jauh lebih kecil. Penurunan gradien stokastik (SGD) menerapkan ide ini secara ekstrim--hanya menggunakan satu contoh (ukuran tumpukan 1) per iterasi. Dengan iterasi yang cukup, PGS berfungsi tetapi sangat berisik. Istilah "stokastik" menunjukkan bahwa satu contoh yang terdiri dari setiap tumpukan dipilih secara acak.

Tumpukan mini penurunan gradien stokastik (tumpukan mini PGS) adalah sebuah kompromi antara iterasi tumpukan penuh dan PGS. Tumpukan mini biasanya antara 10 dan 1.000 contoh, yang dipilih secara acak. Tumpukan mini PGS mengurangi jumlah derau dalam PGS, tetapi masih lebih efisien daripada tumpukan penuh.

Untuk menyederhanakan penjelasannya, kita berfokus pada penurunan gradien untuk satu fitur. Yakinlah bahwa penurunan gradien juga berfungsi pada set fitur yang berisi beberapa fitur.