Почему это ускоряет градиентный спуск, если функция плавная?


10

Сейчас я читаю книгу под названием «Практическое машинное обучение с Scikit-Learn и TensorFlow», а в главе 11 она содержит следующее описание объяснения ELU (Exponential ReLU).

В-третьих, функция является гладкой везде, в том числе около z = 0, что помогает ускорить градиентный спуск, так как она не отскакивает так сильно слева и справа от z = 0.

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

В zозначает ось й на графике выше. Я понимаю, что производная является гладкой, поскольку z < 0линия имеет кривую, и в этой области производная больше не равна 0.

Однако почему так получается, что если функция «везде гладкая, в том числе и около z = 0», она ускоряет градиентный спуск?


Кстати, я в правильном SE? Наука о данных, искусственный интеллект и перекрестная проверка (а также MathSE) ... мне кажется, что многие темы тесно связаны друг с другом ...
Blaszard

2
Я думаю, что вы могли бы безопасно опубликовать этот вопрос здесь, на Data Science или Cross Validated. Возможно, это нормально и для искусственного интеллекта, но я менее знаком с этим сайтом.
Нил Слэйтер

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

У @NeilSlater AI очень неясная сфера применения. Они закрывают такие вопросы. Таким образом, DS и CV были бы лучшими вариантами :)
Dawny33

Ответы:


1

Я предполагаю, что это связано с производной, поскольку ReLU имеет разрывную производную в 0. Следовательно, если вы используете определение:

ff(x+ϵ)f(xϵ)2ϵ

и очень близко к 0, вы получите много таких «прыжков».x


0

Предварительно: здесь уместны три атрибута функции: непрерывный, монотонный и дифференцируемый. RELU является непрерывным и монотонным орехом, не дифференцируемым при z = 0. Экспоненциальное отношение или ELU - это все три из этих атрибутов.

Дифференциал или градиент дает вам направление. Когда производная функции не определена в точке, тогда направление градиента не определено в этой точке.

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

Когда производная функции потерь не определена в некоторой точке, градиент является неопределенным. Это означает, что градиентный спуск потенциально может двигаться в неправильном направлении. Величина задержки, вызванная этой неопределенностью, зависит от скорости обучения и других гиперпараметров. Независимо от гиперпараметров статистически неопределенная производная в RELU при z = 0 способствует замедлению сходимости градиентного спуска.


Маловероятно, что параметр станет точно z = 0 после инициализации.
Питер

0

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

Пример настройки

Рассмотрим MLP с скрытыми слоями размера один.n

z1=W1x+b1

a1=f(z1)

...

zn=Wnan1+bn

y=f(zn)

где - функция активации.f

Tanh и Sigmoid - исчезающий градиент

Предположим, что - функция активации Таня или Сигмоида. Производные этих функций ограничены от -1 до 1 или формально для любого .ff(x)(1,1)x

Это вызывает очень важную проблему в глубоком обучении, известную как «проблема исчезновения градиента». Давайте рассмотрим производную WRT . По правилу цепочки имеем yW1

dfdW1=dfdWndWndWn1...dW2dW1

и для любого обратите внимание, что 0<i<n

dXidXi1=f(Wi1ai2+bi1)×ai2(1,1)

(Первое слагаемое находится между потому что ограничено, как обсуждалось ранее, и также находится между поскольку задает входное значение.)(1,1)fai2(1,1)

Таким образом, в основном является продуктом множества терминов, каждое из которых находится между (0, 1). Чем больше (чем глубже сеть), тем больше этот термин нам нужно умножить, и в результате становится экспоненциально меньше. Из-за этой экспоненциальной зависимости градиент быстро становится настолько малым, что мы можем эффективно рассматривать его как ноль. Следствием наличия нулевых градиентов является невозможность обучения вообще, потому что наше правило обновления для градиентного спуска основано на этом градиенте.dfdW1ndfdW1

RELU и Мертвый Нейрон

Relu изобретен для решения проблемы исчезающего градиента, потому что его производная всегда равна 1, когда поэтому, когда равно RELU, мы имеем: ai>0f

dXidXi1=ai2
dfdW1=a1a2a3...an1

Хорошо, когда но когда , все разваливается , на этот раз градиент не только очень близок к нулю, но и является чистым нулем. Как только нейрон туда доберется, уже нет шансов вернуться обратно. Вот почему это известно как проблема "Мертвого нейрона"х < 0x>0x<0

Leaky RELU и ELU

Утечка RELU и ELU является естественным развитием после RELU. Они аналогичны RELU как таковой производной, равной 1, когда но избегают «мертвого нейрона», избегая нулевых производных, когда .х < 1x>0x<1

Я цитирую оригинальную статью о разнице между ними.

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

Интуитивное объяснение выглядит следующим образом. В ELU всякий раз, когда x становился достаточно маленьким, градиент становился действительно маленьким и насыщенным (так же, как это происходит с Tanh и Sigmoid). Небольшой градиент означает, что алгоритм обучения может фокусироваться на настройке других весов, не беспокоясь об интерактивности с насыщенными нейронами.

Рассмотрим многочлен степени 2, который можно представить в виде гладкой поверхности в трехмерном пространстве. Чтобы найти локальный минимум, алгоритм градиентного спуска должен учитывать крутизну как в x, так и в y направлении. Если градиент и отрицателен в направлении x и y, не ясно, какой путь лучше. Поэтому разумно выбрать путь где-то посередине. Но что, если мы уже знаем, что все плоско (нулевые градиенты) в x-направлении, тогда переходить в y-направлении становится несложным делом. Или, другими словами, пространство поиска становится намного меньше.

специальная записка

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


0

У меня есть интуитивное представление о том, почему гладкие функции быстрее оптимизировать, но нет математического доказательства или чего-то еще.

Градиентный спуск вычисляет производную функции активации, чтобы определить изменение в весах. Когда функция активации имеет резкое сокращение (например, при z = 0 для ReLu), активация устройства может радикально измениться (т. Е. Всегда быть нулевой или линейной) для конкретных точек данных при изменении весов.

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.