Какую нейронную сеть выбрать
Привет, привет! Есть ли здесь какие-нибудь эксперты по ИИ? :)
Так что это общий вопрос, какую нейронную сеть я должен выбрать.
1. Что у меня есть.
Существует поток данных, который происходит один раз за раз, и данные имеют формат массива двойников:
{0.67, 0.70, 0.71, 0.70, 0.72} {0.70, 0.71, 0.70, 0.69, 0.71} {0.76, 0.74, 0.77, 0.73, 0.71} {0.79, 0.74, 0.77, 0.71, 0.75}
Эти массивы появляются один за другим один раз за раз и имеют значение класса 1 (например). Их категория такова: один. В качестве потоков данных используются следующие массивы (или блоки данных: каждый массив представляет собой отдельный блок данных)::
{0.71, 0.70, 0.69, 0.67, 0.60} {0.70, 0.69, 0.67, 0.60, 0.50} {0.69, 0.67, 0.60, 0.50, 0.40} {0.67, 0.60, 0.50, 0.40, 0.39}
И эти данные, каждый из этих массивов (или блоков данных) имеет категорию: два.
Как вы можете видеть, данные очень похожи, каждый массив почти одинаков. Но как человек - вы можете видеть, что есть падение во второй части блоков данных. Вот почему существуют категории: "один" и "два". Категория "один" означает, что существует постоянный поток данных. Категория "два" означает, что есть падение.
2. Что мне нужно.
Мне нужен ИИ, чтобы уметь различать эти блоки данных, когда данные постоянны, а когда есть падение. Не предсказывать, что произойдет дальше, а классифицировать то, что происходит прямо сейчас, когда поступает новый блок данных. И иметь возможность учиться по каждому новому блоку данных, не кэшируя предыдущие входные данные и не переучивая все накопленные входные данные как полный растущий обучающий набор.
Мне нужно что-то, чтобы иметь возможность учиться на новый блок данных и все еще быть в состоянии правильно классифицировать предыдущие данные с течением времени. Если появляется новая категория данных, скажем, "усиление" или "подъем", или любая другая новая категория - она должна уметь ее изучать, сохраняя старые знания, а не переучивать все с нуля.
Знаете ли вы какие-нибудь решения, которые могут это сделать? Я не пробовал сверточные сети - но, насколько я знаю, они учатся одинаково - им нужны все данные, чтобы присутствовать, или я ошибаюсь?
Спасибо.
Что я уже пробовал:
Многослойный персептрон - будучи в состоянии учиться так, как я требую, он имеет много проблем с различением данных. Он делает слишком много ошибок, один раз он может правильно различать данные, а другой раз он просто не знает, что происходит. Однако он имеет наименьшую скорость забывания старых данных.
Адаптивная Многогиперплоскостная машина (разновидность СВМ) - он учится здорово, но только если все данные уже присутствуют. Он не может учиться на каждый новый блок данных. Если я тренирую его на новых данных - он полностью забывает предыдущие данные.
Длительная кратковременная память - отличный классификатор, но опять же - только если все (обучающие) данные присутствуют. Таким образом, мне придется накапливать все входы и переобучать сеть каждый раз, когда поступает новый вход со всеми накопленными предыдущими входами. В какой-то момент у меня, конечно, кончится память.