Saya menerapkan makalah yang cukup populer " MENJELAJAHI DAN MEMANTAU CONTOH ADVERSARIAL " dan di dalam makalah itu, ia melatih fungsi tujuan yang berlawanan.
J '' (θ) = αJ (θ) + (1 - α) J '(θ).
Ini memperlakukan α sebagai hyperparameter. α dapat 0,1, 0,2, 0,3, dll.
Terlepas dari makalah khusus ini, saya bertanya-tanya, mengapa kita tidak memasukkan α ke dalam parameter dan mempelajari α terbaik?
Apa kerugiannya melakukannya? Apakah karena overfitting? Jika demikian, mengapa belajar hanya 1 parameter lagi menyebabkan overfitting begitu banyak?
Jawaban:
Itu pertanyaan yang bagus! Saya akan mencoba memberikan jawaban yang lebih umum. Jawaban TL; DR adalah bahwa Anda pasti dapat mempelajari hiperparameter, hanya saja tidak dari data yang sama. Baca terus untuk balasan yang sedikit lebih detail.
Sebuah hyperparameter biasanya sesuai dengan pengaturan dari algoritma belajar, bukan salah satu parameter. Dalam konteks pembelajaran yang mendalam, misalnya, ini dicontohkan oleh perbedaan antara sesuatu seperti jumlah neuron dalam lapisan tertentu (hyperparameter) dan berat tepi tertentu (parameter reguler yang dapat dipelajari).
Mengapa ada perbedaan di tempat pertama? Kasus khas untuk membuat parameter menjadi hiperparameter adalah tidak tepat untuk mempelajari parameter itu dari set pelatihan. Sebagai contoh, karena selalu lebih mudah untuk menurunkan kesalahan pelatihan dengan menambahkan lebih banyak neuron, menjadikan jumlah neuron dalam sebuah layer sebagai parameter reguler akan selalu mendorong jaringan yang sangat besar, yang merupakan sesuatu yang kita ketahui karena suatu fakta tidak selalu diinginkan (karena overfitting).
Untuk pertanyaan Anda, bukan karena kami sama sekali tidak mempelajari hiper-parameter. Mengesampingkan tantangan komputasi selama satu menit, sangat mungkin untuk mempelajari nilai-nilai baik untuk hyperparameter, dan bahkan ada kasus di mana ini sangat penting untuk kinerja yang baik; semua diskusi dalam paragraf pertama menunjukkan bahwa menurut definisi, Anda tidak dapat menggunakan data yang sama untuk tugas ini .
Menggunakan data lain (sehingga menciptakan tiga bagian terpisah: set pelatihan, set validasi, dan set tes, apa yang bisa Anda lakukan dalam teori adalah prosedur optimisasi bersarang berikut : di loop luar, Anda mencoba menemukan nilai-nilai untuk hiperparameter yang meminimalkan kehilangan validasi , dan di loop dalam, Anda mencoba menemukan nilai-nilai untuk parameter reguler yang meminimalkan kehilangan pelatihan .
Ini mungkin dalam teori, tetapi sangat mahal secara komputasi: setiap langkah dari loop luar membutuhkan penyelesaian (sampai selesai, atau di suatu tempat dekat dengan itu) loop-dalam, yang biasanya berat secara komputasi. Yang semakin memperumit masalah adalah bahwa masalah luar tidak mudah: untuk satu, ruang pencarian sangat besar.
Ada banyak pendekatan untuk mengatasinya dengan menyederhanakan pengaturan di atas (pencarian grid, pencarian acak atau optimisasi parameter-model berbasis), tetapi menjelaskan ini jauh di luar ruang lingkup pertanyaan Anda. Seperti yang ditunjukkan oleh artikel yang telah Anda referensikan, fakta bahwa ini adalah prosedur yang mahal sering kali berarti bahwa peneliti hanya melewatkannya sama sekali, atau mencoba sangat sedikit pengaturan secara manual, akhirnya memilih yang terbaik (sekali lagi, sesuai dengan set validasi). Untuk pertanyaan awal Anda, saya berpendapat bahwa - walaupun sangat sederhana dan dibuat-buat - ini masih merupakan bentuk "pembelajaran".
sumber
Hyperparameter seperti yang ada di kertas itu sering digunakan untuk menyeimbangkan banyak istilah dalam fungsi kerugian. Jika Anda membuatnya dapat dipelajari, proses pengoptimalan hanya akan belajar untuk mengalokasikan semua bobot terhadap istilah yang lebih mudah dioptimalkan dengan biaya persyaratan yang lebih sulit untuk dioptimalkan, yang mengalahkan titik menyeimbangkan persyaratan.
Cara lain untuk melihatnya adalah bahwa fungsi kerugian adalah pengganti untuk tujuan aktual yang sulit untuk didefinisikan atau dioptimalkan, seperti "menghasilkan keluaran gambar yang harus terlihat realistis" atau "harus tahan terhadap contoh permusuhan". Dalam hal ini, tujuan sebenarnya bukan "menemukan hyperparameters untuk meminimalkan kehilangan pengganti", melainkan "menemukan hyperparameters sehingga ketika kami menjalankan SGD pada parameter lainnya untuk mengoptimalkan pengganti, kami mendapatkan kinerja yang baik pada true objektif".
sumber
Karena Anda bertanya "terlepas dari kertasnya", saya ingin mengambil contoh sederhana: Regresi linier yang dihukum (Ridge / Lasso).
Fungsi obyektif untuk mengoptimalkan hiper-parameter adalah ekspresi yang merupakan proksi untuk kesalahan generalisasi. Ungkapan ini sulit untuk ditulis sebagai fungsi analitik sederhana yang dapat dibedakan, tetapi dapat dengan mudah dievaluasi di beberapa titik dengan hanya menyelesaikan masalah optimasi yang mendasarinya.
Mengevaluasi fungsi (F2) mengharuskan Anda untuk menyelesaikan masalah optimasi, yang bisa jadi mahal. Jadi, bahkan jika Anda dapat memperkirakan gradien untuk F2 untuk melakukan penurunan gradien, itu akan mahal dan lambat. Dalam kasus seperti itu, melakukan pencarian kotak sering kali "cukup baik."
(Gambar diambil dari posting ini: https://stats.stackexchange.com/a/26607/54725 )
Beberapa referensi:
sumber
Ketika hyperparameter ini dioptimalkan, maka itu akan menyebabkan kedua J dan J 'menjadi fungsi yang sama, yaitu bobot yang sama. Anda akan berakhir dengan solusi sepele.
Namun, jika Anda mencoba memperkirakan kondisi urutan pertama di atas hiperparameter, Anda tidak mendapatkan efek ini. Turunan dari hiperparameter sering mengoperasikan seluruh potongan model Anda, tanpa mengocok bagian-bagiannya seperti turunan atas parameter. Itu sebabnya mengoptimalkan hiperparameter sering mengarah ke solusi sepele seperti yang saya berikan kepada Anda untuk makalah tertentu. Mengoptimalkan hyperparameters tidak menyusahkan kumpulan data Anda dan membuatnya cukup tidak nyaman untuk menghasilkan sesuatu yang menarik.
sumber