Traffine I/O

Bahasa Indonesia

2022-10-23

Apa itu Dropout Layer

Apa itu Dropout Layers

Dropout layers adalah teknik populer yang digunakan dalam deep learning untuk melakukan regularisasi dan mencegah overfitting pada neural network. Dalam artikel ini, saya akan mengeksplorasi apa itu dropout layers, tujuan mereka, dan manfaat yang mereka tawarkan dalam deep learning.

Definisi dan Tujuan Dropout Layers dalam Deep Learning

Dropout layers adalah jenis teknik regularisasi yang digunakan dalam model deep learning untuk mencegah overfitting. Ide di balik dropout layers adalah untuk secara acak mengeluarkan (yaitu, mengatur ke nol) beberapa unit dalam neural network selama setiap iterasi pelatihan. Hal ini mencegah neuron tunggal atau kelompok neuron dari mendominasi proses pelatihan dan memaksa neuron yang tersisa untuk mempelajari fitur yang berguna.

Tujuan dari dropout layers adalah untuk meningkatkan kinerja generalisasi dari deep neural network. Dengan menambahkan noise ke neural network selama pelatihan, dropout layers mengurangi co-adaptation antara neuron dan mendorong mereka untuk mempelajari fitur yang lebih robust yang generalisasi dengan baik pada data yang tidak terlihat sebelumnya.

Manfaat Menggunakan Dropout Layers

Menggunakan dropout layers dalam model deep learning menawarkan beberapa manfaat, termasuk:

  • Meningkatkan generalisasi
    Dropout layers secara signifikan mengurangi risiko overfitting dengan mencegah neural network dari menghafal data pelatihan. Hal ini pada gilirannya meningkatkan kinerja generalisasi dari model pada data baru dan tidak terlihat.

  • Konvergensi lebih cepat
    Dropout layers memaksa neural network untuk belajar lebih efisien dengan mencegah neuron tunggal atau kelompok neuron dari mendominasi proses pelatihan. Hal ini pada gilirannya mempercepat konvergensi proses pelatihan.

  • Keuletan terhadap noise
    Dropout layers membantu neural network menjadi lebih tahan terhadap noise dan variasi pada data input. Hal ini karena neuron dalam jaringan dipaksa untuk mempelajari fitur yang lebih robust yang dapat lebih toleran terhadap variasi pada data input.

  • Representasi fitur yang lebih baik
    Dropout layers mendorong neural network untuk mempelajari fitur yang lebih beragam dan berguna yang dapat mewakili data input dengan lebih baik. Hal ini pada gilirannya dapat mengarah pada peningkatan kinerja pada tugas downstream seperti klasifikasi, regresi, atau pengenalan gambar.

Bagaimana Dropout Layer Bekerja

Kita akan membahas bagaimana dropout layer bekerja dalam deep learning, termasuk mekanisme di balik dropout dan matematika di baliknya.

Mekanisme Dropout Layer

Dropout layer bekerja dengan cara secara acak menghilangkan beberapa unit atau neuron dalam jaringan saraf selama setiap iterasi pelatihan. Hal ini mencegah setiap neuron atau kelompok neuron tunggal menguasai proses pelatihan dan memaksa neuron yang tersisa untuk belajar fitur yang berguna secara independen.

Selama setiap iterasi pelatihan, dropout layer secara acak memilih subset neuron pada lapisan sebelumnya dan menghilangkannya dengan probabilitas p. Neuron yang tersisa kemudian diukur ulang dengan faktor \frac{1}{1-p} untuk memastikan nilai harapan neuron tetap sama. Selama inferensi atau pengujian, semua neuron digunakan dan pengukuran ulang tidak diterapkan.

Matematika di Balik Dropout Layer

Matematika di balik dropout layer melibatkan pengukuran ulang neuron yang tersisa dengan faktor \frac{1}{1-p} dan sampling dari distribusi Bernoulli selama pelatihan, sementara selama inferensi, semua neuron digunakan dan pengukuran ulang tidak diterapkan. Mari kita pertimbangkan jaringan saraf dengan satu lapisan tersembunyi dan satu dropout layer. Biarkan \mathbf{x} menjadi vektor input, \mathbf{h} menjadi keluaran lapisan tersembunyi, dan \mathbf{y} menjadi keluaran jaringan saraf.

Selama pelatihan, dropout layer secara acak memilih subset neuron di lapisan tersembunyi dan mengatur nilainya menjadi nol dengan probabilitas p. Neuron yang tersisa kemudian diukur ulang dengan faktor \frac{1}{1-p}. Ini dapat diungkapkan sebagai:

\mathbf{h'} = \frac{\mathbf{h} \odot \boldsymbol{\mu}}{1-p}

di mana \odot menunjukkan perkalian elemen-wise dan \boldsymbol{\mu} adalah vektor biner dengan ukuran yang sama seperti \mathbf{h}, dengan entri yang diambil dari distribusi Bernoulli dengan probabilitas p.

Selama inferensi, semua neuron di lapisan tersembunyi digunakan dan pengukuran ulang tidak diterapkan. Ini dapat diungkapkan sebagai:

\mathbf{h'} = \mathbf{h}

Output dari jaringan saraf kemudian dihitung sebagai:

\mathbf{y} = \text{softmax}(\mathbf{W_2} \mathbf{h'} + \mathbf{b_2})

di mana \mathbf{W_2} dan \mathbf{b_2} adalah matriks bobot dan vektor bias dari lapisan output, dan softmax adalah fungsi aktivasi.

Implementasi Dropout Layers

Kita akan menjelajahi implementasi dropout layers, termasuk bagaimana menyiapkan dropout layers di PyTorch dan bagaimana memilih dropout rate yang optimal.

Menyiapkan Dropout Layers di PyTorch

PyTorch adalah sebuah pustaka deep learning yang populer yang menyediakan beberapa cara untuk mengimplementasikan dropout layers di dalam neural networks. Salah satu cara untuk menambahkan dropout layer di PyTorch adalah dengan menggunakan modul nn.Dropout. Berikut adalah contoh bagaimana menambahkan dropout layer setelah sebuah fully connected layer di dalam neural network:

python
import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(784, 512)
        self.dropout = nn.Dropout(p=0.5)
        self.fc2 = nn.Linear(512, 10)

    def forward(self, x):
        x = x.view(-1, 784)
        x = self.fc1(x)
        x = nn.functional.relu(x)
        x = self.dropout(x)
        x = self.fc2(x)
        return x

Dalam contoh ini, kita telah menambahkan dropout layer dengan probabilitas p=0.5 setelah fully connected layer self.fc1. Fungsi aktivasi nn.functional.relu digunakan sebagai fungsi aktivasi. Layer output self.fc2 tidak diikuti oleh dropout layer.

Memilih Dropout Rate Optimal

Memilih dropout rate optimal sangat penting untuk kinerja dropout layer pada neural network. Dropout rate optimal tergantung pada kompleksitas neural network, ukuran dataset, dan tugas yang diberikan. Praktik yang umum dilakukan adalah memulai dengan dropout rate kecil (misalnya, p=0.1) dan secara bertahap meningkatkan dropout rate hingga akurasi validasi tidak meningkat lagi. Berikut adalah contoh cara memilih dropout rate optimal menggunakan PyTorch:

python
import torch.nn as nn
import torch.optim as optim

# Define the neural network
class Net(nn.Module):
    def __init__(self, p):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(784, 512)
        self.dropout = nn.Dropout(p=p)
        self.fc2 = nn.Linear(512, 10)

    def forward(self, x):
        x = x.view(-1, 784)
        x = self.fc1(x)
        x = nn.functional.relu(x)
        x = self.dropout(x)
        x = self.fc2(x)
        return x

# Define the training loop
def train(model, optimizer, criterion, train_loader, val_loader, epochs):
    for epoch in range(epochs):
        model.train()
        for batch_idx, (data, target) in enumerate(train_loader):
            optimizer.zero_grad()
            output = model(data)
            loss = criterion(output, target)
            loss.backward()
            optimizer.step()

        model.eval()
        val_loss = 0
        correct = 0
        with torch.no_grad():
            for data, target in val_loader:
                output = model(data)
                val_loss += criterion(output, target).item()
                pred = output.argmax(dim=1, keepdim=True)
                correct += pred.eq(target.view_as(pred)).sum().item()

        val_loss /= len(val_loader.dataset)
        val_acc = 100. * correct / len(val_loader.dataset)
        print('Epoch: {} - Validation Loss: {:.4f}, Validation Accuracy: {:.2f}%'.format(
            epoch+1, val_loss, val_acc))

# Train the neural network
# .
# .
# .

Perbandingan dengan Teknik Regulasi Lainnya

Dropout layer adalah salah satu dari banyak teknik regularisasi yang digunakan dalam model deep learning. Teknik regularisasi populer lainnya termasuk regularisasi L1 dan L2, early stopping, dan data augmentation. Berikut adalah perbandingan dropout layer dengan teknik regularisasi lainnya:

  • Regularisasi L1 dan L2
    Regularisasi L1 dan L2 adalah teknik weight decay yang menambahkan istilah penalty ke fungsi loss untuk mendorong bobot agar kecil. Dropout layer, di sisi lain, secara acak menghapus beberapa neuron dalam jaringan saraf selama pelatihan. Meskipun kedua teknik tersebut mencegah overfitting, dropout layer lebih efektif dalam jaringan saraf dalam yang dalam dengan banyak lapisan.

  • Early Stopping
    Early stopping adalah teknik yang menghentikan proses pelatihan ketika kesalahan validasi tidak lagi meningkat. Meskipun early stopping sederhana dan efektif, teknik ini mungkin tidak dapat mencegah overfitting pada jaringan saraf yang sangat dalam. Dropout layer, di sisi lain, dirancang khusus untuk mencegah overfitting pada jaringan saraf dalam.

    -Data Augmentation
    Data augmentation adalah teknik yang secara artifisial meningkatkan ukuran dataset dengan menghasilkan contoh baru dari yang ada. Data augmentation dapat meningkatkan kinerja generalisasi model, tetapi mungkin tidak cukup untuk mencegah overfitting pada jaringan saraf yang sangat dalam. Dropout layer, di sisi lain, dapat mencegah overfitting pada jaringan saraf dalam dengan secara acak menghapus beberapa neuron selama pelatihan.

  • Batch Normalization
    Batch normalization adalah teknik yang menormalkan masukan ke lapisan untuk memiliki rata-rata nol dan varians unit. Hal ini membantu mengurangi internal covariate shift dan mempercepat proses pelatihan. Dropout layer dan batch normalization sering digunakan bersama dalam jaringan saraf dalam untuk meningkatkan kinerja generalisasi.

  • Ensemble Learning
    Ensemble learning adalah teknik yang menggabungkan beberapa model untuk meningkatkan kinerja generalisasi. Dropout layer dapat digunakan dalam ensemble learning dengan melatih beberapa model dengan dropout rate yang berbeda dan menggabungkan prediksi mereka.

Tips dan Trik untuk Menggunakan Dropout Layers

Berikut adalah beberapa tips untuk menggunakan dropout layers, termasuk praktik terbaik untuk implementasi dan kesalahan umum yang harus dihindari.

Praktik Terbaik untuk Implementasi Dropout Layers

  • Gunakan dropout pada hidden layers
    Dropout layers biasanya ditambahkan setelah hidden layers pada jaringan saraf. Menambahkan dropout layers setelah input layer atau output layer mungkin tidak akan meningkatkan performa model.

  • Gradual naikkan dropout rate
    Dropout rate yang optimal tergantung pada kompleksitas jaringan saraf, ukuran dataset, dan tugas yang dihadapi. Praktik umum adalah memulai dengan dropout rate kecil (misalnya p=0.1) dan secara bertahap meningkatkannya hingga akurasi validasi tidak lagi meningkat.

  • Gunakan dropout rate berbeda untuk setiap layer
    Layer yang berbeda pada jaringan saraf mungkin membutuhkan dropout rate yang berbeda. Misalnya, layer yang dangkal mungkin memerlukan dropout rate yang lebih rendah daripada layer yang dalam.

    -Gunakan dropout selama training saja
    Dropout layers harus hanya digunakan selama fase training model. Selama fase pengujian, model lengkap harus digunakan tanpa dropout.

  • Gunakan dropout dengan teknik regularisasi lainnya
    Dropout layers dapat digunakan bersamaan dengan teknik regularisasi lainnya, seperti L1 dan L2 regularization, batch normalization, dan early stopping, untuk meningkatkan performa model.

Kesalahan Umum yang Harus Dihindari

  • Menggunakan dropout rate yang terlalu tinggi
    Menggunakan dropout rate yang tinggi dapat menyebabkan model underfit dan performa buruk pada set validasi. Penting untuk memulai dengan dropout rate yang kecil dan secara bertahap meningkatkannya hingga akurasi validasi tidak lagi meningkat.

  • Menggunakan dropout pada input atau output layer
    Menambahkan dropout layers pada input atau output layer mungkin tidak akan meningkatkan performa model dan dapat menyebabkan ketidakstabilan saat pelatihan.

  • Menggunakan dropout terlalu terlambat pada proses pelatihan
    Penting untuk menggunakan dropout layers awal pada proses pelatihan untuk mencegah overfitting. Menambahkan dropout layers terlalu terlambat pada proses pelatihan mungkin tidak akan meningkatkan performa model.

  • Menggunakan dropout rate yang berbeda untuk training dan testing
    Dropout layers harus hanya digunakan selama fase training model. Selama fase pengujian, model lengkap harus digunakan tanpa dropout.

  • Menggunakan dropout sebagai pengganti preprocessing data yang tepat
    Dropout layers harus digunakan sebagai teknik regularisasi bersamaan dengan teknik preprocessing data yang tepat. Menggunakan dropout layers sebagai pengganti preprocessing data yang tepat mungkin tidak akan meningkatkan performa model.

Ringkasan

Dropout layer adalah teknik regularisasi pada model deep learning yang membantu mencegah overfitting, meningkatkan generalisasi, mempercepat konvergensi, meningkatkan ketahanan terhadap noise, dan meningkatkan representasi fitur yang lebih baik. Dropout layer bekerja dengan secara acak menghapus sebagian kecil neuron selama pelatihan dan menyesuaikan neuron yang tersisa, sehingga memaksa jaringan untuk belajar fitur yang lebih tangguh. Dropout layer dapat diimplementasikan dengan mudah pada library deep learning seperti PyTorch.

Memilih dropout rate yang optimal sangat penting untuk performa model, dengan praktik umum adalah memulai dengan tingkat yang rendah dan secara bertahap meningkatkannya hingga akurasi validasi tidak lagi meningkat. Dropout layer dapat digunakan bersamaan dengan teknik regularisasi lain seperti L1 dan L2 regularization, batch normalization, dan early stopping.

Best practices untuk mengimplementasikan dropout layer meliputi menggunakan mereka di hidden layer, secara bertahap meningkatkan dropout rate, menggunakan dropout rate yang berbeda untuk lapisan yang berbeda, menggunakan dropout hanya selama pelatihan, dan menggabungkan dropout dengan teknik regularisasi lain. Kesalahan umum yang harus dihindari termasuk menggunakan dropout rate yang terlalu tinggi, meletakkan dropout layer pada input atau output layer, menggunakan dropout terlalu akhir dalam proses pelatihan, menerapkan dropout rate yang berbeda untuk pelatihan dan pengujian, dan mengandalkan dropout sebagai pengganti preprocessing data yang tepat.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!