Apa perbedaan antara LeakyReLU dan PReLU?

42

f(x)=max(x,αx) with α(0,1)

Keras, bagaimanapun, memiliki kedua fungsi dalam dokumen .

LeLU ReLU

Sumber LeakyReLU :

return K.relu(inputs, alpha=self.alpha)

Karenanya (lihat kode relu )

f1(x)=max(0,x)αmax(0,x)

PReLU

Sumber PReLU :

def call(self, inputs, mask=None):
    pos = K.relu(inputs)
    if K.backend() == 'theano':
        neg = (K.pattern_broadcast(self.alpha, self.param_broadcast) *
               (inputs - K.abs(inputs)) * 0.5)
    else:
        neg = -self.alpha * K.relu(-inputs)
    return pos + neg

Karenanya

f2(x)=maks(0,x)-αmaks(0,-x)

Pertanyaan

Apakah saya melakukan kesalahan? Bukankah dan setara dengan (dengan asumsi ?)f1f2fα(0,1)

Martin Thoma
sumber

Jawaban:

50

Langsung dari wikipedia :

masukkan deskripsi gambar di sini

  • Leaky ReLU memungkinkan gradien kecil dan tidak nol ketika unit tidak aktif.

  • Parametrik ReLU mengambil ide ini lebih jauh dengan membuat koefisien kebocoran menjadi parameter yang dipelajari bersama dengan parameter jaringan saraf lainnya.

Thomas W
sumber
3
Ah, terima kasih, saya selalu lupa bahwa LeLAK Leaky memiliki sebagai hyperparameter dan Parametrik ReLU memiliki sebagai parameter. αα
Martin Thoma
1
Untuk Google-hal: Tidak apa-apa . (Btw, bagi saya pertanyaan ini adalah hasil ketiga sekarang untuk "Leaky ReLU vs PReLU")
Martin Thoma
3
@MartinThoma benar! Tidak ada pelanggaran sama sekali untuk itu! Cara saya menemukan jawabannya juga cukup bodoh; Saya tidak tahu apa 'P' dalam PReLU itu, jadi saya mencari tahu dan kemudian mencoba mencari tahu apa itu PReLU dengan hanya mengetik 'Parametric ReLU', yang membawa saya ke halaman wikipedia. Saya belajar sesuatu hari ini karena pertanyaan Anda;)
Thomas W
1
Bagus. Begitulah seharusnya :-) Dalam hal ini ikhtisar fungsi aktivasi kecil saya mungkin menarik untuk Anda juga. Artikel ini (sebagian) dalam bahasa Jerman, tetapi saya kira untuk bagian itu tidak masalah
Martin Thoma