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

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

Что мы подразумеваем под обучением?

Давайте рассмотрим задачу обучения с учителем, для решения которой, по вашему мнению, может хорошо подойти нейронная сеть. Что это вообще должно означать для хорошей работы нейронной сети? Чтобы ответить на этот вопрос, давайте попробуем конкретизировать проблему. Предположим, нам дана функция, которая принимает некоторый вектор функций и возвращает некоторое значение. Эта целевая функция представляет нашу проблему; это функция, которую мы пытаемся использовать для предсказания или изучения нейронной сети. Что мы подразумеваем под словом «учиться»? Предположительно, мы имеем в виду, что если мы подадим одно и то же значение целевой функции и нашей нейронной сети, они обе будут давать одинаковые ответы. В связи с этим возникает вопрос: что вообще дает нам право предполагать, что это возможно? Зачем вообще должна существовать нейронная сеть, способная это делать?

В этом посте я хотел бы обсудить результаты статьи, которая была направлена ​​на решение этого вопроса еще в 1993 году. Статья под названием «Многослойные сети прямого распространения с неполиномиальной функцией активации могут аппроксимировать любую функцию» была написана Моше Лешно, Владимир Я. Лин, Аллан Пинкус и Шимон Шокен. В этой статье авторы демонстрируют, что нейронные сети действительно способны обучаться широкому спектру функций. Кроме того, они показывают, что так называемые неглубокие сети, имеющие только один скрытый слой, чрезвычайно богаты с точки зрения их способности к обучению. Они даже демонстрируют, что, по крайней мере в принципе, даже не нужно быть слишком осторожным при выборе функции активации.

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

Каковы последствия этого? Что ж, это говорит о том, что нейронные сети в принципе действительно способны обучаться чрезвычайно богатому классу функций. Вполне разумно предположить, что многие виды функций, которые мы хотели бы предсказать в реальном мире, могут непрерывно зависеть от своих входных данных, так что это действительно совершенно верный результат. Кроме того, может быть шокирующим узнать, насколько гибкими являются требования к функции активации. Наконец, мы можем быть впечатлены, узнав, что все это возможно с нейронной сетью только с одним скрытым слоем!

Глубокое обучение никуда не денется

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

Кроме многочленов?

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

Подтверждение идеи

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

Больше математики!

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