Я хочу улучшить свое понимание нейронных сетей и их преимуществ по сравнению с другими алгоритмами машинного обучения. Мое понимание, как показано ниже, и мой вопрос:
Можете ли вы исправить и дополнить мое понимание, пожалуйста? :)
Мое понимание:
(1) Искусственные нейронные сети = функция, которая предсказывает выходные значения из входных значений. В соответствии с теоремой универсального приближения ( https://en.wikipedia.org/wiki/Universal_approximation_theorem ), вы обычно можете иметь любую возможную (хотя она должна вести себя хорошо) функцию предсказания, учитывая достаточно нейронов.
(2) То же самое верно для линейной регрессии, принимая полиномы входных значений в качестве дополнительных входных значений, так как вы можете хорошо аппроксимировать (сравнить разложение Тейлора) каждую функцию полиномами.
(3) Это означает, что (в некотором смысле, относительно наилучших возможных результатов) эти 2 метода эквивалентны.
(4) Следовательно, их основное отличие заключается в том, что метод обеспечивает лучшую вычислительную реализацию. Другими словами, с помощью какого метода вы можете найти, основываясь на учебных примерах, более быстрые хорошие значения для параметров, которые в конечном итоге определяют функцию прогнозирования.
Я приветствую любые мысли, комментарии и рекомендации для других ссылок или книг, чтобы улучшить мое мышление.
Ответы:
Вот сделка:
Технически вы написали истинные предложения (обе модели могут аппроксимировать любую «не слишком сумасшедшую» функцию при достаточном количестве параметров), но эти предложения никуда вас не приведут!
Почему это? Что ж, взглянем поближе на теорию универсального приближения или любое другое формальное доказательство того, что нейронная сеть может вычислить любой f (x), если есть достаточно Нейронов.
Все те доказательства, которые я видел, используют только один скрытый слой.
Взгляните сюда http://neuralnetworksanddeeplearning.com/chap5.html для некоторой интуиции. Есть работы, показывающие, что в некотором смысле количество нейронов должно расти в геометрической прогрессии, если вы используете только один слой.
Итак, хотя в теории вы правы, на практике у вас нет бесконечного количества памяти, поэтому вы не хотите тренировать сеть из 2 000 нейронов, не так ли? Даже если у вас было бесконечное количество памяти, эта сеть наверняка перегрузится.
На мой взгляд, наиболее важным моментом ОД является практический момент! Давайте немного подробнее об этом. Реальная большая проблема здесь не только в том, как многочлены увеличиваются / уменьшаются очень быстро вне тренировочного набора. Не за что. В качестве быстрого примера, пиксель любого изображения находится в очень специфическом диапазоне ([0,255] для каждого цвета RGB), поэтому вы можете быть уверены, что любой новый образец будет в пределах диапазона значений вашего обучающего набора. Нет. Дело в том, что это сравнение бесполезно для начала (!).
Я предлагаю вам немного поэкспериментировать с MNIST и попытаться увидеть реальные результаты, которые вы можете получить, используя всего один слой.
Практические сети используют более одного скрытого слоя, иногда десятки (ну, Resnet еще больше ...) слоев. По причине. Эта причина не доказана, и в целом выбор архитектуры для нейронной сети является горячей областью исследований. Другими словами, хотя нам все еще нужно знать больше, обе модели, которые вы сравнили (линейная регрессия и NN только с одним скрытым слоем), для многих наборов данных вообще бесполезны!
Кстати, в случае, если вы попадете в ML, есть еще одна бесполезная теорема, которая на самом деле является текущей «областью исследований» - PAC (вероятно, приблизительно правильная) / VC-измерение. Я остановлюсь на этом в качестве бонуса:
Если универсальная аппроксимация в основном утверждает, что при бесконечном количестве нейронов мы можем аппроксимировать любую функцию (большое спасибо?), То, что PAC говорит в практических терминах, учитывая (практически!) Бесконечное количество помеченных примеров, которые мы можем подобрать как можно ближе хочу лучшую гипотезу в нашей модели. Было очень весело, когда я вычислил фактическое количество примеров, необходимых для того, чтобы практическая сеть находилась в пределах некоторой практической желаемой частоты ошибок с некоторой вероятностью вероятности :) Это было больше, чем число электронов во вселенной. PS, чтобы повысить его также предполагает, что образцы являются IID (это никогда не бывает правдой!).
источник
Это правда, что любая функция может быть аппроксимирована произвольно близко как чем-то, что считается нейронной сетью, так и чем-то, что считается полиномом.
Прежде всего, имейте в виду, что это верно для многих конструкций. Вы можете аппроксимировать любую функцию, комбинируя синусы и косинусы (преобразования Фурье), или просто добавляя множество «прямоугольников» (не совсем точное определение, но я надеюсь, что вы поняли суть).
Во-вторых, очень похоже на ответ Йони, когда вы тренируете сеть или устанавливаете регрессию с большим количеством сил, количество нейронов или количество сил фиксировано. Затем вы применяете некоторый алгоритм, возможно градиентный спуск или что-то, и находите лучшие параметры с этим. Параметры - это веса в сети и коэффициенты для большого полинома. Максимальная мощность, которую вы берете за полином, или число используемых нейронов, называются гиперпараметрами. На практике вы попробуете пару таких. Можно утверждать, что параметр является параметром, конечно, но на практике это не так.
Суть в том, что при машинном обучении вы на самом деле не хотите, чтобы функция идеально подходила для ваших данных. Это не было бы слишком сложно достичь на самом деле. Вы хотите что-то, что хорошо подходит, но также, вероятно, работает для точек, которые вы еще не видели. Смотрите эту картинку, например, взятую из документации для
scikit-learn
.Линия слишком проста, но наилучшее приближение не справа, оно посередине, хотя функция справа подходит лучше всего. Функция справа будет делать довольно странные (и, вероятно, неоптимальные) прогнозы для новых точек данных, особенно если они находятся рядом с волнистыми битами слева.
Основная причина для нейронных сетей с парой параметров, работающих так хорошо, заключается в том, что они могут соответствовать чему-то, но на самом деле не подходят ему. Это также во многом связано с тем, как они обучаются, с некоторой формой стохастического градиентного спуска.
источник
Поскольку ответы пока не предоставлены (хотя я бы принял комментарий пользователя 1952009, если бы он был опубликован в качестве ответа), позвольте мне поделиться тем, что я узнал за это время:
(1) Мне кажется, что мое понимание в целом правильно, но дьявол кроется в деталях.
(2) Одна вещь, которая упущена в «моем понимании»: насколько хорошо будет параметризованная гипотеза обобщать данные вне обучающего набора? Неполиномиальная природа предсказаний нейронной сети может быть лучше, чем простая линейная / полиномиальная регрессия (помните, как полиномы очень быстро увеличиваются / уменьшаются вне обучающего набора).
(3) Ссылка, которая дополнительно объясняет важность возможности быстрого вычисления параметров: http://www.heatonresearch.com/2017/06/01/hidden-layers.html
источник
Может быть, эта статья поможет вам:
Полиномиальная регрессия как альтернатива нейронным сетям
Аннотация говорит:
источник