Комментарии 6
Андрей есть вопрос, немного видоизменим задачу (пусть это будет не обязательно ПЛК с готовой прошивкой и весами):
1) Обучаемся управлением "на лету" и используем скорректированные веса в процессе использования (w1, w2 и т.п)
2) Пусть на входе у нас 10 различных параметров (и мы незнаем какой из них влияет больше на интересующий нас результат и какой меньше).
3) Выход (первый уровень = направление движения): На выходе нужно указать направление: -1 (вправо) 0 (ничего не делаем) +1 (влево).
4) Выход (второй уровень = размер движения): Можно помимо направления еще дополнительно усложнить добавить расстояние на которое нужно сместить: 1 см, 2см.
5) Работа с ошибкой. Бонус/штраф за верное или неверное решение?
Вопрос: Как бы вы решали подобную задачу? Сколько слоев должно быть в нейросети и какую примерную архитектуру можно использовать? (подход к решению). Заранее спасибо за комментарии по теме.
Можно попробовать обучение с подкреплением с такой структурой:
Входной слой (10 нейронов)
↓
Полносвязный слой (64 нейрона, ReLU)
↓
Полносвязный слой (64 нейрона, ReLU)
↓
Два параллельных выходных слоя:
├─ Направление (3 нейрона, softmax) - вероятность выбора -1, 0 или +1
└─ Расстояние (2 нейрона, softmax) - вероятность выбора 1 см или 2 см
Добрый день. Не описан алгоритм обучения, как формировалась ошибка для обучения сети?
Модель вообще является динамической, то есть имеет какое-то внутреннее состояние, которое зависит от предыдущего такта и управляющего сигнала. Косвенно это заходит через скорость и угловую скорость, как вариант можно было бы подать на вход несколько предыдущих тактов выходного и управляющего сигнала, интересно как это отразилось бы на обучении.
Я использовал генетический алгоритм для обучения нейронной сети, где "ошибка" неявно определяется через фитнес-функцию (время жизни в среде). Хорошее объяснение ГА у Балакирева C. https://proproprogs.ru/ga. Если подавать на вход последние 3 состояния + действие, то входов станет 16. Это усложнит задачу, возможен риск переобучения. Улучшение может быть незначительным, так как текущего состояния достаточно для оптимального управления.
Время жизнеспособности модели - это как-то не по инженерному, лучше уж тогда квадратичную интегральную ошибку минимизировать, и вместо ГА обычный бэкпроп, он быстрее сойдется.
На счет числа входных параметров их может быть всего 6 - позиция, угол, управление текущие и они же предыдущие. Тоже хочу так поэкспериментировать.
Простой пример использования в ПЛК нейросетевого контроллера