我正在建造一辆遥控自驾车,很有趣。我正在使用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