Обучение под присмотром против обучения с подкреплением для простого самостоятельного вождения автомобиля

12

Я строю автомобиль с дистанционным управлением для удовольствия. Я использую Raspberry Pi в качестве бортового компьютера; и я использую различные плагины, такие как камера Raspberry Pi и датчики расстояния, для обратной связи по окружению автомобиля. Я использую OpenCV, чтобы превратить видеокадры в тензоры, и я использую TensorFlow от Google, чтобы построить извилистую нейронную сеть, чтобы изучать границы и препятствия на дорогах. Мой главный вопрос заключается в том, должен ли я использовать контролируемое обучение, чтобы научить машину управлять автомобилем, или я должен предусмотреть цели и штрафы и провести обучение с подкреплением (т. Е. Как можно быстрее добраться до точки B, не нажимая ни на что и оставаясь в пределах границ дороги)? Ниже приведен список плюсов и минусов, которые я придумал.

Курирующиеся плюсы обучения:

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

Ученые минусы обучения:

  • Непонятно, как учить скорости, и правильная скорость довольно произвольна, если автомобиль не едет так быстро, что отклоняется от дороги. Полагаю, я мог бы быстро ездить во время тренировок, но это кажется грубым подходом. Может быть, я мог бы вручную добавить постоянную переменную во время обучения, которая соответствует скорости для этой тренировки, а затем, когда алгоритм обучения развернут, я установил эту переменную в соответствии со скоростью, которую я хочу?

Укрепление обучения плюсы:

  • Если я строю свой автомобиль с конкретной целью гонок на автомобилях других людей, самообучение, кажется, естественным способом сказать моей машине, чтобы «добраться как можно быстрее»
  • Я читал, что RL иногда используется для автономных дронов, поэтому в теории это должно быть проще в автомобилях, потому что мне не нужно беспокоиться о взлетах и ​​падениях

Укрепление обучения минусы:

  • Я чувствую, что для обучения усилению потребуется много дополнительных датчиков, и, честно говоря, в моем автомобиле длиной в фут не хватает места, учитывая, что для него также нужно установить аккумулятор, Raspberry Pi и макетную плату.

  • Поначалу машина будет вести себя очень беспорядочно, настолько, что, возможно, она сама себя разрушит. Также может потребоваться неоправданно много времени для обучения (например, месяцы или годы)

  • Позже я не могу ввести четкие правила, например, остановиться на игрушечном красном свете. С контролируемым обучением я мог бы включить многочисленные алгоритмы SL (например, классификатор Хаара Каскада для определения стоп-сигналов) в настраиваемый механизм правил, который оценивается между каждым видеокадром. Таким образом, механизм правил мог бы переопределить алгоритм SL вождения, если бы он видел красный стоп-сигнал, даже если он не был частью обучения алгоритма вождения. RL кажется слишком непрерывным, чтобы сделать это (т.е. останавливаться только в состоянии терминала)
  • У меня нет большого опыта применения прикладного обучения подкреплению, хотя я определенно хочу изучать его независимо от того,
Райан Зотти
источник
На самом деле это не ответ, я на самом деле делаю тот же проект, автомобиль с самостоятельным вождением и Q-learning (RL) (все еще в начале), и я хотел бы спросить, есть ли код вашего проекта в сети, было бы очень полезно для меня. Это проект, за которым я сейчас следую: medium.com/@harvitronix/… он использует RL с NN, как google deep Q learning (статья Atari), но он не использует контролируемое обучение. Его код доступен здесь: github.com/harvitronix/reinfo
Махмуд Хоссам
@MahmoudHossam у вас есть альтернативное место для кода? Ссылка, которую вы дали, мертва.
Гомункул Ретикулли
@MahmoudHossam Похоже, что репо изменилось на: github.com/harvitronix/rl-rc-car
Райан Зотти

Ответы:

12

Я бы предложил вам попробовать гибридный подход:

  • Во-первых, тренируйте свою машину под наблюдением демонстрации . Просто управляйте им и используйте ваши команды в качестве меток. Это позволит вам получить все плюсы SL.
  • Затем настройте свою нейронную сеть, используя обучение с подкреплением. Для этого вам не нужны дополнительные датчики: награды могут быть получены от датчиков расстояния (большие расстояния = лучше) и от самой скорости. Это даст вам плюсы RL и обучит ваш NN правильной цели быстрой езды, избегая препятствий вместо цели подражать вам.
  • Сочетание обоих подходов даст вам преимущества как SL, так и RL, избегая их минусов. RL не будет начинаться со случайного поведения, только небольшие постепенные отклонения от того, что вы использовали в NN. Подобный подход был успешно применен Google DeepMind с AlphaGo .
  • Вы всегда можете включить явные правила поверх этого. Реализуйте их с высоким приоритетом и вызывайте NN только тогда, когда нет явного правила для текущей ситуации. Это напоминает архитектуру Subsuration .
rcpinto
источник
DeepMind даже отнял у Мэтью Лая свежесть своих впечатляющих результатов «Шахматы с
жирафом