Какую функцию активации использовать для нейронных сетей

Заранее извиняюсь, если этот вопрос не является общепринятым подходом, где задействован фрагмент кода или вопрос о коде. Я просто пытаюсь понять некоторые конкретные моменты на тему нейронных сетей. Я смотрел видео на YouTube (от Siraj Raval - Школа искусственного интеллекта) о выборе лучшей функции активации для нейронной сети: https://www.youtube.com/watch?v=-7scQpJT7uo

1- Я попытался понять его объяснение того, почему Sigmoid не является идеальной функцией активации, которая больше используется Neural Networks по следующим причинам:

  • Сигмоиды насыщают и убивают градиенты.
  • Сигмоиды медленной сходимости.
  • Сигмоиды не центрированы на ноль.
  • ОК, чтобы использовать на последнем слое.

Прежде всего, я полагаю, что 1-я и 2-я причины похожи, или что первая причина приводит ко второй. Это верно?

2- 3-я причина, которую я не понял (не в центре нуля). В 5:52 в видео Сирадж объясняет причину, по которой "... вывод начинается с 0 и заканчивается на 1, что означает, что значение после функции будет положительным, и что делает градиент весов либо положительным, либо отрицательным. Это заставляет обновления градиента заходить слишком далеко в разные стороны...". Эту точку я не поняла. По крайней мере, в идеале было бы полезно увидеть математически, как это объясняется.

3. Затем он продолжает, что функция Tanh решает эту проблему. Снова я не понял почему (математически).

4- а) Затем в 7:20 он упоминает, что ReLU лучше всего использовать для скрытых слоев, в то время как функция SoftMax используется для выходного слоя. Но конкретно не указывает, какая функция. Так будет ли функция Сигмоида здесь хорошим предположением? б) Он также добавляет, что для регрессии должна использоваться линейная функция "... так как сигнал проходит без изменений...". Что он подразумевает под этим предложением?

5. Наконец, он упоминает проблему с ReLU, где "... некоторые юниты могут быть хрупкими во время тренировки и умирать, означая, что большой градиент, протекающий через нейрон, может вызвать обновление веса, которое никогда не активируется ни на одной точке данных. градиенты, проходящие через него, всегда будут равны нулю с этого момента...". Опять же, я не понял этого объяснения, особенно не видя его математической стороны, поэтому объяснение имеет смысл.

У меня достаточно ясная базовая интуиция нейронных сетей и функции Сигмоида, но чтобы углубиться в более глубокие объяснения, такие как это видео о различных функциях активации, я считаю, что некоторые объяснения были упомянуты просто случайно, без объяснения причин и математики.

Любая помощь могла бы быть полезна. Большое спасибо.

1 ответ

Сигмовидной. При работе с нейронными сетями вам нужна эта функция, потому что она сохраняет нелинейность, конечно, это в выходном слое.

reLU, при обучении, используйте это в скрытых слоях, вам нужно значение x > 0, поэтому reLU принимает это значение. Я предлагаю взглянуть на reLU, softmax также используется, однако вы получите лучшие результаты на практике с reLU.

Другие вопросы по тегам