Нейрокластер

5 сообщений / 0 новых
Последнее сообщение
Нейрокластер

Добрый день, Ирина!

 

Некоторое время назад я открыл тему, связанную с прогнозированием нестационарных временных рядов с использованием статистических методов. Положительные результаты были получены, однако в ходе тестирования на разных массивах реальных данных я обнаружил, что используемые мною "нечеткие" алгоритмы сильно теряют в сходимости оптимального результата при попадании в исходные данные большого количества нерелевантных данных. Усовершенствуя эти алгоритмы, я стал замечать, что они становятся все ближе и ближе к принципам работы нейросетей. В итоге решился отложить сделанные наработки и попробовать "с чистого листа" с применением нейросетей.

 

Итак, нейросети. Цель - создать систему, способную предлагать оптимальное решение, находя закономерности там, где их никто не видит, сохраняя устойчивость прогноза вне зависимости от "качества" исходных данных. Гипотеза - если группа нейросетей, построенных по разным принципам, работает над одной общей задачей, то в разные периоды времени сети будут иметь различную эффективность и степень доверия к результатам их вычислений, тогда достаточно иметь нехитрый статистический алгоритм или управляющую нейросеть для выбора оптимального решения. Я назвал это нейрокластером (может, такое понятие уже и существует, не знаю). Поскольку мои знания в области нейросетей ограничиваются далеким курсом в институте, то решил обратиться к Вам за консультацией, чтобы построить макет сети каждого типа и заставить их работать.

 

Я начал с простых многослойных сетей прямого распространения с обратным распространением ошибки. В качестве макета решил создать простую сеть, "угадывающую" день недели, основываясь на числе месяца, номере месяца в году и истекшем числе лет с последнего високосного года (т.е. три нейровхода со значениями [0,1]). Есть семь нейровыходов [0,1] - по одному на каждый день недели. 20 нейронов в скрытом слое. Функции активации логистические. Сеть переобучается (или дообучается) на каждой итерации (для каждого нового дня на протяжении 10 лет). Глубина истории обучающей выборки - 100 дней назад. Обучающая выборка подается 10 раз (10 прогонов) для каждой итерации. Возможно досрочное прекращение обучения для данной итерации, если после первого прогона среднее значение квадрата ошибки меньше порогового. Коэффициент скорости обучения [0,1] изменяется с шагом 0.1 в зависимости от уменьшения или увеличения средней ошибки на каждом новом тесте.

 

Это примерная архитектура сети. Может к ней есть вопросы или замечания? У меня есть несколько вопросов.1. Целесообразно ли в данной задаче использовать один нейровход для подачи сигнала, например, о числе месяца. Или нужно использовать, скажем, 31 нейровход (по одному на каждое число) для обозначения числа месяца?

2. Существуют ли достоверные критерии, позволяющие задать оптимальное число нейронов скрытого слоя еще на этапе проектирования. Может существует какое-то "золотое соотношение" числа нейронов входного-скрытого-выходного слоев?3. На сколько вообще целесообразно использовать плавающую скорость обучения? В одних книжках пишут, что это ускоряет скорость обучения, в других пишут, что нет вообще никакой гарантии, что это приведет к сходимости в поиске минимума ошибки.

 

Спасибо за ответы!

 

Здравствуйте, Андрей! Вы

Здравствуйте, Андрей! Вы неутомимы :-))) Задумка и задача у вас как обычно чрезвычайно амбициозны!

Андрей, я вам сразу скажу, что не являюсь экспертом по нейронным сетям. В моем парке моделей прогнозирования имеется нейросетевая модель, но очень простая: трехслойная сеть прямого распространения, обученная по backpropagation. Ее простой пример описан в записи Создаем нейронную сеть для прогнозирования временного ряда. В связи с этим точных и практичных ответов на вопросы мне дать будет сложно, но кое-чем я постараюсь поделиться.

Quote:
используемые мною "нечеткие" алгоритмы сильно теряют в сходимости оптимального результата при попадании в исходные данные большого количества нерелевантных данных

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

Quote:
1. Целесообразно ли в данной задаче использовать один нейровход для подачи сигнала, например, о числе месяца. Или нужно использовать, скажем, 31 нейровход (по одному на каждое число) для обозначения числа месяца?
2. Существуют ли достоверные критерии, позволяющие задать оптимальное число нейронов скрытого слоя еще на этапе проектирования. Может существует какое-то "золотое соотношение" числа нейронов входного-скрытого-выходного слоев?

У меня аналогичный вопрос возникал, когда я формировала архитектуру сети для прогноза своих рядом. Количество входов и нейронов скрытого слоя я искала методом перебора. К сожалению, в просмотренных материалах нет четких и ясных рекомендаций по тому, как выбирать количественные характеристики сети, так что пришлось это изучать самой. В итоге, на моем опыте при единой структуре сети (трехслойная прямого распространения) количество входом может колебаться от 2 до 168, количество нейронов скрытого слоя находится примерно в том же диапазоне. Все это вместе зависит от количества выходов, то есть от количества прогнозных значений, которые мне нужно получить + от характера временного ряда. У меня выходов или 24 (сутки в почасовке), или 168 (неделя в почасовке). Какого-то универсального правила пока не сформировалось, но мое правило будет для вас не работать, так как природа рядов очень различна.

Quote:
3. На сколько вообще целесообразно использовать плавающую скорость обучения?

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

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

----------------------
Ирина Чучуева,
команда Математического бюро

Есть пара интересных книг,

Есть пара интересных книг, которые можно рекомендовать... :)

 

Одна - "Элементарное введение в технологию нейронных сетей", Рышард Тадеусевич, Горячая линия - Телеком, Москва 2011. Полезного в плане математики в этой книжки почти нет, но в ней есть словестные описания и ответы на очень интересные вопросы. Я эту книжку использую для "вдохновения", когда идеи заканчиваются... :)

 

Вторая - "Финансовые рынки. Нейронные сети, хаос и нелинейная динамика." (4-е издание), Ширяев В.И., Красанд, Москва 2011. На мой взгляд, очень грамотно описывается математика и алгоритмы. При наличии бызового опыта в нейросетях и понимания терминологии, материал достаточно легко усваивается.

 

Расскажу, если найду еще интересные источники.

 

 

Ирина, у меня встречный вопрос про источники/литературу... Ищу описание алгоритмов для обучения сетей с обратным распространением ошибки. Например, сейчас застрял на пакетном режиме обучения. Вроде на словах все ясно, но четкой формулы не нашел и решение сходится хуже последовательного режима, значит скорее всего мой алгоритм неверен. У Хайкина на эту тему есть только промежуточная формула - мол, дальше досчитаете сами по аналогии ("люблю" я эти фразы типа "легко вывести выражение..." и пропускаем вывод на 3 страницы с интегралами... :) ). А еще я хотел попробовать реализовать и проверить работу методов сопряженных градиентов, квази-ньютоновские методы и пр. - в идеале, все что есть в маткаде.

 

В общем, прошу назвать источник, если знаете, где поискать четкое формализованное описание алгоритмов обучения.

Андрей, поняла вопрос, сама

Андрей, поняла вопрос, сама тоже этим в один момент интересовалась и мне попадались статьи приличные. Так как имею привычку все сохранять у себя, то покопаюсь в своей папочке, постараюсь найти материалы, которые показались мне наиболее читабельными и понятными.

----------------------
Ирина Чучуева,
команда Математического бюро

2010 - 2018 © Математическое бюро

Все права защищены в соответствии с законодательством РФ

При полном или частичном использовании материалов ссылка на сайт обязательна