Как не "перетренировать" НС

 

Здрассте всем. Может кто знает, что делать...

"Воспитываю" нейронную сеть (или как ее здесь зовут, перцептрон) на 4.000 барах данных М15 с помощью генетики. Как вариант - 17 входных сигналов, один скрытый слой в два раза больше, два нейрона на выходе (предполагается, что будет две сети, которые работают параллельно. Одна "заточена" на long, вторая на short. Два нейрона, соответственно, чтоб открыть/держать позицию и закрыть).

"Воспитывается" %) Собирает где-то 7000 пунктов на EURUSD (spread 18), процент попадания по сделкам где-то 85%. Только почему-то во время тестирования на новых данных ничего приличного не выходит. Что я не так делаю-то? Эффект "перетренировки" наступает или "кормлю" чем-то не тем?

 
Хорощий вопрос. На текущих тренировочных данных полуить хороший результат не проблема. Можно и на все 90% сапроксимировать. Наука обучения сети очень тонкая, и здесь нужно достаточно глубоко знать матчасть, чтобы учитывать все подводные камни. С тренировкой также. Нужно пробовать, пробовать и ещё раз пробовать. Либо пока не получится, либо пока не надоест.
 

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

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

Имхо задача обучения при должном подходе должна решаться лишь при нормальных входах, т.е. пока на входах малоинформативные данные - отсутствие переобучения не даст хороших результатов.

 
НС в МТ прописали или внешняя, типа NSDT...?
 
DolSergon писал(а) >>
НС в МТ прописали или внешняя, типа NSDT...?

Метатрейдер отдыхает. Java. Генетику сам написал. НС пробовал сначала JOONE, потом отчаялся и перешел на ENCOG.

 
YDzh >>:


"Воспитываю" нейронную сеть (или как ее здесь зовут, перцептрон) на 4.000 барах данных

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

 
lea писал(а) >>

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

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

Имхо задача обучения при должном подходе должна решаться лишь при нормальных входах, т.е. пока на входах малоинформативные данные - отсутствие переобучения не даст хороших результатов.

Ну возможно и неэффективно. Просто я не математик, я из других отраслей :) Для back propagation нужнен идеальный сигнал - а поди его нарисуй для форекса... Есть там всякие идеи, но почему-то мне ни один не нравится... Мне было проще сделать функцию для оценки "поведения" сети. Чего мы ждем от советника: результата в денежном выражении, надежности, низкой просадки и т.п. Все эти данные собираешь вместе и "затачиваешь" таким образом НС, пока не "выжмешь" из генетики весь потенциал. Примерно так.

Эта часть работает - сеть учится. Почему она, зараза, не хочет на новых данных-то... не понимаю

Данные старался нормализовать - в силу своего ограниченного интеллекта, разумеется :)

 
Здесь на форуме уже немало НС обсуждали, может найдете ответы...
 
Reshetov писал(а) >>

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

не понял: 4.000 мало?

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

 
две три тысячи,а какие бары? 30 минут 1 минута? класификация может пройти на меньшем количестве.
 
amicus писал(а) >>
две три тысячи,а какие бары? 30 минут 1 минута? класификация может пройти на меньшем количестве.

4.000 EURUSD15. Альтернативный вариант М5, но чаще обращаюсь к М15... по непонятным самому причинам

Причина обращения: