Memilih Tingkat Pembelajaran untuk DNN – Menuju AI

Memilih Tingkat Pembelajaran untuk DNN – Menuju AI

Author(s): Toluwani Aremu

Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda membuat produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.

Selama proses lamaran untuk perusahaan berbasis AI, saya diberi penilaian dibawa pulang yang mencakup tugas pembelajaran mesin. Salah satu tantangannya adalah meningkatkan kinerja jaringan neural konvolusional dalam (DCNN) khusus pada kumpulan data kecil dan langsung (MNIST). DCNN tidak bekerja dengan baik pada set pengujian. Setelah meninjau kodenya, saya tidak dapat mengidentifikasi masalah apa pun dengan penyiapan. Faktanya, hyperparameter yang digunakan konsisten dengan yang biasa terlihat di tutorial online (yaitu learning rate [lr] adalah 1e-3). Selama hari-hari awal saya belajar tentang kecerdasan buatan, saya mengikuti kursus online yang disebut kursus Pembelajaran Mesin Stanford oleh Andrew Ng di Coursera. Dalam salah satu kuliahnya, Ng menjelaskan bahwa kecepatan pembelajaran yang besar dapat menyebabkan pembelajaran yang tidak stabil dan mempersulit model untuk menyatu.

Kembali ke cerita saya, saya tidak menyadari bahwa aturan yang saya pelajari dari kuliah memiliki faktor lain untuk dipertimbangkan. Percaya bahwa kecepatan pembelajaran terlalu tinggi dan harus dikurangi, saya mengubahnya dari 1e-3 menjadi 3e-4. Sayangnya, ini tidak memperbaiki kinerja yang buruk pada set tes, meskipun itu meningkatkan kinerja pada set pelatihan. Ini sangat membuat frustrasi! Saya kemudian meningkatkan kecepatan pembelajaran menjadi 1e-1 (nilai yang relatif besar) dan terkejut melihat kinerja tes meningkat. Namun, efektivitas laju pembelajaran yang besar dapat bergantung pada kompleksitas kumpulan data. Sebagai contoh, ini mungkin bekerja dengan baik pada kumpulan data sederhana seperti yang saya kerjakan, tetapi tidak juga pada kumpulan data yang lebih kompleks. Selain itu, kemungkinan kecepatan pembelajaran yang tampaknya terlalu besar untuk menjadi efektif sebenarnya bisa menjadi nilai optimal untuk tugas tertentu.

Bagaimana Anda memilih tingkat pembelajaran yang optimal untuk tugas Anda? Mari kita lakukan eksperimen praktis cepat untuk mengamati efek dari kecepatan pembelajaran yang berbeda menggunakan pengoptimal Adam untuk melatih jaringan saraf konvolusional 7 lapis khusus pada kumpulan data CIFAR-100 yang kompleks. Di bawah ini adalah arsitektur yang dibangun dengan Pytorch.

kelas CNN(nn.Modul):
def __init__(self, img_channels=3, num_classes=100):
super(CNN, mandiri).__init__()
self.conv1 = nn.Conv2d(in_channels=img_channels, out_channels=16, kernel_size=3, langkah=2, padding=1)
self.pool = nn.MaxPool2d(kernel_size=2)
diri.bertindak = nn.ReLU()
self.conv2 = nn.Conv2d(in_channels=16, out_channels=64, kernel_size=3, padding=1)
self.conv3 = nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, padding=1)
self.conv4 = nn.Conv2d(in_channels=128, out_channels=256, kernel_size=3, padding=1)
self.conv5 = nn.Conv2d(in_channels=256, out_channels=512, kernel_size=3, padding=1)
self.conv6 = nn.Conv2d(in_channels=512, out_channels=512, kernel_size=3, padding=1)
self.conv7 = nn.Conv2d(in_channels=512, out_channels=256, kernel_size=3, padding=1)
self.fc = nn.Linear(in_features=1024, out_features= num_classes)
self.ln = nn.Ratakan()

def maju (self, x):
x = self.act(self.conv1(x))
x = self.pool(self.act(self.conv2(x)))
x = diri.bertindak(diri.conv3(x))
x = self.pool(self.act(self.conv4(x)))
x = diri.bertindak(diri.conv5(x))
x = self.pool(self.act(self.conv6(x)))
x = self.ln(self.act(self.conv7(x)))
x = diri.fc(x)
kembali x

Plot berikut menunjukkan hilangnya pelatihan dan akurasi tes untuk empat tingkat pembelajaran yang berbeda: 1e-1, 1e-3, 3e-4, dan 625e-5.


Dalam contoh ini, kita dapat melihat bahwa kinerja uji model CNN menderita ketika tingkat pembelajaran terlalu tinggi (1e-1) atau terlalu rendah (625e-5). Meskipun menggunakan laju pembelajaran 1e-3 dan 3e-4 menghasilkan penurunan bertahap selama pelatihan, model tersebut tidak stabil dengan laju pembelajaran lainnya. Perlu juga dicatat bahwa kecepatan pembelajaran 3e-4 tampaknya menyatu lebih lambat daripada 1e-3 pada kumpulan data CIFAR-100. Untuk bermain dengan nilai kecepatan pembelajaran yang berbeda dan mengamati hasilnya, edit kode ini di kaggle.

Memilih tingkat pembelajaran yang optimal bisa menjadi tugas yang menantang. Artikel ini bertujuan untuk membahas dan menjelaskan topik ini. Mari kita mulai dengan definisi standar.

APA ITU TINGKAT BELAJAR DI DNN?

Tingkat pembelajaran adalah hyperparameter yang mengontrol ukuran langkah di mana model memperbarui bobotnya selama pelatihan. Ini menentukan seberapa cepat atau lambat model belajar, dan merupakan faktor penting dalam keseluruhan kinerja model.

Selanjutnya, learning rate menentukan seberapa besar bobot model disesuaikan sebagai respon terhadap error yang diterimanya dari loss function. Jika learning rate terlalu kecil, model akan memakan waktu lama untuk konvergen ke solusi yang baik, tetapi akan lebih stabil. Di sisi lain, jika kecepatan pembelajaran terlalu besar, model mungkin tidak pernah konvergen atau bahkan menyimpang, sehingga menghasilkan kinerja yang buruk. Penting untuk menemukan keseimbangan yang baik antara kedua ekstrem ini.

FAKTOR EKSTERNAL YANG DAPAT MEMPENGARUHI TINGKAT BELAJAR

Ada beberapa faktor yang dapat mempengaruhi tingkat pembelajaran, termasuk kompleksitas kumpulan data, jenis model yang digunakan, jumlah data yang tersedia untuk pelatihan, dan algoritme pengoptimalan yang digunakan. Misalnya, kumpulan data yang kompleks mungkin memerlukan kecepatan pembelajaran yang lebih besar untuk membuat kemajuan yang memadai, sedangkan kumpulan data yang lebih sederhana mungkin memerlukan kecepatan pembelajaran yang lebih kecil untuk mencegah overfitting. Jenis model yang digunakan juga dapat mempengaruhi kecepatan belajar. Beberapa model, seperti jaringan saraf, mungkin memerlukan kecepatan pembelajaran yang lebih besar untuk belajar secara efektif, sedangkan model lain, seperti regresi linier, mungkin lebih sensitif terhadap kecepatan pembelajaran.

Jumlah data yang tersedia untuk pelatihan juga dapat memengaruhi laju pembelajaran. Jika model memiliki sejumlah besar data untuk dikerjakan, model tersebut mungkin dapat menghasilkan laju pembelajaran yang lebih besar tanpa overfitting. Di sisi lain, jika model memiliki jumlah data yang kecil, mungkin lebih rentan terhadap overfitting, dalam hal ini laju pembelajaran yang lebih kecil mungkin diperlukan. Algoritma optimasi yang digunakan juga dapat mempengaruhi learning rate. Beberapa algoritme, seperti penurunan gradien, peka terhadap kecepatan pembelajaran dan mungkin memerlukan penyetelan yang cermat untuk menemukan nilai terbaik. Lainnya, seperti penurunan gradien stokastik, kurang sensitif terhadap kecepatan pembelajaran dan mungkin dapat menggunakan nilai yang lebih besar tanpa masalah.

TEKNIK YANG DIGUNAKAN UNTUK PEMILIHAN TINGKAT BELAJAR OPTIMAL

Biasanya perlu bereksperimen dengan kecepatan pembelajaran yang berbeda dan memantau performa model dengan cermat untuk menemukan nilai terbaik. Namun, iterasi manual dari nilai-nilai ini tidak efisien waktu dan lebih baik memanfaatkan teknik yang lebih otomatis. Ada beberapa strategi untuk memilih tingkat pembelajaran yang optimal untuk model pembelajaran mesin. Beberapa pendekatan umum meliputi:

Pencarian kisi: Ini melibatkan penentuan kisaran tingkat pembelajaran yang mungkin dan melatih model dengan setiap nilai, mengevaluasi kinerja model pada set validasi untuk setiap nilai. Learning rate yang menghasilkan kinerja terbaik kemudian dipilih sebagai nilai optimal. Pencarian grid adalah metode yang mudah dan andal, tetapi bisa mahal secara komputasi, karena memerlukan pelatihan model berkali-kali. Pencarian acak: Ini melibatkan tingkat pembelajaran pengambilan sampel secara acak dari rentang yang ditentukan dan melatih model dengan setiap nilai, mengevaluasi kinerja model pada set validasi untuk setiap nilai. Learning rate yang menghasilkan kinerja terbaik kemudian dipilih sebagai nilai optimal. Pencarian acak umumnya lebih cepat daripada pencarian grid, karena membutuhkan lebih sedikit pelatihan model. Kelemahannya adalah mungkin kurang dapat diandalkan, karena bergantung pada pengambilan sampel acak dan mungkin tidak mengeksplorasi kisaran kecepatan pembelajaran secara menyeluruh. Metode kecepatan pembelajaran adaptif: Metode ini menyesuaikan kecepatan pembelajaran selama pelatihan berdasarkan gradien fungsi kerugian. Contohnya termasuk Adam dan RMSProp. Metode ini seringkali dapat menemukan nilai kecepatan pembelajaran yang baik tanpa perlu penyetelan eksplisit. Dengan keunggulan ini dibandingkan pengoptimal lainnya, memulai dengan pilihan kecepatan pembelajaran yang buruk dapat menyebabkannya tidak pernah menyatu. Mereka mungkin tidak selalu menemukan nilai optimal absolut, dan mereka mungkin membutuhkan lebih banyak sumber daya komputasi daripada metode lainnya. Penjadwal kecepatan pembelajaran: Salah satu strategi untuk memilih kecepatan pembelajaran yang optimal adalah dengan menggunakan jadwal kecepatan pembelajaran, yang dimulai dengan kecepatan pembelajaran yang tinggi dan secara bertahap menurunkannya seiring waktu. Hal ini memungkinkan model membuat kemajuan pesat di awal pelatihan sambil tetap menyempurnakan bobotnya saat pelatihan berlanjut. Saya pribadi menganggap pendekatan ini efektif. Ada beberapa jenis penjadwal laju pembelajaran yang tersedia di PyTorch yang telah saya gunakan selama eksperimen. Meskipun jadwal laju pembelajaran dapat berguna dalam kasus di mana kinerja model mendatar atau mulai menurun setelah beberapa periode pelatihan, jadwal tersebut mungkin memerlukan penyetelan yang cermat untuk menemukan jadwal yang optimal dan mungkin tidak selalu menghasilkan hasil terbaik.

Seperti yang dinyatakan di atas, tingkat pembelajaran yang optimal dapat bergantung pada kompleksitas kumpulan data, jenis model yang digunakan, jumlah data yang tersedia untuk pelatihan, dan algoritme pengoptimalan yang digunakan. Karena itu, mungkin perlu bereksperimen dengan kecepatan pembelajaran yang berbeda dan memantau performa model dengan cermat untuk menemukan nilai terbaik. Menggunakan teknik yang tercantum di atas akan membantu dalam pemilihan tingkat pembelajaran yang optimal dan membuat pelatihan menjadi lebih mudah.

Jika Anda menikmati membaca artikel ini, tolong beri suka dan ikuti. Untuk pertanyaan silahkan gunakan kolom komentar. Jika Anda ingin mengobrol, hubungi saya di LinkedIn atau Twitter.

Memilih Tingkat Pembelajaran untuk DNN awalnya diterbitkan di Towards AI on Medium, di mana orang melanjutkan percakapan dengan menyorot dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Jeffrey Hayes