简易自驾遥控车的监督学习与强化学习


12

我正在建造一辆遥控自驾车,很有趣。我正在使用Raspberry Pi作为车载计算机。我正在使用各种插件,例如Raspberry Pi摄像头和距离传感器,以获取有关汽车周围环境的反馈。我正在使用OpenCV将视频帧转换为张量,并且正在使用Google的TensorFlow构建一个复杂的神经网络来学习道路边界和障碍物。我的主要问题是,我应该使用监督学习来教汽车驾驶,还是应该提供目标和罚则并进行强化学习(即,尽可能快地到达B点,而不撞到任何东西并停留在道路边界内)?以下是我提出的利弊清单。

监督学习专家:

  • 学习算法的输入非常简单。汽车学会将视频帧张量和传感器距离读数与前,后和角轮位移相关联
  • 我可以或多或少地教导汽车完全按照我的意愿驾驶(当然,不要过度安装)
  • 之前,我已经做过很多有监督的学习问题,而且这种方法似乎很适合我现有的技能

监督学习的弊端:

  • 目前尚不清楚如何教授速度,并且正确的速度是任意的,只要汽车的行驶速度不会太快而偏离道路。我想我可以在训练中快速开车,但这似乎是一种粗略的方法。也许我可以在训练期间手动添加一个常量变量,该变量对应于该训练课程的速度,然后在部署学习算法时,我根据所需的速度设置此变量?

强化学习的优点:

  • 如果我以赛车别人的自动驾驶汽车为特定目的来制造汽车,那么强化学习似乎是告诉我的汽车“尽可能快地到达那里”的自然方法。
  • 我已经读到RL有时会用于无人驾驶无人机,因此从理论上讲,它应该在汽车中更容易使用,因为我不必担心上下

强化学习的弊端:

  • 我觉得强化学习将需要很多额外的传感器,坦率地说,我的脚踏车内部没有那么多空间,因为它也需要安装电池,Raspberry Pi和面包板

  • 最初,汽车的行为会非常不稳定,以至于它可能会自行毁坏。学习也可能花费不合理的长时间(例如,数月或数年)

  • 以后我不能加入明确的规则,例如,停在玩具红灯前。通过监督学习,我可以将许多SL算法(例如,用于识别交通信号灯的Haar Cascade分类器)合并到可配置的规则引擎中,以在每个视频帧之间进行评估。因此,即使交通信号灯可能不是驾驶算法训练的一部分,如果规则引擎看到了红色的交通灯,它也将能够超越驾驶SL算法。RL似乎太连续了,无法执行此操作(即仅在终端状态下停止)
  • 我没有应用强化学习的丰富经验,尽管我绝对想学习

这实际上不是答案,我实际上是在做同一项目,是一辆带有Q学习(RL)的自动驾驶汽车(仍在开始阶段),我想问一下您的项目代码是否可以在网上找到。对我会非常有帮助。这是我现在正在关注的项目:medium.com/@harvitronix/…他像谷歌深度Q学习(Atari论文)一样将RL与NN一起使用,但他没有使用监督学习。他的代码可在以下位置
Mahmoud Hossam,

@MahmoudHossam您是否有代码的替代位置?您提供的链接已消失。
Homunculus Reticulli

@MahmoudHossam看起来该存储库已更改为:github.com/harvitronix/rl-rc-car
Ryan Zotti

Answers:


12

我建议您尝试一种混合方法:

  • 首先,通过示范以受监督的方式训练您的汽车。只需对其进行控制,然后将命令用作标签即可。这将使您获得SL的所有优点。
  • 然后,使用强化学习对神经网络进行微调。您不需要额外的传感器:可以从距离传感器(更大的距离=更好)和速度本身中获得奖励。这将为您提供RL的优点,并训练您的NN达到正确驾驶的正确目标,即避开障碍物而不是模仿您。
  • 结合使用这两种方法,可以避免SL和RL的弊端。RL不会从随机行为开始,而只会与您强化NN的行为有很小的逐渐偏差。Google DeepMind和AlphaGo成功地采用了类似的方法。
  • 您始终可以在此之上包括显式规则。以高优先级实施它们,并且仅在当前情况没有明确规则时才调用NN。这让人联想到包容体系结构

DeepMind甚至弹拨马修·赖,新鲜了他精彩的长颈鹿象棋NN结果:motherboard.vice.com/en_us/article/...
DukeZhou
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.