"Новый нейронный" - проект Open Source движка нейронной сети для платформы MetaTrader 5. - страница 23

 
Urain:
Накидывай, разгребём мал помалу.

Еще сильно интересуют Sparse Nets.

И модели связанные с нечеткой логикой -- ура!! вспомнил таки название одной из моделей, вот сцылочка на описание. Модель tsukamoto.

____

Эти в случае успешной реализации наверное станут небольшой бомбочкой.

 
Чё то я не вкурил, чем SVN = Support Vector Machine принципиально отличается от MLP ?
 

TheXpert:

... 


Для этого продукт должен быть уровня нейропакетов типа NSDT, ниасилим. 

...

Очень жаль.)) Именно это программа на данный момент максимальным образом подходит для пользователей любого уровня. Первая в рейтинге лучших аналитических программ в журнале Stocks & Commodities в течении 9-ти лет по опросам трейдеров. Но для ОпенСоурс это слишком круто. ))

Renat 2011.10.18 00:45 #

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

Код будет представлен в исходниках на MQL5 и распространяться в составе терминала. 

Я думаю, что если это будет код, то любой трейдер уже не сможет им воспользоваться. Любой трейдер-программист, да. Для любого трейдера подошёл бы вариант включать нейросеть в торговую систему через мастер MQL5, но тогда предполагаю, что мастер нужно существенно модифицировать. 

Ветку читаю и теперь по крайней мере уже начинаю представлять, как всё непросто.)) 

Мастер MQL5: Создание эксперта без программирования
Мастер MQL5: Создание эксперта без программирования
  • 2010.12.15
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы хотите быстро проверить торговую идею, не тратя времени на программирование? Выберите в "Мастере MQL5" нужный тип торговых сигналов, подключите модули сопровождения позиций и управления капиталом - на этом вся работа закончена. Создайте свои реализации модулей или закажите их через сервис "Работа" - и комбинируйте новые модули с уже существующими.
 

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

Пусть будет публичный, кто хочет участвует. Завести темы касающиеся отдельных аспектов системы и админы веток по мере обсуждения выносили бы итоговые решения в первый пост. При необходимости, устраивали бы публичное голосование в отдельных ветках и тд.

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

 

Для тех кому интересно, попробую в нескольких коротких постах-лекциях объяснить почему я считаю нейронные сети, основанные на биологических методах преобразования информации и использующие принцип разряжённости (sparsity), очень перспективными.

Лекция 1. Биологические основы разряжённости в нейронных сетях.

Развивающийся мозг ребёнка проходит через стадию создания большого количества синапсов (связей между нейронами), за которой следует стадия удаления почти половины связей к подростковому возрасту. Многие учёные спекулируют что это удаление синапсов необходимо для уменьшения энергии потребляемой мозгом в силу замедляющегося метаболизма и гармональных изменений. Благодаря большому количеству синапсов, мозг ребёнка способен запоминать много информации, что объясняет почему иностранные языки легче прививаются до посросткового возраста. Удаление половины связей к подростковому возрасту помогает мозгу лучше обобощать информацию. Механизм удаления половины связей в развивающимся мозге подростка пока неизвестен. Многие полагают что метаболические изменения уменьшают количество биогенов (питательных веществ) нобходимых для поддeржания синапсов. Ограниченное количество этих веществ вызывают конкуренцию между входными связями нейрона за своё существование. Эта конкуренция моделируется методами обучения весов с конкуренцией (Competitive Learning), в которых либо сумма абсолютных значений входных весов нейрона, либо сумма их квадратов поддерживается постоянной. Эти методы используются в само-обучающихся сетях. В сетях обучаемых с учителем (например, сетях прямого распространения), конкуренция между входными весами нейрона обычно не учитывается. В таких сетях, связи между нейронами удаляются после того как их веса были обучены. Удаляются либо наименьшие веса, либо веса слабо влияющие на среднюю ошибку обучения.

Ссылки:

https://en.wikipedia.org/wiki/Synaptic_pruning 

Huttenlocher, P. R. (1979).
Synaptic density in human frontal cortex - developmental changes and effects of age.
Brain Res., 163, 195--205. 

Braitenberg, V., Schuz, A. (1998).
Cortex: Statistics and geometry of neuronal connectivity.
Berlin: Springer.

LeCun, Y., Denker, J. S., Solla, S. A., Howard, R. E., Jackel, L. D. (1990).
Optimal brain damage.
In Touretzky, D. S. (Eds), Advances in Neural Information Processing Systems 2, NIPS*89, Morgan Kaufmann, Denver, CO, 598--605. 

Hassibi, B., Stork, D. G., Wolff, G. J. (1993).
Optimal brain surgeon and general network pruning.
Proc. IEEE Int. Conf. Neural. Networks, 1, 293--299. 

Miller, K D., & MacKay, D. J. C. (1994).
The role of constraints in Hebbian learning.
Neural Computat., 6, 100--126.

Miller, K. D. (1996).
Synaptic economics: Competition and cooperation in synaptic plasticity.
Neuron, 17, 371--374. 

Synaptic pruning - Wikipedia, the free encyclopedia
Synaptic pruning - Wikipedia, the free encyclopedia
  • en.wikipedia.org
In neuroscience, synaptic pruning, neuronal pruning or axon pruning refer to neurological regulatory processes, which facilitate changes in neural structure by reducing the overall number of neurons and synapses, leaving more efficient synaptic configurations. Pruning is a process that is a general feature of mammalian neurological development...
 
Mischek:
Ещё имхо. Вряд ли вы найдете специалиста-консультанта со стороны .отвечающего вашим требованиям. В лучшем случае вы погрязнете в переговорах со специалистами вашего уровня , но пытающихся продать свои знания завышая их уровень до востребованного вами на этапе переговоров.Если есть бюджет , не важно какой, эффективнее его разделить между вами в конце проекта, либо поровну либо не поровну на основании субьективной оценки метаквот . 

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

sergeev:

Можно сделать еще проще.

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

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


Скорей всего это самый правильный подход.
 

tol64:

Я думаю, что если это будет код, то любой трейдер уже не сможет им воспользоваться. Любой трейдер-программист, да. Для любого трейдера подошёл бы вариант включать нейросеть в торговую систему через мастер MQL5, но тогда предполагаю, что мастер нужно существенно модифицировать. 

Ветку читаю и теперь по крайней мере уже начинаю представлять, как всё непросто.)) 

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

2. На втором этапе нужно уже более детально и глубоко прописать функционал библиотеки (определиться с типами сетей, методами обучения, вариантами топологии и прочим).

3. На третем шаге нужно как мне кажется нужно определиться с тем что конкретно будет подаваться на вход и как обучаться.

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

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

Результат работы мастера по идеи должен (по крайней мере мне это видится вполне хорошей мыслю) представлять собой шаблон, который можно будет использовать как самостоятельный модуль либо использовать при разработке шаблона эксперта в уже имеющемся ВИЗАРДЕ.

5. Если речь идет о том чтобы использовать нейросеть при создании шаблона эксперта Визардом, то там нужно будет предусмотреть форму в которой будет возможнось добавить нейросеть (может быть и не одну).

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

PS

Хорошо бы еще при таком походе определить "важность" всей нейросети, отдельного слоя (или части слоя), и отдельного нейрона.

 
gpwr:
Во-во. Примерно на это я и хотел тебя раскрутить :) . Продолжай в том же духе.
 
Vigor:

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

Для складирования есть вот логинчег.
 

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

Чисто технически это может выглядеть так: для входных нейронов  есть виртуальная функция EnterData, возращаюшая double. Захотел на вход какие-то индикаторы подать или что угодно - написал всё в этой функции.

Тоже самое для выходного нейрона функция ExitData, которая вычисляет что прогнозируется.

Например, хочется прогнозировать изменение цены за 5 баров: переопределил функцию 

double   ExitData(){

return(Open[-5]-Open[0]) ;

или хочется прогнозировать волатильность 

double   ExitData(){

return(High[iHighest(...,5,-5)]-Low[iLowest(....,5,-5)]) ;

и т.д. 

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

т.е.

Net.StartTime=2005год  

Net.FinishTime=2008год    

Net.StartOutOfSamples=2009год       

Net.FinishOutOfSamples=2011год          

Net.Teach; 

Net.OutOfSamples;   

if (Net.PFOutOfSamples>3) Print("Хорошо");

Или если сеть не торгует сама по себе,  а к примеру прогнозирует волатильность, то юзер сам переопределяет функцию оценки качества работы сети на аут оф самплес.

Тогда штатными средствами тестера и оптимизации можно реализовать поиск лучшей топологии или выбор типа сети и многое другое 

 

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