Функция активации ReLU — это нелинейная функция активации, которая используется для сверточных нейронных сетей и глубокого обучения для всех слоев, кроме выходного.
Введение
Самые лучшие результаты в области распознавания лиц были показаны Convolutional Neural Network, то есть, сверточной нейронной сетью, являющейся логическим продолжением идей нейронных сетей когнитрона и неокогнитрона. Успех объясняется наличием возможности учета двумерной топологии изображения, в отличие от многослойного персептрона.
Сверточные нейронные сети способны обеспечить частичную устойчивость к коррекциям масштаба, смещениям, поворотам, смене ракурса и другим искажениям. Сверточные нейронные сети для того чтобы обеспечить инвариантность к изменениям масштаба, поворотам, сдвигам и пространственным искажениям призваны объединить следующие передовые архитектурные идеи : 1. Использование локальных рецепторных полей, которые способны обеспечить локальную двумерную связность нейронов. 2. Использование общих синаптических коэффициентов, которые способны обеспечить детектирование некоторых черт в любом месте изображения и уменьшить общее количество весовых коэффициентов. 3. Использование иерархической организации с пространственными под выборками.
На текущий момент сверточные нейронные сети и их модификации являются наилучшими по точности и скорости алгоритмами обнаружения объектов. Сверточная нейронная сеть имеет в своем составе разные виды слоев, а именно:
- Сверточный (convolutional) слой.
- Субдискретизирующий (subsampling) слой, являющийся под выборкой.
- Слой «обычной» нейронной сети, то есть, персептрон.
Первые два слоя (convolutional и subsampling), путем чередования между собой, способны сформировать входной вектор признаков для многослойного персептрона.
Сверточная сеть может считаться удачным средним между биологически правдоподобными сетями и обычным многослойным персептроном. Главной причиной успеха сверточных нейронных сетей явилась концепция общих весов. Невзирая на большие размеры, эти сети обладают небольшим количеством настраиваемых параметров в сравнении с их предком, которым считается неокогнитрон. Существуют версии сверточных нейронных сетей, например, Tiled Convolutional Neural Network, схожие с неокогнитроном, в которых выполнен частичный отказ от связанных весов, но алгоритм обучения остался тем же и базируется на обратном распространении ошибки. Сверточные нейронные сети способны быстро работать на последовательной машине и оперативно обучаться за счет чистого распараллеливания процесса свертки по всем картам, а также обратной свертки при распространении ошибки по сети.
Функция активации ReLU
Одним из этапов формирования нейронной сети считается операция выбора функции активации нейронов. Тип функции активации способен по многим параметрам определить набор функциональных возможностей нейронной сети и методику обучения данной сети. Стандартный алгоритм обратного распространения ошибки может хорошо работать на двухслойных и трехслойных нейронных сетях, но при последующем возрастании глубины есть вероятность появления разных проблем. Одной из причин является так называемое затухание градиентов.
С распространением ошибки от выходного слоя к входному на всех слоях выполняется умножение текущего результата на производную функции активации. Производная у стандартной сигмоидной функции активации имеет значение менее единицы на всей области определения, по этой причине после прохождения ряда слоев ошибка может стать близкой к нулевому значению. А когда функция активации обладает неограниченной производной, к примеру, гиперболическим тангенсом, то может случиться взрывной рост ошибки по мере распространения, что может привести к неустойчивости процесса обучения.
Одной из функций активации является функция ReLU. Как известно, нейронные сети могут приблизить сколь угодно сложную функцию, когда в них имеется достаточное количество слоев и функция активации выступает как нелинейная. Функции активации, такие как, сигмоидная или тангенциальная являются нелинейными, но могут привести к проблемам, связанным с затуханием или возрастанием градиентов. Но имеется возможность использования и гораздо более простого варианта, а именно, выпрямленной линейной функции активации ReLU (rectified linear unit), которая может быть представлена следующей формулой:
f(s) = max (0, s)
График функции ReLU представлен на рисунке ниже.
Рисунок 1. График функции ReLU. Автор24 — интернет-биржа студенческих работ
К числу преимуществ использования функции активации ReLU можно отнести следующие моменты:
- Производная данной функции может быть равна или единице, или нулю, и это значит, что не может произойти разрастания или затухания градиентов, так как, если умножить единицу на дельту ошибки, то получится все равно дельта ошибки. А в случае использования другой функции, к примеру, гиперболического тангенса, значение дельты ошибки могло или уменьшаться, или возрастать, или оставаться таким же, то есть, производная гиперболического тангенса способна возвращать число с разным знаком и величиной, что может существенно повлиять на затухание или возрастание градиента. Кроме того, применение данной функции может привести к прореживанию весов.
- Процесс вычисления сигмоиды и гиперболического тангенса предполагает исполнение ресурсоемких операций, таких как, например, возведение в степень, в то время как ReLU можно реализовать при помощи простого порогового преобразования матрицы активаций в нуле.
- Выполняется отсечение ненужных деталей в канале при отрицательном выходе.
К недостаткам следует отнести тот факт, что ReLU является не всегда достаточно надежной и в процессе обучения способна выйти из строя («умереть»). К примеру, значительная величина градиента, проходящего через ReLU, способна привести к такому обновлению весов, что этот нейрон никогда больше не сможет быть активированным. Когда это происходит, то, начиная с данного момента, градиент, который проходит через данный нейрон, всегда будет равняться нулю. Это означает, что этот нейрон может необратимо выйти из строя. К примеру, при чрезмерно высокой скорости обучения (learning rate), может случиться, что до сорока процентов ReLU будут «мертвы» (то есть, никогда не активируются). Данная проблема может быть решена при помощи выбора необходимой скорости обучения.