Почему не все функции активации идентичны? - PullRequest
1 голос
/ 04 июля 2019

Это то, что я взял где-то в Интернете.Это очень простой код моделирования GAN + CNN, особенно для модели дескриминатора, написанный на keras python3.6.Это работает довольно хорошо, но у меня есть кое-что неясное.

def __init__(self):
    self.img_rows = 28
    self.img_cols = 28
    self.channels = 1

def build_discriminator(self):
    img_shape = (self.img_rows, self.img_cols, self.channels)

    model = Sequential()
    model.add(Conv2D(64,5,5, strides=(2,2)
    padding='same', input_shape=img_shape))
    model.add(LeakyReLU(0.2))
    model.add(Conv2D(128,5,5,strides=(2,2)))
    model.add(LeakyReLU(0.2))
    model.add(Flatten())
    model.add(Dense(256))
    model.add(LeakyReLU(0.2))
    model.add(Dropout(0.5))
    model.add(Dense(1))
    model.add(Activation('sigmoid'))
    return model

Появляются некоторые функции активации, но почему они все не идентичны?Если самый последний вывод 'sigmoid' здесь, я думаю, что остальные также лучше быть теми же функциями?Почему LeakyReLU используется в середине ?? Спасибо.

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

Я полагаю, что они не использовали сигмоид для остальных слоев, потому что с сигмоидом вы столкнулись с большой проблемой исчезновения градиентов в глубоких сетях. Причина в том, что сигмовидная функция «выравнивается» с обеих сторон вокруг нуля, давая слоям в направлении выходного слоя тенденцию создавать очень малые градиенты и, таким образом, малые скорости обучения, потому что, грубо говоря, градиент более глубоких слоев является своего рода произведение градиентов нижних слоев в результате цепного правила деривации. Так что если у вас всего несколько сигмовидных слоев, вам может повезти с ними, но как только вы соедините несколько из них, они будут создавать нестабильность в градиентах.

Слишком сложно для меня объяснить это в статье здесь, но если вы хотите узнать это более подробно, вы можете прочитать это в главе онлайн-книги . Btw. эта книга действительно великолепна Стоит прочитать больше. Вероятно, чтобы понять главу, сначала вы должны прочитать главу 1 книги, если не знаете, как работает обратное распространение.

0 голосов
/ 04 июля 2019

Функции вывода и активации скрытого слоя не обязательно должны быть идентичными. Активации скрытого слоя являются частью механизмов, которые изучают особенности, поэтому важно, чтобы у них не было исчезающих проблем с градиентом (как у сигмы), в то время как функция активации выходного слоя больше связана с выходной задачей, например, активация softmax для классификации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...