Прежде всего мы не укладываем линейные функции друг в друга, чтобы получить нелинейную функцию. Существует очевидная причина, по которой NN могут никогда не работать так: объединение линейных функций друг с другом приведет к линейной функции.
Что делает NN нелинейными, так это функция активации, которая следует за линейной функцией! Однако, в принципе, вы правы: мы просто складываем множество логистических регрессий (но не линейных!) Друг в друга и ... tadaa: мы получаем что-то хорошее из этого ... это справедливо? Оказывается, что (с теоретической точки зрения) это на самом деле справедливо. Еще хуже: используя знаменитую и хорошо известную теорему Стоуна-Вейерштрасса, мы просто доказываем, что нейронных сетей с одним скрытым слоем и без выходной функции в конечном узле достаточно для приближения любых непрерывных функций (и поверьте, непрерывные функции могут быть некрасивыми звери, смотрите «лестницу дьяволов»: https://en.wikipedia.org/wiki/Cantor_distribution) на интервалах вида (NN с одним скрытым слоем и без выходной функции в конечном узле являются в точности функциями вида где - размер скрытого слоя, то есть полиномов в логистических функциях, и они по определению образуют алгебру!). Т.е. «по построению», НС очень выразительны.[ а , б ]х ↦ = б + а1φ1( х ) + . , , + аLφL( х )L
Почему тогда мы используем глубокие NN?
Причина в том, что приведенная выше теорема SW гарантирует только то, что существует достаточно большой размер слоя, чтобы мы могли приблизиться к нашей (мы надеемся, непрерывной) целевой функции. Однако необходимый размер слоя может быть настолько большим, что ни один компьютер не сможет обработать весовые матрицы такого размера. NN с более скрытыми слоями кажутся хорошим компромиссом между «точностью» и вычислимостью. Я не знаю каких-либо теоретических результатов, указывающих на то, насколько «увеличивается» выразительность NN при добавлении большего количества скрытых слоев по сравнению с простым увеличением размера одного скрытого слоя, но, возможно, в Интернете есть некоторые ресурсы ...
Можем ли мы действительно понять глубокие NNs?
Примеры вопросов: Почему именно NN предсказывает, что этот случай равен ИСТИНА, а другой, похожий случай, ЛОЖЬ? Почему именно он оценивает этого клиента более ценным, чем другой? Я не очень верю в это. Это связано со сложностью модели, которую вы не можете объяснить достаточно хорошо ... Я только слышу, что это все еще активная область исследований, но я не знаю никаких ресурсов ...
Что делает NN такими уникальными среди всех моделей?
Истинная причина, по которой мы так часто используем NN, заключается в следующих двух причинах:
- Они приходят с естественным «потоковым» свойством.
- Мы можем разворачивать их по максимуму во многих направлениях.
1. Я имею в виду, что с учетом обучающего набора , NN который был обучен на этом наборе и некоторых новых обучающих выборок , мы можем легко включить эти обучающие выборки в NN, просто продолжая алгоритм градиентного спуска / обратного хода, пока выбирая только партии из для обучения. Вся область обучения подкреплению (используется для выигрыша в таких играх, как Tic Tac Toe, Pong , Chess, Go, множество различных игр Atari с одной моделью и т. Д.) Основана на этом свойстве. Люди пытались внедрить это потоковое свойство в другие модели (например, Gradient Boosting), но это не так уж естественно и не так дешево в вычислительном отношении, как в настройке NN.TеTT′T′
Под 2. Я имею в виду, что люди обучили NN делать самые странные вещи, но в принципе они просто использовали одну и ту же структуру: складывая гладкие функции друг в друга, а затем позволяя компьютеру (то есть PyTorch / Tensorflow) делать грязную математику для вас, как вычисления производная функции потерь по весам. Одним из примеров будет эта статьягде люди использовали подход RL, а также усовершенствовали архитектуру NN для изучения сложного языка химических веществ, обучая его тому, как работать со стеком памяти (!). Попробуйте сделать это с повышением градиента ;-) Причина, по которой они должны это сделать, заключается в том, что язык химикатов, по крайней мере, так же «сложен в изучении», как и язык скобок (т. Е. Каждая открывающая скобка имеет заключительную в слове позже ) потому что язык SMILES, который люди используют для описания молекул, содержит символы «(» и «)». Из теоретической информатики (иерархия Хомского) известно, что этот язык нельзя описать с помощью обычных автоматов, но нужны автоматы с выталкиванием (то есть автоматы со стековой памятью). Это была мотивация для них (я полагаю), чтобы научить эту странную вещь NN.