LINUX.ORG.RU

ANN для обучения с подкреплением

 , , ,


0

3

Хочу библиотеку, реализующую различные нейросети, поддерживающие обучение с подкреплением. Дело в том, что в моих проектах данные поступают непрерывным потоком, и batch-обучение, реализованное в FANN, Encog и пр. становится неэффективным (требуется заново обучать после каждого блока данных). Encog умеет incremental learning, но там самый наипримитивнейший алгоритм, который очень быстро забывает старые наборы данных и верно откликается только на последние блоки. Рулять параметрами пробовал, особо не помогло. Поэтому хотелось бы именно обучение с подкреплением с возможностью задать коэффициент полезности.

Смотрел библиотеку, оперирующую фиксированным числом состояний. Мне это тоже не подходит, ибо у меня на входе float'ы, состояний у которых весьма много :)

P.S. Питон не предлагать.

★★★

Последнее исправление: Sadler (всего исправлений: 2)

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

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

dave ★★★★★
()

А может быть есть возможность за счет буферизации,своеобразного квантования превратить поток в дискретный? Безусловно будут потери данных, но возможно на определенном уровне они приемлемы?

pylin ★★★★★
()
Ответ на: комментарий от Sadler

Тут можно порассуждать. У тебя перцептрон? Я правильно понимаю? (кстати, обучать по float не очень хорошая идея, но сам перцептрон стерпит). Если да, то можно просто оптимизировать не по общей функции невязки, а, скажем, брать сумму расхождений для нескольких последних образов. Будет поточная обработка, но, понятное дело, начальные образы будут «забываться».

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

dave ★★★★★
()
Ответ на: комментарий от dave

Подозреваю, что за этим скрывается такая непростая вероятностная задача.

dave ★★★★★
()
Ответ на: комментарий от dave

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

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

Sadler ★★★
() автор топика
Ответ на: комментарий от dave

У тебя перцептрон? Я правильно понимаю?

Скорее нет, чем да. Функция активации сигмоида, есть обратная связь.

Sadler ★★★
() автор топика
Ответ на: комментарий от Sadler

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

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

dave ★★★★★
()
Ответ на: комментарий от Sadler

Думаю, что исходную задачу надо переформулировать без упоминания нейросетей. Есть случайный процесс. Нужно выделить не более N репрезентативных значений в траектории (они же, образы для обучения). Так?

dave ★★★★★
()
Ответ на: комментарий от Sadler

В качестве гипотезы. А это не правило ли «оптимальной остановки» (Николаев М.Л. и наш бывший магнат Березовский)? Это тему я напрочь забыл, поэтому отсюда полная неуверенность.

dave ★★★★★
()
Ответ на: комментарий от dave

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

Sadler ★★★
() автор топика
Ответ на: комментарий от Sadler

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

Sadler ★★★
() автор топика
Ответ на: комментарий от Sadler

Нет, я о другом. Ну, да ладно. В общем, если ты знаешь законы распределения входного и выходного потоков (там будут мартингалы, кажется), то можно попытаться выбрать, т.е. «остановиться» на не более, чем N оптимальных образов, на которых и обучить нейросеть. Задача об оптимальной остановке. Насколько помню, она может работать с бесконечными потоками. Но это все на уровне теории. В практике я не реализовывал.

dave ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.