Делаем с ReLU то, что ReLU сделал с сигмоидом

Нейронная сеть - это просто сеть связанных искусственных нейронов. Мы не будем слишком беспокоиться о различиях между LSTM, рекуррентным, сверточным, полностью связанным и т. Д. - давайте перейдем к основной единице сети: нейрону.

Нейрон

Глядя на Рисунок 1, мы видим базовый строительный блок нейронной сети. x - это входы нейрона. Они могут быть из предыдущих слоев или из фактического набора данных для обучения или тестирования. Для нейрона это на самом деле не имеет значения - нейрон просто получает 1 или несколько входных данных и умножает их на веса, которые являются w, а затем складывает эти значения вместе. Красиво, просто, правда? Затем он добавляет к этой сумме смещение b, чтобы получить окончательное значение - это то, что означает этот символ Σ. Но ключом к обучению является «функция активации», поскольку именно она определяет, будет ли этот конкретный нейрон передавать какое-либо значение будущим нейронам (или конечному результату), и каким будет это значение.

Функция активации

Как уже говорилось, роль функции активации состоит в том, чтобы преобразовать значение суммирования во что-то, что может использовать остальная часть сети. Используется несколько различных функций активации, которые в литературе обычно обозначаются как g (z). Давайте подумаем о цели функции активации, прежде чем пытаться придумать что-то получше. Давайте сначала предположим, что нейроны НЕ имели функций активации. Тогда все выходы будут линейными, и сеть в целом не сможет решить что-либо большее, чем линейное уравнение. Функции активации вводят столь необходимую нелинейность, так что нейронные сети можно обучить вычислять (потенциально любую) нелинейную функцию.

Сигмовидная

Одна из самых известных функций активации - сигмовидная, которая определяется уравнением на рисунке 2.

При построении он выглядит как график, показанный на рисунке 3. Он имеет максимум, который приближается к 1, и минимум, который приближается к 0. Итак, если мы рассмотрим значение нашего суммирования из предыдущего, независимо от того, насколько оно БОЛЬШОЕ, как только оно передается в функцию активации сигмоида, оно сглаживается до максимального значения, которое подходы 1. Это отлично подходит для множества случаев использования, когда вам нужно определенно определить, является ли что-то ложным (0) или истинным (1), например, для определения того, является ли изображение кошкой или нет.

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

танх

Еще одна тесно связанная, но все же отличная функция активации - это tanh, которая определяется уравнением на рис. 4.

На рисунке 5 показан график функции tanh. Вы заметите, что максимальное значение по-прежнему (приближается) к 1, но теперь минимальное (приближается) -1. Это дает функции более крутой градиент, но по-прежнему страдает от той же проблемы «исчезающего градиента» сигмоида. Тот факт, что он допускает отрицательные значения, также помогает избежать смещения, поэтому его часто предпочитают сигмовидной диаграмме.

Выпрямленный линейный блок

Вы заметите из уравнения на рисунке 6 и графика на рисунке 7, что значения либо линейны, либо 0. Это дает много преимуществ, включая эффективное отключение нейронов, которые не работают. не вносят вклад, устанавливая их активацию на 0 (не распространять сигнал). Диапазон значений также бесконечен - функция активации будет возвращать любое заданное ей значение, если оно выше 0. Хотя она была впервые представлена ​​в 2000 году, но только в 2011 году она показала превосходную производительность для глубокие сети. По состоянию на 2018 год это самая популярная функция активации для глубоких нейронных сетей.

Передача дубинки

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

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

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

Итак, вот оно - мы нашли волшебную формулу активации для глубокого обучения? Нейронные сети существуют уже давно (уже более 70 лет!), И наконец за последнее десятилетие мы обнаружили функцию активации, которая помогла осуществить чудесные магические действия, которые почти как , но не совсем, думая . Может быть, всем исследователям стоит просто остановиться? Возможно, лучшие умы, работающие над проблемами машинного обучения

Позволяя машинам взять верх

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

Нейронные сети для генерации текста

Ага - они есть. Машины могут генерировать текст, который выдержит все тесты на людях. С появлением Generative Adversarial Networks можно представить мир, в котором машины могут генерировать еще более привлекательный текст, неотличимый от текста, генерируемого людьми.

Уравнения, генерируемые машиной

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

Они могут быть любой степени сложности (или простоты) и иметь любое количество ограничивающих условий. В то время как сигмовидные функции активации дают нам возможность ограничения между 0 и 1, а функции активации ReLU дают нам преимущество увеличения разреженности сети, функция активации, генерируемая машиной, может дать нам преимущества, о которых мы еще не можем себе представить.

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

Восстание машин

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

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

Чтобы узнать больше о глубоком обучении, посетите мою публикацию Шамун Сиддики Мелкие мысли о глубоком обучении.