Как CNN's избегают исчезающей проблемы градиента

15

Я много читал о сверточных нейронных сетях и удивлялся, как они избегают исчезающей проблемы градиента. Я знаю, что сети глубокого убеждения объединяют одноуровневые автокодеры или другие предварительно обученные мелкие сети и, таким образом, могут избежать этой проблемы, но я не знаю, как этого избежать в CNN.

Согласно Википедии :

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

Я не понимаю, почему обработка на GPU устранит эту проблему?

Aly
источник
2
Разве статья в Википедии не оправдывала, почему GPU помогает решить проблему исчезающего градиента? Это потому, что несмотря на то, что градиенты невелики, поскольку графические процессоры настолько быстры, нам все же удается улучшить параметры, выполняя множество шагов благодаря графическим процессорам?
Чарли Паркер
2
Точно. Исчезающая проблема градиента является причиной, по которой веса нижних уровней обновляются с очень небольшой скоростью, и, таким образом, обучение сети занимает вечность. Но, как и в случае с графическими процессорами, вы можете выполнять больше вычислений (то есть, больше обновлений весов) за меньшее время, а все больше и больше обрабатывать в графических процессорах, проблема исчезновения градиента до некоторой степени исчезла .
Санграм
@CharlieParker, не могли бы вы уточнить GPU's are fast correlated with vanishing gradients, я могу понять быструю логику с большой пропускной способностью памяти для обработки нескольких умножений матриц! но не могли бы вы объяснить, что это имеет отношение к производным? Исчезающий градиент вопрос , кажется, делать больше с инициализацией веса , не так ли!
Ана

Ответы:

13

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

Есть несколько способов решить проблему исчезающего градиента. Я предполагаю, что наибольший эффект для CNN пришел от перехода от сигмоидальных нелинейных единиц к выпрямленным линейным единицам. Если вы рассматриваете простую нейронную сеть, ошибка зависит от веса w i j только через y j , гдеEwijyj

yj=f(iwijxi),

его градиент

wijE=Eyjyjwij=Eyjf(iwijxi)xi.

Если - функция логистической сигмоиды, f будет близко к нулю для больших входов, а также для небольших входов. Если f является выпрямленной линейной единицей,fff

производная равна нулю только для отрицательных входов и 1 для положительных входов. Другим важным вкладом является правильная инициализация весов. Этот документ выглядит как хороший источник для понимания проблем более подробно (хотя я еще не читал его):

f(u)=max(0,u),

http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf

Лукас
источник
2
Я немного озадачен по поводу исправленных линейных единиц. Да, для сигмоидов и т. Д. Градиент часто очень мал, но для выпрямленных линейных единиц он часто равен нулю. Разве это не хуже? Таким образом, если вес юнита неудачен, он никогда не изменится.
Ганс-Петер Стёрр
2
Думая об этом, по этой причине могут быть использованы негерметичные и / или шумные реле.
воскресенье
5
Почему ваше первое предложение верно? Т.е. «исчезающая проблема градиента требует от нас использования небольших скоростей обучения с градиентным спуском, которые затем требуют много маленьких шагов, чтобы сходиться». Почему нам нужны небольшие скорости обучения, чтобы справиться с проблемой исчезающего градиента? Если бы градиенты были уже маленькими из-за исчезающих градиентов, я бы ожидал, что их уменьшение только ухудшит ситуацию.
Чарли Паркер
2
Хороший вопрос, я должен был объяснить это утверждение лучше. Проблема исчезающего градиента состоит не в том, что все градиенты малы (что мы могли бы легко исправить, используя большие скорости обучения), а в том, что градиенты исчезают при обратном распространении через сеть. То есть градиенты малы в одних слоях, но велики в других. Если вы используете большие скорости обучения, все это взрывается (потому что некоторые градиенты велики), поэтому вы должны использовать небольшую скорость обучения. Использование нескольких уровней обучения является еще одним подходом к решению проблемы за счет введения большего количества гиперпараметров.
Лукас
3
Я бы сказал , что скорость обучения в основном связан с взорвавшейся градиентной проблемой. Уменьшение градиента с чрезмерно низкой скоростью обучения вовсе не предотвращает исчезновение градиентов, а просто задерживает эффект, так как обучение значительно замедляется. Сам эффект обусловлен многократным применением нелинейностей и умножением малых значений. Конечно, существует тенденция перехода к меньшим скоростям обучения (из-за вычислительной мощности), но это не имеет ничего общего с исчезающими градиентами, поскольку оно только контролирует, насколько хорошо исследуется пространство состояний (при стабильных условиях).
RunDOSrun