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

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

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

Мы можем представить это с помощью набора прямоугольников. Или, другими словами, как мы говорим, башни. Наша сеть аппроксимирует функцию. Таким образом, показывая, что функция активации помогает нам строить эти башни, мы можем доказать тот факт, что функции активации удовлетворяют нашему требованию.
Если вводится значение x, то мы можем передать его нескольким строителям башен. Каждая сделает башню, и после того, как мы соберем все башни вместе, мы сможем построить требуемую функцию. Следовательно, чем больше башня, тем лучше приближение.

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

Предположим, у нас есть вес и смещение для нейронов h11, h22, равные w1, b1, w2, b2 соответственно. Взяв для них произвольное значение, мы получим две кривые c1 и c2. Они выглядят как ступенчатые функции, потому что веса велики. Предположим, что веса выходных слоев равны +1 и -1 соответственно. Это означает, что на конечном слое вычитаются два графика. График, который получается после шага вычитания, представляет собой прямоугольник. И мы можем придумать еще таких прямоугольников, чтобы заполнить пространство под кривой. Таким образом, мы можем аппроксимировать базовую функцию, которую пытается смоделировать сеть. Следовательно, чем больше количество производителей башен, тем выше точность.

Создатели башен могут быть объединены в подобную сеть.

Можно задать вопрос, а что если 2 входа. Это что-то для следующего поста. Следует отметить, что это очень высокий уровень, схематическое представление того факта, почему сигмоид работает. Настоящее математическое доказательство того, почему сигмоид работает, можно найти в исследовательских журналах. Снова упрощенную версию того же самого можно найти в следующем посте.