Нейросети.

Тема в разделе "Нейросети", создана пользователем лёксус, 2 авг 2009.

  1. SINtez

    SINtez Новичок

    Пока не могу проверить. Но обязательно проверю позже, когда будет позволять время.
     
  2. yu-sha

    yu-sha Активный пользователь

    Все-таки тема, которой касался Лёксус
    должна прорабатываться более подробно, т.к. все эти цифры (r,R,...) следует трактовать в рамках задач, которые ставят перед нейросетями

    Для начала приведу пару примеров:

    1) Нейросети ставится задача "предсказать пробьет ли цена экстремум после образования дивергенции МАКД или же она сделает разворот и пойдет в откат"
    Вопрос некорректный, т.к. надо уточнять соотношение тэйкпрофита к стоплоссу
    Если такое соотношение 3:1, то мне будет достаточно, чтобы нейрость угадывала 40-50% входов

    2) Ставим задачу "пройдет ли курс 62% после пробития вершины зигзага или опустится ниже предпоследней вершины?"
    Т.о. соотношение профита к лоссу уже 0.62 к 1.00
    И в данном случае процент угадывания должен быть не ниже 80%, чтобы можно было на базе этой стратегии что-то строить

    P.S. Подобные задачи решаются с помощью Советников МТ4, я их привел лишь в качестве примера
    Вопрос к любителям нейросетей: какие вопросы вы ставите перед нейросетями?
    Буду благодарен за конкретные примеры

    icq:51543037
     
  3. SINtez

    SINtez Новичок

    Максимальная прибыль за минимальное время и с минимальной просадкой. :tatice_06:
    А вот как этого добиться, тут можно пообсуждать. ^drink

    Я не зря спрашивал:
    Пока не готов сделать конкретных примеров, ибо не готов механизм ни для прогноза ни для торговли.
    Сейчас все на уровне перебора, причем всего подряд.
     
  4. SINtez

    SINtez Новичок

    Несколько вопросов:
    1.Как часто переобучать сеть? Со временем прогноз начинает "плыть". Какой критерий для начала переобучения?
    2.Отсюда сразу вопрос,какой софт позволяет задать этот самый критерий и уже автоматически переобучиться и продолжить тестирование? Т.е. например после обучения сети на отрезке А начинаю подставлять новые(неизвестные) данные на выходе получаю прогноз,..поначалу результатом прогноза доволен,потом он начинает смещаться в худшую сторону...тут же должно идти переобучение уже на отрезке Б...и тестирование продолжается так же дальше...и так до конца выбоки по тесту. В Matlab`е могу написать подобное,но займет это дело для меня достаточно много времени.Есть ли(имеется опыт?)софт,который позволяет это реализовать?
    3.Кто проводил тест по использованию комитетов сетей,есть ли результаты...любопытно взглянуть.
     
  5. SINtez

    SINtez Новичок

    Решил написать по нескольким пунктам,которые мне показались интересны.
    Я тоже не претендую. Поднял результаты старых тестов. EURUSD 1H c 1.09.99-по 27.02.09
    Покупка 13.00 переворот в 8.00 (GMT+1) время MetaTrader`a. стопов нет, профитов тоже, без спреда фиксированным лотом. 1 п-1$. Начальный депозит 1 000 конечный 22 299. (без учета дня недели,минут,предыдущего дня(рост / падение) и кучи всего остального.
    1.png

    Зависимость есть,большая работа проведена на сайте у Игоря (KimIV) + на пауке есть информация.

    Идем дальше.

    Тут тоже не понятно как сеть,которая обучалась 20 часов, не смогла на EURUSD D1 найти простую закономерность?

    EURUSD D1 c 1.09.99-по 09.02.09
    Если вчера был рост(белая свеча) на открытии продаем. Если падение на открытии покупаем.

    2.png

    <b><u>Вопрос с выбором софта до сих пор открыт, буду благодарен за помощь.</u></b> :bs:

    Алексей, заинтересовала вот эта картинка.

    3.png
    Получается в НШ2 есть такая возможность с переобучением и продолжением теста?

    Неоднократно поднимался вопрос о том имеет ли ценность сеть, которая выдает меньше 80% правильных прогнозов.

    Тут я полностью согласен с Алексеем(yu-sha), многочисленные тесты просто "модели" на коленке, позволяют эксплуатировать сеть, которая выдает 65% правильных(нужных для торговли) сигналов(данных). Для затравки вот так выглядит модель дающая 70% верных выходных данных.

    4.png

    лот фиксированный, отключил реинвестирование чтобы плохо не стало никому ^edkk^ ^tease^
    евра 4H, стопов нет,профитов нет. с февраля - по текущий момент.

    Это просто модель!!! Не обученная сеть,не тренировка,не oos, просто модель.
    П.С. может Вы не те "модели" строите? :blink:
     
  6. лёксус

    лёксус Активный пользователь

    Да, есть. А ещё, если подходить к НШ2 творчески, то можно себе устроить доп. возможности. В частности, я, помнится, готовил входной файл для обучения сетки обычный и идеальный. В НШ2 подавал обычный. Создавал сеть. А потом, после разбивки, файл, содержащий обучающую выборку, заменял идеальным. Единственное, расширение файла приходилось переименовывать, т.е. немножко ручной работы. Такая "комбинаторика" позволяла обучать сеть "истинным" сигналам, а не тем, которые случайным образом НШ2 выделил из общего набора входной инфы.
     
  7. лёксус

    лёксус Активный пользователь

    Насчет моих 80% ya-sha сделал правильное замечание. Все зависит от конкретной задачи, или поставленного (к сети) вопроса. Я экспериментировал с возможностью предсказания цвета будущей свечи на часовке. И оказалось, что среди прочих принципов применения нейросетей, такая задача имеет самый "жесткий характер". И приемлемый результат вообще достигается только при вероятностях, максимально близких к 100%. И то прогноз хромает.
     
  8. yu-sha

    yu-sha Активный пользователь

    Относительно вопроса о случайных котировках
    Вот скрин валютной пары EUR-UDD )))
    Котировки сгенерированы в MQL4 с помощью функции Random, т.е. случайное приращение
    Количество тиков баре брал у еврадоллара
    Вот что вышло
    eurudd60.gif
    Набросил несколько индикаторов и начал смотреть, вижу ли я что-нибудь?
    Да, все есть - отбой от мувингов, дивера, фибы ...
    Вот и задумался, а не матрица ли это?)))))))))))))
    Скрипт для генерации и/или сам файл .hst могу выложить, если кому-то нужно
     
  9. лёксус

    лёксус Активный пользователь

    Скрипт взглянуть интересно.
     
  10. yu-sha

    yu-sha Активный пользователь

    Пожалуйста )
    <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->int start() {
    &nbsp;&nbsp;int HistoryHandle = FileOpenHistory("EURUDD60.hst", FILE_BIN | FILE_WRITE );
    &nbsp;&nbsp;if(HistoryHandle < 0) return(-1);
    &nbsp;&nbsp;int temp[13];

    &nbsp;&nbsp;FileWriteInteger(HistoryHandle, 400, LONG_VALUE);
    &nbsp;&nbsp;FileWriteString(HistoryHandle, "Copyright © 2009, student", 64);
    &nbsp;&nbsp;FileWriteString(HistoryHandle, "EURUDD", 12);
    &nbsp;&nbsp;FileWriteInteger(HistoryHandle, PERIOD_H1, LONG_VALUE);
    &nbsp;&nbsp;FileWriteInteger(HistoryHandle, 5, LONG_VALUE);
    &nbsp;&nbsp;FileWriteInteger(HistoryHandle, 0, LONG_VALUE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //timesign
    &nbsp;&nbsp;FileWriteInteger(HistoryHandle, 0, LONG_VALUE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //last_sync
    &nbsp;&nbsp;FileWriteArray(HistoryHandle, temp, 0, 13);

    &nbsp;&nbsp;int i;
    &nbsp;&nbsp;double p;
    &nbsp;&nbsp;i=iBarShift("EURUSD",PERIOD_H1,D'2008-01-01')-1;
    &nbsp;&nbsp;p=iOpen("EURUSD",PERIOD_H1,i);
    &nbsp;&nbsp;while (i>0) {
    &nbsp;&nbsp;&nbsp;&nbsp;int V=iVolume("EURUSD",PERIOD_H1,i);
    &nbsp;&nbsp;&nbsp;&nbsp;int t=V;
    &nbsp;&nbsp;&nbsp;&nbsp;double O=0,H=0,L=0,C=0;
    &nbsp;&nbsp;&nbsp;&nbsp;while (t>0) {
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (MathRand()-32768/2>0) p=p+0.00007; else p=p-0.00007;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (O==0) O=p;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (H==0 || p>H) H=p;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (L==0 || p<L) L=p;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (t==1) C=p;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t--;
    &nbsp;&nbsp;&nbsp;&nbsp;}
    &nbsp;&nbsp;&nbsp;&nbsp;FileWriteInteger(HistoryHandle, iTime("EURUSD",PERIOD_H1,i), LONG_VALUE);
    &nbsp;&nbsp;&nbsp;&nbsp;FileWriteDouble(HistoryHandle, NormalizeDouble(O,5), DOUBLE_VALUE);
    &nbsp;&nbsp;&nbsp;&nbsp;FileWriteDouble(HistoryHandle, NormalizeDouble(L,5), DOUBLE_VALUE);
    &nbsp;&nbsp;&nbsp;&nbsp;FileWriteDouble(HistoryHandle, NormalizeDouble(H,5), DOUBLE_VALUE);
    &nbsp;&nbsp;&nbsp;&nbsp;FileWriteDouble(HistoryHandle, NormalizeDouble(C,5), DOUBLE_VALUE);
    &nbsp;&nbsp;&nbsp;&nbsp;FileWriteDouble(HistoryHandle, NormalizeDouble(V,5), DOUBLE_VALUE);
    &nbsp;&nbsp;&nbsp;&nbsp;i--;
    &nbsp;&nbsp;}
    &nbsp;&nbsp;FileClose(HistoryHandle);
    &nbsp;&nbsp;return(0);
    }<!--c2--></div><!--ec2-->

    Чтобы открыть .hst файл в терминале МТ4, выполните Файл/Открыть автономно
     
  11. лёксус

    лёксус Активный пользователь

    Понятно. Благодарю.
    Да, вот так нам и подают "котировки" в МТ. =)
     
  12. лёксус

    лёксус Активный пользователь

  13. лёксус

    лёксус Активный пользователь

    <b>ya-sha и SINTez у меня к вам предложение.</b>

    Я сегодня состряпал очень легонького советничка. Торгует стохастиком. Прогнал в тестере МТ. Параметры советника не подгонялись, не оптимизировались, использовались "как есть". Результаты, правда, получились для меня неожиданными. Я расчитывал на медленный слив, а получилось нечто непонятное. Т.е. советник в результате зарабатывает. Но себе на счет я такого советника всё равно бы никогда не поставил. Одним лотом в 2008 году советник заработал 15 штук, но при этом просел с 20 штук до 7 в середине года, выполз только в конце года. В 2009 году он заработал 42 штуки. Но, хоть и не приседал особо, но заработал максимум к июлю месяцу, а потом чуток слил. Т.е. советник в обоих случаях прибыльно работал только половину года. В 2008 первую половину года сливал, вторую зарабатывал. В 2009 году первую половину года зарабатывал, вторую половину года сливал.

    График баланса 2008 год
    Stoh_2008.gif

    График баланса 2009 год
    Stoh_2009.gif

    В советник я вставил запись некоторой инфы в екселевкий файл. Это тип сделки, дата-время входа в рынок, профит-дата-время закрытой сделки, максимально достигнутый профит за время жизни открытой позиции и время, когда этот максимальный профит случился. Т.е. достаточный объем статистики, чтобы сделать вывод о факте и потенциале торговой системы. Далее в этом екселевском файле я построил три колонки нарастающим итогом: профит, профит, исключая убыточные сделки и максимальный профит. Как можно догадаться, результаты отличаются катастрофически.

    Вот этот файл (для примера выкладываю только баи, в селах тоже самое)
    Посмотреть вложение Buy_Stoh_2008.xls

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

    Думаю, можно попробовать сделать три сетки. Одна обучена всем входам (возможно, она автоматом отсортирует часть убыточных). Вторая обучается прибыльным входам и убыточным - не входить. Третья обучается выходить из рынка.

    <b>Возьметесь попробовать?</b>

    Вывод инфы из советника в файл могу сделать полностью пригодным для загрузки в НШ2. Кроме этого могу в советник добавить ещё кучку индюков, не для торговли, а просто чтобы вывести их значения в этот же файл.

    <b>Если ваш ответ будет положительным, выложу здесь и советника.</b>
     
  14. SINtez

    SINtez Новичок

    Привет Алексей.
    Конечно возьмусь попробовать :ab:
    Помнишь говорил про пример работы с НШ?Не искал ссылку?

    Опиши тест со стохом плиз.. условия на вход/выход какие? Пока не нужно.
     
    1 человеку нравится это.
  15. лёксус

    лёксус Активный пользователь

    Пока отписал тебе в личку. Посмотри, всё понятно? Или есть вопросы?

    Ссылку на пример работы в НШ2 не нашел. Сделаю свой пример на днях. Только вот, к сожалению, с временем полный цейтнот. Если бы было в сутках часов 50, то тогда мне времени бы на всё хватало. =(
     
  16. yu-sha

    yu-sha Активный пользователь

    Было бы в сутках 24 часа, а в выходные по 100 часов, я бы взялся
    Рынок ходит, а я пишу ^aggressive^
    От возможностей нейросеток в легком приятном шоке, плавно переходящем в эйфорию
    Но есть одно НО - уже не устраивает ручной режим работы с НейроШеллом2
    Нужен автомат, ибо гонять одну сетку не есть гуд - нет контроля промежуточных результатов
    Нужно получить мега-сеть из множества отдельных подсетей, каждая из которых выдает логически понятный выход
    Тюнинговать уже не весь черный ящик, а отдельные подсети

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

    Самому лезть в написание классов Нейро под МТ5 опасно, ибо не математик я в том объеме, чтобы полностью контролировать процессы обучения и оценки ошибки

    Пока на распутье... налево пойдешь-время потеряешь, направо-депозит, прямо пойдешь-останешься в 0
     
  17. SINtez

    SINtez Новичок

    Вот те здрасьте :be:
    Вроде НШ как раз позволяет это проделать? или нет уже?

    Только что поставил НШ, Алексей обещал подготовить небольшой мануал по работе с ней. Жду, пока ничего не могу сказать.

    Vyacheslav писал:

    одношаговое возможно не получится применить (при практической торговле) ибо при получении новой price сеть должна перетренировываться (а надо ли?) а это занимает время. Поэтому тут минимум (наверно) на 2 шага.


     
  18. SINtez

    SINtez Новичок

    Видимо настало время для этой ссылки.
    Надеюсь будет интересна:

    Не могу на форум basegroup зайти, посему выкладываю текс с паука.

    Разбираясь с нейронными сетями и TS набрел на сайт
    <span class='inv'><![CDATA[<noindex>]]></span><a href="http://www.onix-trade.net/forum/go.php?http://forum.basegroup.ru/" rel="nofollow" target="_blank">http://forum.basegroup.ru/</a><span class='inv'><![CDATA[</noindex>]]></span> где идет очень интересная полемика по поводу нейронных сетей.
    Вообще-то весь этот сайт посвещен НС. Выкладываю данную инфу чисто для информации, нейтрально.
    Оказывается есть такие алгоритмы, как я понял, которые на малых выборках могут давать предсказания в автоматическом режиме без кросс валидациии и " формируют probabilistic outputs, т.е., помимо собственно прогноза, сообщают насколько он точен".
    Приведу несколько выдержек из обсуждений; тема НЕЙРОСЕТИ ДАВНО МЕРТВЫ

    Jericho
    Нейросети? Забудьте о них, это даже не вчерашний, это позапозавчерашний день, когда компьютеры были очень медленными. Классические нейросети сейчас - это достояние истории. Антиквариат, а не инструмент. Памятник.
    Пережевывание нейросетей в рунете - издевательство и дезинформация, все равно что на уроках информатики учить пользоваться счетами.
    Сам убил на это много времени. Это все давно мертво. Очень давно.
    Идите сразу на
    www.kernel-machines.org
    www.gaussianprocess.org
    www.boosting.org
    Смотрите архивы конференций NIPS (books.nips.cc), ICML, ситайте JMLR (jmlr.csail.mit.edu).
    И ройтесь на citeseer.ist.psu.edu (а не на basegroup)
    -------------------------------------------------------------------------------------------------------------------------------
    SVM? Ну что ж, в отличие от нейросетей это только вчерашний день.

    Эффективность классических нейросетей? Вся basegroup будет месяц тюнить параметры, часами тренировать эти сети, и все равно не добъется тех результатов, которые state of the art алгоритмы получат за минуты и полностью автоматически, без каких-либо user-defined значений.
    Large-scale - это и есть предмет современных исследований. С небольшими выборками проблем нет никаких.
    Я уверен, что в basegroup прекрасно все знают. И делают деньги.
    Дать другим порезвится? Т.е. дать им возможность считать, что эта представленная здесь инфа середины 80-х и есть state-of-art ? Дать им возможность потратить недели и месяцы пытаясь выжать из этих алгоритмов какую-то пользу для себя? Чтобы потом (если не забросят все нафиг) обнаружить, что они занимались фигней? Что все, чему они так долго внимали, все эти уродские эвристики... Что давно есть теории, которые предлагают оптимальные решения, а не попытки их угадать.
    Они могут "резвится", но пусть при этом знают, что это не больше чем умственный entertainment, вроде лего или сборки пластмассовой модели самолета, и не имеет отношения к получению каких-либо конкуретноспособных результатов.
    Я считаю, что если анахронизмы выдаются за решения, подделка выдается за вещь, то это намеренный обман с целью получения личной выгоды.

    ----------------------------------------------------------------------------------------------------------------------------
    Я говорю не только о сайте, я говорю вообще об информации в рунете. Такой уровень - это издевательство над людьми. Это надо постараться так игнорировать нормальные методы и упрямо описывать всякий сюрреализм. Более 10 лет назад писались туториалы для отставших недотеп по расчетам линейных моделей, что LOOCV считается аналитически и вычислительно дешево, о регуляризации и forward selection, об ортогонализации. Где это в рунете, где? (хотя может уже где-то есть) Ведь все это просто, и уделает BP со всеми его моментами как по качеству, так и по скорости. Вон, Chen et al до сих пор на все лады клепают статьи на тему basis pursuit, и получают отличные результаты. И это без каких-либо сложных теорий, умей только матрицы вертеть.
    -------------------------------------------------------------------------------------------------------------------------------
    Жива идея, что если некая известная нам функция хорошо совпадает с частью данных, другая часть данных будет хорошо совпадать с функцией. Или, по вашему, в сигмоидальных ф-иях и названии "нейросети" скрыта какая-то особенная магия? Нейросети - это только красивое название. Скажу вам как человек занимающийся именно нервной передачей - сходства между свойствами "нейросетей" и свойствами реальных синаптических контактов - ноль без
    палочки. И как бы красиво это не рисовали на картинках, это просто игра понятиями. Кстати, это пример, как на ровном месте в сознание людей внедряются совершенно надуманные убеждения. Реклама, гипноз - это все из этой же оперы. Люди постоянно гипнотизируют себя и друг друга, сама природа языка гипнотична. Язык позволяет сказать о том, чего нет точно также, как о том, что есть. А если вы представите то, чего нет, то вы это УЖЕ увидели, а значит для вас это уже есть. И, как говорил один классик, чтобы понять что собака НЕ гонится за кошкой, надо сначала представить, как собака за ней гонится.
    Есть оптимизируемые параметры некоей ф-ии, есть cost-function, и есть метод оптимизации. Все это вместе формирует метод machine learning. Если для вас нейросеть - это функция в виде MLP, и не важно как считаются параметры, и какая именно cost function оптимизируется, то вы несколько в плену вами же выдуманного восприятия мира. Вот минимизируем мы MSE, мы можем минимизировать ее подбирая параметры MLP, или RBF-сети, или полинома. По вашему, здесь принципиальная разница? Или можно оптимизировать MLP с 10 нейронами, а можно с 20-ю. А теперь разница кажется вам невелика? Но и в том, и в другом случае, финально, минимизируются разные ф-ии, понимаете - РАЗНЫЕ. Если вы все, что можно изобразить как MLP будете звать нейросетью, а, мол, различаются только способы обучения, то вы начинаете изменять свое восприятие мира, чтобы результат соответствовал вашим ожиданиям.
    Пусть у нас есть MLP и не-MLP, и способы тренировки А и Б. Предположим в тестах MLP и не-MLP тренируемые способом А дают стабильно примерно одинаково высокие результаты, а MLP и не-MLP тренируемые способом Б - стабильно примерно одинаково низкие. И что же тогда будут понимать под методом? MLP/неMLP или А/Б ? Огрубленно - это настоящая ситуация. Разница состоит именно в принципах алгоритмов "тренировки", которым однохренно, параметры MLP они тюнят, RBF сети, полинома или просто линейной комбинации входов.
    сможет выучить часть шума. Но шум-то случаен, и в тестовой выборке он может пойти в другую сторону, и вместо ошибки dE0 накладываемой шумом, вы получите ошибку dE1 от того, что выучили шум в обучающей выборке, плюс dE0 от того, что есть шум в тестовой. Теперь второй вариант, что у первого MLP нейронов оказалось больше. Что это значит? Что вы своим MLP никогда не получите удовлетворительных результатов, он просто будет не в состоянии представить зависимость сгенерированную более сложным MLP, чем он.
    Хорошо, теперь вы делите обучающую последовательность на обучающую и тестовую, и подбираете такое кол-во нейронов, чтобы обучившись на обучающей выборке, ваш MLP давал минимальную ошибку на тестовой. Т.е. меньше нейронов - на тестовой ошибка увеличивается, андерфит. Больше нейронов, тоже увеличивается, оверфит - шум на тестовой и на обучающей разный. Значит, вы нашли нужное кол-во нейронов. Это называется кросс-валидация. ОК. Но, вот вы добавляете нейрон в скрытый слой, и, соответственно, увеличиваете кол-во параметров - веса между входами и этим нейроном, и веса между ним и выходом. А теперь - трап: пусть в первом MLP части этих весов НЕ БЫЛО. Т.е. вы, добавляя нейрон, автоматически добавляете все веса, а у того MLP части из них НЕТ. Это значит, что вы уже добавили лишние параметры, и уже заложили основу для оверфита. Не будете же вы перебирать все возможные конфигурации MLP? И когда вы закончите свой валидационный марафон, у вас будет часть параметров лишняя, а части нужных параметров не будет вовсе, и лишние будут в меру своих возможностей компенсировать недостающие, но этого у них очень уж хорошо не выйдет, и ваша модель будет страдать от андерфита и оверфита ОДНОВРЕМЕННО. И это значит, что даже если выборки генерируются таким MLP, ваш MLP уже никогда не будет в состоянии правильно их предсказывать, а только приблизительно. ОК - вам-то точно и не надо, вам достаточно этого "приблизительно", и вы пока вполне удовлетворены.
    Но теперь вы тратите время на кросс валидацию, тогда как скажем линейные модели вычиляют LOOCV (это когда тренировка на всех точках выборки, кроме первой, тест, потом на всех (вместе с первой) но кроме второй, тест, и т.д.), притом аналитически и одной формулкой, а вам на больших выборках LOOCV вообще малодоступна за разумное время; а скажем байесовым моделям кросс-валидация и вовсе не нужна, или они опять же могут ее высчитывать прямо в процессе тренинга. Что позволяет, им, кроме всего прочего, иметь большой избыток оптимизируемых параметров. И пока вы боретесь за нахождение оптимального их кол-ва страдая одновременно и от андерфита, и от оверфита, они могут взять их побольше, с запасом (конечно, здесь уже неслабые требования к вычислительным ресурсам, но прогресс ПК обуславливает и прогресс вычислительных методов). Т.о. имея значительно бОльшую гибкость в аппроксимации данных, они тем не менее мало подвержены оверфиту. Вдобавок, и те и те определяют необходимое кол-во параметров и их значения автоматически, в процессе единой процедуры, у вас же ситуация с постоянным ретренингом.
    Кроме того, байесовые модели формируют probabilistic outputs, т.е., помимо собственно прогноза, сообщают насколько он точен. А у вас есть только прогноз, и насколько ему верить вы не знаете. Даже если при данном входе был дикий разброс выходов на обучающей выборке, ваш MLP даст вам "точный" ответ.
    Но штука в том, что, как вы и сами прекрасно понимаете, данные, которые должна учить ваша сеть сгенерированы вообще не MLP, и совершенно не обязаны быть хорошо описываемыми вашей конфигурацией MLP:
    Каждый параметр вашего MLP имеет глобальное влияние на всю область знчений вашей функции (MLP ведь это просто сложная ф-ия с кучей параметров, которые вы оптимизируете). И если в исходных данных в одном локальном месте сложная структура, а вокруг очень простая и ровная повержность (константный ответ), то чтобы описать эту локальную сложную структуру, вам потребуется куча параметров, которые будут фигарить на всю область значений, и ровную поверхность вам не получить никогда - она будет вся волнами разной величины. И если вам попадет на прогноз точка отстоящая от точек в обучающей выборке, то вам опять будет выдан четкий ответ, т.к. ваша функция имеет ненулевой выход везде, но вдалеке от точек обучающей выборки будет просто случайный хаос, а не прогноз. Вот почему были так популярны RBF сети, а ныне de-facto во всех статьях приводят бенчмарки с гауссовым кернелом, и вот почему толком ничего не слышно об Ивахненко и его GMDH, хотя историю этот метод ведет с середины прошлого века. Потому что RBF формирует локальный ответ, и чем дальше вход отстоит от обучающих точек, тем меньше они на него влияют, и наибольшее влияние оказывают наиближайшие обучающие точки. Очевидная идея, которая, например, юзалась для k-Nearest Neighbours и других Instance Based Learning алгоритмов. И хотя в начале 90-х и была мода тренировать байесовыми методами именно MLP, после "по умолчанию" использовали гауссиан.
     
    1 человеку нравится это.
  19. лёксус

    лёксус Активный пользователь

    Круто. Разумеется, вычислительный прогресс на месте стоять не будет. Но ещё долго не отменится принцип "сколько людей, столько и мнений". Например, мне мой знакомый однозначно доказал, что Statistica рулит, а нейро - баловство. Другой чел (знакомый моего знакомого)полтора года назад купил (по непроверенным данным) за 28 штук зелени нейро-софт, который работает, как "распознаватель" образов - ландшафта, строений и всякого рода техники - в крылатых ракетах. Приспособил этот софт к анализу временнЫх рядов и на текущий момент (с его слов) он долларовый миллионер.
     
  20. yu-sha

    yu-sha Активный пользователь

    Серьезный намек ))
    Лучшее - враг хорошего. Надо познать архаизмы(или атавизмы?) 90-ых, предел их возможностей, чтобы в полной мере восхититься новшествами 2000-ых.
    Атомная бомба, разработанная в 50-ых, все так же остается оружием в 2000-ых
    Советские ракетоносители, разработанные в 60-70ых до сих пор успешно (по сравнению с американцами) выводят грузы на орбиты

    Ковыряю "Fast Artificial Neural Network – FANN 2.1" - все очень просто, есть исходники!
    Так сказать - учу матчасть ))
     

Поделиться этой страницей