В чем разница между LeakyReLU и PReLU?

42

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

Керас, однако, выполняет обе функции в документах .

Leaky ReLU

Источник LeakyReLU :

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

Следовательно (см. Код relu )

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

PReLU

Источник 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

Следовательно,

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

Вопрос

Я что-то не так понял? Разве и эквивалентны (при условии ?)f 2 f α ( 0 , 1 )f1f2fα(0,1)

Мартин Тома
источник

Ответы:

50

Прямо из Википедии :

введите описание изображения здесь

  • Утечки ReLU допускают небольшой ненулевой градиент, когда устройство не активно.

  • Параметрические ReLU развивают эту идею, превращая коэффициент утечки в параметр, который изучается вместе с другими параметрами нейронной сети.

Томас В.
источник
3
Ах, спасибо, я всегда забываю, что у Leaky ReLU есть как гиперпараметр, а у Parametric ReLU есть как параметр. ααα
Мартин Тома,
1
Для Google-вещи: все в порядке . (Кстати, для меня этот вопрос является третьим результатом для «Leaky ReLU vs PReLU»)
Мартин Тома,
3
@MartinThoma правда! Никаких обид за это! То, как я нашел ответ, было довольно глупо; Я не знал, что такое «P» в PReLU, поэтому я понял это, а затем попытался выяснить, что такое PReLU, просто набрав «Parametric ReLU», и я попал на страницу википедии. Я узнал кое-что сегодня из-за твоего вопроса;)
Томас В.
1
Ницца. Вот как это должно быть :-) В этом случае мой небольшой обзор функции активации может быть интересен и для вас. Статья (частично) на немецком языке, но я думаю, что для этой части это не должно иметь значения
Мартин Тома