Orang luar ke bidang ML / DL; memulai kursus Belajar Udacity Deep yang didasarkan pada Tensorflow; melakukan penugasan 3 masalah 4; mencoba menyesuaikan tingkat belajar dengan konfigurasi berikut:
- Ukuran batch 128
- Jumlah langkah: cukup untuk mengisi 2 zaman
- Ukuran lapisan tersembunyi: 1024, 305, 75
- Inisialisasi berat: terpotong normal dengan std. deviasi dari sqrt (2 / n) di mana n adalah ukuran dari layer sebelumnya
- Peluang putus sekolah: 0,75
- Regularisasi: tidak diterapkan
- Algoritma Learning Rate: peluruhan eksponensial
bermain-main dengan parameter laju pembelajaran; mereka tampaknya tidak berpengaruh dalam banyak kasus; kode di sini ; hasil:
Accuracy learning_rate decay_steps decay_rate staircase
93.7 .1 3000 .96 True
94.0 .3 3000 .86 False
94.0 .3 3000 .96 False
94.0 .3 3000 .96 True
94.0 .5 3000 .96 True
- Bagaimana seharusnya saya menyesuaikan tingkat pembelajaran secara sistematis?
- Bagaimana tingkat pembelajaran terkait dengan jumlah langkah?
Jawaban:
Gunakan pengoptimal keturunan gradien. Ini adalah ikhtisar yang sangat bagus.
Mengenai kode, lihat tutorial ini . Ini dan ini adalah beberapa contoh.
Secara pribadi, saya sarankan untuk menggunakan ADAM atau RMSprop. Masih ada beberapa hiperparameter untuk ditetapkan, tetapi ada beberapa yang "standar" yang bekerja 99% dari waktu. Untuk ADAM Anda dapat melihat kertasnya dan untuk RMSprop di slide ini .
EDIT
Oke, Anda sudah menggunakan optimizer gradien. Kemudian Anda dapat melakukan beberapa optimasi hyperparameters untuk memilih tingkat pembelajaran terbaik. Baru-baru ini, pendekatan otomatis telah diusulkan . Juga, ada banyak pekerjaan yang menjanjikan oleh Frank Hutter mengenai penyetelan hyperparameters otomatis.
Lebih umum, lihat Tantangan AutoML , di mana Anda juga dapat menemukan kode sumber oleh tim. Dalam tantangan ini, tujuannya adalah untuk mengotomatisasi pembelajaran mesin, termasuk penyetelan hyperparameters.
Akhirnya, makalah ini oleh LeCun dan tutorial terbaru dari DeepMin ini (lihat Bab 8) memberikan beberapa wawasan yang mungkin berguna untuk pertanyaan Anda.
Bagaimanapun, perlu diingat bahwa (terutama untuk masalah yang mudah), adalah normal bahwa tingkat pembelajaran tidak banyak mempengaruhi pembelajaran ketika menggunakan pengoptimal gradient descent. Biasanya, pengoptimal ini sangat andal dan bekerja dengan parameter yang berbeda.
sumber
Anda dapat mengotomatiskan penyetelan hyper-parameter dalam banyak algoritma pembelajaran mesin itu sendiri, atau hanya hyperparameters untuk pengoptimal Gradient Descent yaitu tingkat pembelajaran.
Salah satu perpustakaan yang telah populer untuk melakukan ini adalah spearmint.
https://github.com/JasperSnoek/spearmint
sumber
Tuner kecepatan pembelajaran otomatis terkini diberikan dalam Adaptasi Tingkat Pembelajaran Online dengan Keturunan Hypergradient
Metode ini sangat mudah diterapkan, hasil inti untuk SGD diberikan sebagai:
sumber
Untuk menyetel hiperparameter (apakah itu tingkat pembelajaran, tingkat peluruhan, regularisasi, atau apa pun), Anda perlu membuat dataset holdout; dataset ini terpisah dari dataset pelatihan Anda. Setelah menyetel beberapa model dengan konfigurasi berbeda (di mana konfigurasi = pilihan tertentu dari masing-masing hyperparameter), Anda memilih konfigurasi dengan memilih salah satu yang memaksimalkan akurasi holdout.
sumber