Regularisasi untuk Ketersebaran: Regularisasi L1

Vektor renggang sering kali berisi banyak dimensi. Membuat persilangan fitur menghasilkan lebih banyak dimensi. Dengan adanya vektor fitur berdimensi tinggi tersebut, ukuran model dapat menjadi sangat besar dan memerlukan RAM dalam jumlah besar.

Dalam vektor renggang berdimensi tinggi, sebaiknya bobot didorong agar turun tepat ke 0 jika memungkinkan. Bobot yang tepat 0 pada dasarnya menghapus fitur yang bersangkutan dari model. Mengosongkan fitur akan menghemat RAM dan dapat mengurangi derau dalam model.

Misalnya, pertimbangkan kumpulan data perumahan yang tidak hanya mencakup California, tetapi seluruh dunia. Pengelompokan lintang global pada tingkat menit (60 menit per derajat) memberikan sekitar 10.000 dimensi dalam encoding renggang; bujur global pada tingkat menit memberikan sekitar 20.000 dimensi. Persilangan fitur dari kedua fitur ini akan menghasilkan sekitar 200.000.000 dimensi. Banyak dari 200.000.000 dimensi tersebut mewakili area dengan tempat tinggal yang terbatas (misalnya, tengah laut) sehingga akan sulit menggunakan data tersebut untuk melakukan generalisasi secara efektif. Konyol jika harus membayar biaya RAM untuk menyimpan dimensi yang tidak dibutuhkan ini. Oleh karena itu, sebaiknya dorong bobot untuk dimensi yang tidak bermakna turun menjadi benar-benar 0, yang memungkinkan kita menghindari pembayaran biaya penyimpanan koefisien model ini pada waktu inferensi.

Kita mungkin dapat mengenkode ide ini ke dalam masalah pengoptimalan yang dilakukan pada waktu pelatihan, dengan menambahkan istilah regularisasi yang dipilih dengan tepat.

Apakah regularisasi L2 menyelesaikan tugas ini? Sayangnya tidak. Regularisasi L2 mendorong bobot menjadi kecil, tetapi tidak memaksanya menjadi persis 0,0.

Ide alternatifnya adalah mencoba dan membuat istilah regularisasi yang mengganjar jumlah nilai koefisien bukan nol dalam model. Peningkatan jumlah ini hanya dapat dibenarkan jika ada cukup peningkatan kemampuan model untuk menyesuaikan dengan data. Sayangnya, meskipun pendekatan berbasis jumlah ini menarik secara intuitif, pendekatan tersebut akan mengubah masalah pengoptimalan konveks menjadi masalah pengoptimalan non-konveks. Jadi, ide yang dikenal sebagai regularisasi L0 ini bukanlah sesuatu yang dapat kita gunakan secara efektif dalam praktiknya.

Namun, ada istilah regularisasi yang disebut regularisasi L1 yang berfungsi sebagai perkiraan terhadap L0, tetapi memiliki keunggulan karena sifatnya yang cembung dan efisien untuk dihitung. Jadi, kita bisa menggunakan regularisasi L1 untuk mendorong banyak koefisien yang tidak informatif dalam model kita menjadi persis 0, dan menghemat RAM pada waktu inferensi.

Regularisasi L1 vs. L2.

L2 dan L1 mengganjar bobot secara berbeda:

  • L2 mengganjar bobot2.
  • L1 mengganjar |bobot|.

Akibatnya, L2 dan L1 memiliki turunan yang berbeda:

  • Turunan L2 adalah 2 * bobot.
  • Turunan L1 adalah k (konstanta, yang nilainya tidak bergantung pada bobot).

Anda bisa menganggap turunan L2 sebagai kekuatan yang menghapus x% bobot setiap waktu. Seperti yang diketahui Zeno, meskipun Anda menghapus x persen dari jumlah miliaran kali, jumlah yang berkurang tidak akan pernah mencapai nol. (Zeno kurang familier dengan batasan presisi floating point, yang mungkin dapat menghasilkan nilai yang benar-benar nol.) Bagaimanapun, L2 biasanya tidak mendorong bobot ke nol.

Anda bisa menganggap turunan L1 sebagai gaya yang mengurangi beberapa konstanta dari bobot setiap waktu. Namun, berkat nilai absolut, L1 memiliki diskontinuitas pada 0, yang menyebabkan pengurangan hasil yang melewati 0 untuk menjadi nol. Misalnya, jika pengurangan memaksa bobot dari +0,1 menjadi -0,2, L1 akan menetapkan bobotnya menjadi persis 0. Eureka, L1 membuat bobot menjadi nol.

Regularisasi L1—menghukum nilai absolut semua bobot—ternyata cukup efisien untuk model luas.

Perhatikan bahwa deskripsi ini berlaku untuk model satu dimensi.

Klik tombol Play () di bawah untuk membandingkan efek yang dimiliki regularisasi L1 dan L2 pada jaringan bobot.