Как стать автором
Обновить

Простой пример использования в ПЛК нейросетевого контроллера

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров3.2K
Всего голосов 8: ↑8 и ↓0+9
Комментарии6

Комментарии 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 - позиция, угол, управление текущие и они же предыдущие. Тоже хочу так поэкспериментировать.

Мне было интересно, как работает ГА. Поэтому подбор весов делал с использованием DEAP.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории