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

 
TheXpert:
Уже решено и применяется. И даже выложено в этой ветке.

Я писал по материалам выложенным tol64 , другого такого предложения не видал (по невнимательности или отсутствию онного).

Если чёто продублировал, я не против пусть NeuroOpenSource поудаляет.

TheXpert:

длл нельзя

Я ж и говорю ручками переложить, пока так, а там глядишь MQ одумается и сделает специальные методы для специальных случаев :о)
 
Urain:

Если чёто продублировал, я не против пусть NeuroOpenSource поудаляет.

Он не админ :) .

Я ж и говорю ручками переложить, пока так, а там глядишь MQ одумается и сделает специальные методы для специальных случаев :о)

Не надо  пытаться объять не объятное. Лучше поступательно. Сейчас вырисовываются следующие фундаментальные сущности:

__________________________

Сеть (состоящая из слоев, синапсов и буферов).

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

Инициализатор. наверное самая простая сущность :) инициализирует настраиваемые параметры сети.

Менеджер паттернов. Сущность, которая позволяет создавать (генерить) паттерны, загружать и сохранять их, совместима с сетью.

Визуальный менеджер. Сущность позволяющая визуально сконструировать сеть.

Обработчик данных. Сущность для нормализации и анализа паттернов.

_________________________

Ниче не забыл?

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

_________________________

В настоящий момент можно без проблем разрабатывать одновременно Сеть Обучатель Менеджер паттернов и Обработчик данных при минимальных договоренностях о поддержке.

 
TheXpert:

Ниче не забыл?

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

_________________________

В настоящий момент можно без проблем разрабатывать одновременно Сеть Обучатель Менеджер паттернов и Обработчик данных при минимальных договоренностях о поддержке.

Да, вроде бы ничего не забыл - всё есть.

Одно дополнение - желательно, что бы была некоторая совместимость Менеджера паттернов со стандартным мастером генератором советников (может быть придётся допилить и сам мастер). Отсюда - возможность генерить стандартным мастером паттерны для нейродвижка.

 

Предлагаю рассмотреть следующие архитектурные моменты:  

 

1) все внешние (относительно НС) данные готовить в виде индикаторов, что позволит:

- быть независимым от всей системы 

- визуально оценивать "правильность" идеи

- выбирать способ нормализации

 

2) активно смотреть в сторону OpenCL (CUDA, к сожалению, недоступна для счастливых обладателей GPU от AMD)

- 1536 Stream Processors у HD6970 - это вам не 6 Core на CPU 

- в большинстве случаев обучение нейросетей - это SIMD-задача, которая идеально ложится на GPU

- архитектура всего комплекса изначально должна проектироваться с учетом этих требований 

 

3) весь файлооборот между подсистемами (конфигурации, сети,  запросы, ...) вести в XML

- открытый стандарт

- 100500 визуальных редакторов

- уже готовый парсер https://www.mql5.com/ru/code/97

XmlParser
XmlParser
  • голосов: 11
  • 2010.04.12
  • yu-sha
  • www.mql5.com
Простой XML-парсер, который использует стандартную библиотеку msxml.
 
TheXpert:

Сеть (состоящая из слоев, синапсов и буферов).

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

Инициализатор наверное самая простая сущность :) инициализирует настраиваемые параметры сети.

Менеджер паттернов Сущность, которая позволяет создавать (генерить) паттерны, загружать и сохранять их, совместима с сетью.

Визуальный менеджер Сущность позволяющая визуально сконструировать сеть.

Обработчик данных Сущность для нормализации и анализа паттернов.

Менеджер паттернов так понимаю это уже готовые шаблоны различных сетей в формате Инициализатора ? тогда они зависимы

так же Визуальный менеджер зависим от Инициализатора тк ВМ сохраняет созданное через МП в формате Иниц.

Инициализатор зависим от Сети.

Обучатель нужно шить в саму сеть, если он конечно не внешний типа ГА. так что внутренний обучаетль зависим от Сеть

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

В общем имеем пока только два независимых элемента Сеть и Обработчик.

 
Urain:

Менеджер паттернов так понимаю это уже готовые шаблоны различных сетей в формате Инициализатора ? тогда они зависимы

Нет менеджер паттернов это тот, который умеет читать писать паттерны в файл и работать с временным фильтром.

так же Визуальный менеджер зависим от Инициализатора 

Инициализатор всего лишь инициализирует подсунутые ему данные, какие зависимости??

Инициализатор зависим от Сети.

См. выше.

Обучатель нужно шить в саму сеть, если он конечно не внешний типа ГА.

Именно внешний. Я спецом это в скобках написал.

 

  two интерестинг SVM algo: SVM with dynamic time warping as kernell function:  http://notendur.hi.is/steinng/ijcnn08.pdf   incremental SVM learning :  http://www.isn.ucsd.edu/svm/incremental/

 
TheXpert:

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

Менеджер сохраняет/загружает, сохраняет созданное визуализатором, загружает сохранённое, но если инициализатор зависим то через него зависимость передаётся и менеджеру и визуализатору. Вот например ввёл пользователь треботвание что результаты in*wg должны попарно суммироваться а потом перемножаться, а функционал сети этого не поддерживает, значит нужно ввести ограничения в визуализатор а это и есть зависимость.

(in0*wg0+
 in1*wg1)
 *
(in2*wg2+
 in3*wg3)
 
Urain:

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

Блин. Откуда эти фантазии? У меня ощущение, что ты вообще не понимаешь о чем чем речь.

class IInitializer
{
public:
   virtual void Init(double& value) {ASSERT(false);}
   virtual void Init(array& values) {ASSERT(false);}
   virtual void Init(matrix& values) {ASSERT(false);}
};

Где зависимости??

 
TheXpert:

Блин. Откуда эти фантазии? У меня ощущение, что ты вообще не понимаешь о чем чем речь.

Где зависимости??

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

ЗЫ Можно пойти другим путём, написать как есть все блоки, потом при выявлении нестыковок ставить заплатки, потом опять заплатки, в результате когда объём заплаток достигает критичного проанализировать всё и снуля уже все переписать. Немного муторно зато позволяет сразу приступисть к работе и постепенно выявить все невязки.

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