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

 
TheXpert:

Тогда почему у тебя маска привязана к выходу, а не опять же к нейронам )

А как ты функцию активации хочешь в ГПУ запихать?

Имхо, ты как и в прошлый раз впихуешь невпихуемое. Но это имхо, так что смело можешь на него ложить.

Больше беспокоить не буду, разве что по делу.

А, когнитрон. Что еще -- сеть хопфилда -- там вход это выход. Еще есть sparse...

Отвечаю снизу вверх,

входы и тут есть выходы

ГПУ легко реализуемо тк весь процессинг параллельный.

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

маска, веса, выходы, временные данные всё связано поячеечно, хотя можно отвязать через массив индексов который можно создать из маски.

Вообще маска создаёт топологию, и она хранится вместе с весами.


Сам проект видится так:

  • Стандарт хранения сети XML (загрузка/сохранение), хотя я тяготею к бинарному хранению(но не принципиально, народ хочет XML для наглядности)
  • Графическая интерфейс создания новой сети (создание/сохранение)
  • Программный интерфейс создания сети (создание/загрузка)
  • Модель универсальной сети (базовая)
  • Классы расширяющие базовые возможности модели сети
  • Оболочка тренинга (расширяемая)

Последние два пункта на откуп опенсорсе.

 

По поводу разреженных матриц верно заметил, если матрица разрежена то модель сильно не эффективна, но тут можно применить массив индексов, будет работать чуть медленнее чем при прямой реализации но всё же на уровне, а для ГПУ нет разницы разреженная ли полносвязная вся равно мух складывать.

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

ЗЫ вроде ничего не пропустил?

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

 
Urain:

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

Подтверждаю:  это наименьшая проблема из обозначенных.

По поводу разреженности.

Я так понимаю, на уровне описания сети - это нормально и даже весьма удобно.

Просто нужна сжималка:  "упаковщик" в компактное описание, которое, в свою очередь, уже и является "пищей" для последующей компиляции в исходник на mql и/или OpenCL.

// Ну или для конфигуратора динамической "универсальной сетки", если у неё ещё остались сторонники...

 

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

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

Для ГПУ всё же лучше оригинальная модель (имхо).

 
TheXpert:

Тогда почему у тебя маска привязана к выходу, а не опять же к нейронам )

А как ты функцию активации хочешь в ГПУ запихать?

Имхо, ты как и в прошлый раз впихуешь невпихуемое. Но это имхо, так что смело можешь на него ложить.

Больше беспокоить не буду, разве что по делу.

А, когнитрон. Что еще -- сеть хопфилда -- там вход это выход. Еще есть sparse...

Sparse coding - классная штука! Я тут пол года назад поковырялся с ним по предмету отыскивания паттернов на рынке. Отыскивает. И вроде бы обобщает. Но как оказалось по моим экспериментам, прошлые ценовые паттерны не повторяются в будущем. Применил этот метод для отыскивания паттернов в изображебиях и звуках. Получилось довольно хорошо. Сделал доклад коллегам, которые уже 3 года пытаются сделать то же самое используя спайковые нейроны. Все были восхищены. Два докторских кандидата хотели чтоб я их советником стал (ну и конечно позволил использовать свои результаты в их дисерах). Один предложил написать статью в журнал. Мне понадобилось только пара недель на написание кода, его прогон на разных данных и написание доклада. Короче, разряженное кодирование имеет большой потенциал, но наверно не на рынке, а там где есть какая-то структура.

 

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

 
gpwr:

Sparse coding - классная штука! Я тут пол года назад поковырялся с ним по предмету отыскивания паттернов на рынке. Отыскивает. И вроде бы обобщает. Но как оказалось по моим экспериментам, прошлые ценовые паттерны не повторяются в будущем. Применил этот метод для отыскивания паттернов в изображебиях и звуках. Получилось довольно хорошо. Сделал доклад коллегам, которые уже 3 года пытаются сделать то же самое используя спайковые нейроны. Все были восхищены. Два докторских кандидата хотели чтоб я их советником стал (ну и конечно позволил использовать свои результаты в их дисерах). Один предложил написать статью в журнал. Мне понадобилось только пара недель на написание кода, его прогон на разных данных и написание доклада. Короче, разряженное кодирование имеет большой потенциал, но наверно не на рынке, а там где есть какая-то структура.

 

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

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

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

Тогда кстати GPU можно скармливать не отдельные нейроны, а пачки нейронов описанные как слой. Но повторюсь сама модель не ограничена слоями, и вопрос слойности это дополнительное ограничительное правило (как остановка по требованию), может быть а может и нет.

ЗЫ При безслойном построении верхний треугольник маски (за входами) обнулён, что описывает отсутствие обратных связей в основной матрице, при появлении слоёв добавляется обнуление с заходом вниз от диагонали. Собственно в этом и состоит проверка маски.

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

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

Тогда кстати GPU можно скармливать не отдельные нейроны, а пачки нейронов описанные как слой. Но повторюсь сама модель не ограничена слоями, и вопрос слойности это дополнительное ограничительное правило (как остановка по требованию), может быть а может и нет.

ЗЫ При безслойном построении верхний треугольник маски (за входами) обнулён, что описывает отсутствие обратных связей в основной матрице, при появлении слоёв добавляется обнуление с заходом вниз от диагонали. Собственно в этом и состоит проверка маски.

Слоя нужны так как в некоторых сетях разные слои имеют разную обработку входов и разные подсоединения нейронов между собой внутри слоя.  Вообще-то мне непонятна практичность цели построения универсальной сети. Существуют много сетей с их нюансами (функциями нейронов в разных слоях, их подсоединением, тренеровкой весов, и т.д.). Описание их всех одной моделью мне кажется невозможным или неэффективным. Почему бы не создать библиотеку разных сетей?
 
gpwr:
Почему бы не создать библиотеку разных сетей?
Во. ГПУ под конкретную сетку будет еще быстрей.
 
TheXpert:
Во. ГПУ под конкретную сетку будет еще быстрей.
Но.  Такой подход даже не содержит зародыша для попыток генетического скрещивания топологий.
 
MetaDriver:
Но.  Такой подход даже не содержит зародыша для попыток генетического скрещивания топологий.

А вот ты сейчас неправ. Во-первых если выходы сетки нельзя подать на входы другой сетки то что это за сетка?

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

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

Главное чтобы этот микс смысл имел.

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

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