Почему нельзя использовать многослойный персептрон на малых выборках данных?
Всем привет!
Мне для дипломной работы поручили построить многослойный персептрон на небольшой выборке. Данные представлены тремя временными месячными рядами: доход (D), расход (R), субсидия (S). Для дохода имеется 15 месяцев, для расхода и субсидий 17 месяцев.
Я хочу построить следующую регрессионную зависимость: прогнозировать доход в 16-м и 17-м месяце на основе: Дохода в прошлом периоде lag_1(D), R, S.
Почитал Хайкина и статейки в сети. Все упорно пишут про то, что необходима большая выборка для настройки весов сети.
Вопрос: почему именно так? Почему я не могу взять многослойный перспетрон, сделать 3 входа, 2 нейрона на скрытом слое и 1 выход, в качество функции активации использовать сигмоиду.
Поэксперементировать со скоростью и моментом для градиента, обучить модель на 13 месяцах, меняя веса с каждой новой итерацией, а протестировать сеть на 14 и 15-м месяце.
В реальной жизни это было бы неуместно, а как лучше для диплома - судить вам.
Для разных моделей есть разные эвристики, сколько степеней свободы уместно использовать (например, можно встретить рекомендацию не использовать больше параметров, чем количество семплов / 10). С другой стороны, есть мнение, что правильная регуляризация позволяет ослабить эти требования - см. например https://jakevdp.github.io/blog/2015/07/06/model-co...
З.Ы. Почему сигмоида? Как минимум на выходе понадобится другая активация типа ReLU.
Спасибо за комментарий и ссылку, почитаю про регуляризацию. Я поэкспериментировал некоторое время и как мне показалось, все нужно проверять на конкретном наборе данных. Вроде как что то сеть прогнозирует, но из за небольшого объема данных я не уверен, уловила ли она взаимосвязь или просто подстроилась под обучающую выборку.
Вообще, я использую обычную множественную регрессию для своих данных, но одно из пожеланий для работы было использовать нейронные сети. Я попытался сделать хрестоматийные примеры, там часто использовалась эта функция активации, полазил в сети, пишут, что она уже непопулярна.
Да можете все, вот только устроит ли вас эта модель.
Чем больше данных - тем меньше переобучения. Данные как бы размазываются внутри сети.
Если данных мало, что она конечно научится чему-то, но вот в других ситуациях будет показывать совершенно не устраивающие вас результаты.
Спасибо за комментарий. Не могли бы вы подсказать, какие модели позволяют осуществлять прогноз на основе факторов на малых объемах данных?
Я почитал про деревья решений, мне показалось интересным.
Всякие новомодные нейронные сети и т.п. это просто еще один алгоритм апроксимации\интерполяции в многомерном пространстве. Т.о. чем больше внутренних параметров вы должны определить, чем гибче "модель" подстраивается к исходным даннам.
Существует два вида не очень хороших результатов:
1. Переобученная модель --- модель повторяет на 100% по входу - выход.
2. Недообученная модель --- модель не в состоянии точно улочить (повторить) нужный выход по входу.
Нужный вам результат где-то посередине.
Т.о. выводы:
1. чем меньше внутренних параметров -- тем меньше данных вам нужно
2. чем меньше внутренних параметров --- тем менее гибкая получается модель
3. чем больше внутренних параметров --- тем более универсальная модель может получится, но при этом вам нужно много данных.