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

Для начала давайте определим ReLU: f(x) = макс (0, х). Проще говоря, если x меньше или равно 0, функция вернет 0, в противном случае она вернет x. Если мы построим эту функцию, мы увидим, что в функции нет разрывов. Это означает, что ReLU непрерывен, но одного этого недостаточно, чтобы ответить на вопрос о дифференцируемости.

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

Глядя на график ReLU, интересно рассмотреть момент, когда x = 0. Именно в этот момент функция резко меняется, и если возникнет проблема с производной функции, она будет здесь. Чтобы ReLU был дифференцируемым, его производная должна существовать при x = 0. Чтобы проверить, существует ли производная, нам нужно выяснить, существуют ли левый и правый пределы и равны ли они при x = 0.

Чтобы найти левый предел, мы вычисляем производную, когда h приближается к 0 слева. При x = 0 и h ‹ 0 производная равна 0.

Аналогично находится правый предел, где h стремится к 0 справа. При x = 0 и h > 0 производная равна 1.

Левый предел равен 0, а правый предел равен 1. Чтобы производная существовала при x = 0, левый и правый пределы должны быть равны, но это не так для ReLU. В результате производная ReLU не существует при x = 0, что делает ее недифференцируемой.

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

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