Когда я показывал, как в Excel написать простейшую нейронную сеть, которая будет угадывать правильные ответы, я упоминал, что далеко не каждая нейронная сеть может справиться с любой задачей. И говорил, что нелинейные примеры она решать вообще не в состоянии. Сегодня я хочу показать универсальный выход из сложившейся ситуации, а также показать вероятную причину того, почему так называемая сигмоида используется во всевозможных архитектурах нейронных сетей так часто.
Для начала покажу вам сам предмет разговора. Сигмоида - это функция, которая описывается формулой F(x)=1/(1+e^(-x)) и имеет следующий вид:
На самом деле это абсолютно потрясающая функция. И причин тому множество.
- во-первых, она ограничена от нуля до одного. Это позволяет крайне просто нормировать любые входящие в неё параметры, а также просто понимать, в каких пределах будет лежать её значение.
- во-вторых, она монотонна. Это значит, что она всегда возрастает. Т.е. любое "более правое" значение функции всегда больше того, что находится слева. Это существенно упрощает любой анализ.
- в-третьих, слева от нуля она вогнутая, а справа - выпуклая. Т.е. характер роста функции может быть любым. И, что самое главное, понятно где он какое значение принимает.
- При этом при больших значениях аргумента и слева, и справа угол наклона практически нулевой и радиус выпуклости\вогнутости практически бесконечный. Т.е. для больших значений аргумента мы имеем фактически постоянное значение функции.
Список этот можно продолжить большим числом приятных особенностей, но вывод из этого всего будет такой, что с помощью линейной комбинации сигмоид (если складывать несколько штук с разными коэффициентами) можно бесконечно приблизиться фактически к любой наперёд заданной функции на конкретном интервале. Т.е. если с линейной функцией, как было показано в прошлой статье, мы сильно ограничены областью применения, то в случае с большим числом сигмоид, мы имеем широчайшие возможности. А поскольку любая нейронная сеть всего лишь подбирает некоторую функцию, которая наиболее хорошо описывает реальность, то именно с помощью сигмоид сделать это становится максимально просто.
А продемонстрирую я это в следующий раз на примере небольшой псевдо нейронной сети, состоящей из одного сигмоидного нейрона, написанной всё в том же Excel'e, чтобы каждый мог повторить это у себя. Также покажу ряд интересных на мой взгляд приёмов, которые я выдумывал на лету, чтобы справиться с некоторыми возникшими проблемами. Надеюсь, вам будет интересно.