Я задачу распознавания образов пытаюсь решить с помощью нейронной сети, но не классической а такой где нейроны или их группы реализуют функцию распознавания time series.
В общем для лучшего понимания ситуации уточните, пожалуйста, что Вас больше интересует: решить какую-то конкретную задачу (класс задач) для определенного класса данных наиболее эффективно или попробовать получить определенный метод решения (вне зависимости от его эффективности и существования других методов)? Просто из стартового сообщения можно было сделать вывод, что интереснее первая цель, а из вышепроцитированного - что вторая.
В самом общем смысле задача - найти универсальный подход, позволяющий работать с данными почти любого типа. Видео, речь, разные сенсоры, тексты - ведь в понимании любой 'человеческой' информации много общего и хочется избежать слишком специализированного подхода к каждой задаче. Универсальный способ представления таких данных, общее ядро для работы с ними - это должно позволить искать ассоциации и строить связи, то есть понимать смысл. Но это действительно слишком общая задача.
Пока я бы ограничился отдельными элементами, этими чёрными ящиками - распознавателями последовательностей.
-- 28.10.2017, 23:45 --Такая модель более приближена с тому что происходит в живых нейронах.
Насколько знаю нет. У вас есть доказательства?
Ну как же. Живые нейроны только и умеют распознавать и предсказывать последовательности сигналов, больше они ничего не умеют. Хотя бы эта статья -
http://elementy.ru/novosti_nauki/430504/Neyrony_sorevnuyutsya_za_pravo_uchastiya_v_formirovanii_refleksov. Улитке прикасаются к сифону, затем бьют по хвосту что вызывает сокращение мышцы, и так несколько раз (обучение). Затем уже просто прикосновение к сифону вызывает сокращение мышцы. Математически - улитка научилась предсказывать последовательность входных импульсов. Это элементарный пример, последовательность всего из 2 сигналов, но и реализована всего одним нейроном (не считая двух сенсорных и мышечного). Нетрудно представить, что будет если собрать каскад и нескольких таких нейронов - они научатся распознавать и предсказывать более сложные последовательности. В пользу этого говорят и другие источники по нейрофизиологии, я изучил их достаточно.
Принцип один - когда на входы нейрона приходят импульсы, это повышает или понижает его потенциал. Когда потенциал достигает порога, происходит деполяризация - нейрон выдаёт импульс на выходе и чувствительность входов активных в этот момент повышается. В живых клетках есть куча всяких белков, молекулярных насосов и прочего, регулирующих эти процессы, характеристики входов, скорость угасания потенциала, но я пришёл к выводу что математически это описывается куда проще - это просто последовательности дискретных сигналов которые клетки учатся узнавать и предсказывать.
Поэтому, если мы вместо моделирования отдельных нейронов будет моделировать сразу функциональность их групп да ещё алгоритмически более простым способом, и потом искать способ коммутировать такие блоки, мы сможем ускорить всё на порядки. А это уже может дать интересные результаты.
Но хотелось бы по соптимизировать и распараллелить, чтобы на полную использовать возмонжости GPU/NPU.
Сначала напишите алгоритм. Тогда можно будет сказать как его оптимизировать.
Медленный алгоритм есть - это просто моделирование отдельных нейронов, или генетический отбор про который я написал в самом первом посте (так в общем живые сетки и работают). Но тут по-моему нужно не оптимизировать а искать другое решение.
Под это определение походит любая НС с обратной связью для обучения. Вот и возьмите ту, которая вам больше нравится. Останется только решить, что с растянутость во-времени делать. Я так понимаю вы хотите использовать нейронные сети с обратными связями, что-бы устранить растяжение - так?
Здесь интересный подход нашёл, изучаю пока
https://en.wikipedia.org/wiki/Long_short-term_memory#Convolutional_LSTM, в ссылках там есть статья "Time series prediction".
Но мне по-прежнему кажется, что использовать нейросети для этой задачи это слишком большое усложнение, слишком сложно их обучать.
Я думаю что-нибудь вроде множества вероятностных конечных автоматов, или байесовы сети, которые можно обучить просто пересчитывая вероятности при поступлении каждого нового элемента входных последовательностей. Что-нибудь такое, но пока я не нашёл быстрого решения. Это должно работать как хэш - функция от элементов последовательности, мы сохраняем частоты последних хэшей и если они начинают повторяться, выдаём сигналы на выходе, как-то так. Но как вычислить этот хэш - вот в чём вопрос.
В общем, именно здесь нужны свежие идеи :)
Пока я работаю над универсальным ядром - понимание смысла, работа с естественными языками и всё такое, насколько получится.
А каким же образом вы связали поиск повторов и понимания смыслов?
Смысл это ассоциативные связи между самой разной информацией. Для этого нам нужна ассоциативная память, а она может быть реализована в виде последовательностей сигналов. По крайней мере, именно так это работает в наших головах.