0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何构建强化学习模型来训练无人车算法

ml8z_IV_Technol 来源:未知 作者:胡薇 2018-11-12 14:47 次阅读

本文作者通过简单的方式构建了强化学习模型来训练无人车算法,可以为初学者提供快速入门的经验。

想象一下,你生活在一个没有交通拥堵,没有交通事故,也无需花费时间开车的世界,那会多美好。

在我之前做过的一篇关于强化学习的文章中(链接在文末)曾说过,自动驾驶汽车是一场革命,主要有两个原因:

每年因交通事故将挽救125万人的生命

省下开车的时间,它会让你在一生中多活3年

很多公司已经在研究自动驾驶汽车了!比如特斯拉,谷歌,Wayve等等。这些自动驾驶汽车往往使用了强化学习!

再说一遍,如果你还没有读上一篇文章(链接在文末),可以先读一下,在这里我只做上篇文章的简要概述。

强化学习使机器(或者称为智能体)通过实验学习。就像人类学习走路。起初,你以一定的方式移动你的腿,但是你会跌倒。你跌倒了很多次,但最终,经过多次尝试,你会慢慢学会如何移动你的腿来走路。强化学习的原则与此相同!

比较正式的说法是,具有特定状态的环境中的智能体具有可以执行的一组动作。在执行这些动作后,它会收到一个奖励,让智能体知道这个动作有多好。当然,我们希望得到与我们目标相符的最高的奖励。贝尔曼方程用于说明未来的奖励,它通常是一系列导致积极结果的动作。在Q学习函数(Q-Learning)中,我们使用这些奖励来更新可以告诉我们某个状态有好坏的Q值。在深度Q学习(Deep Q-Learning)中,我们使用可以近似Q值的深度神经网络来代替Q值。当下次我们的智能体在环境中移动时,它将使用深度Q网络(Deep Q-Network)为每个动作生成Q值,并采用具有最高Q值的动作。

概念说太多也许你不明白,直观理解就足够了。强化学习与我们学习的方式进行比较是:

我们采取的行动会产生正面或反面的后果。如果它是正面的,我们会再次采取行动,反之亦然。就这么简单!

现在开始构建我们的虚拟自动驾驶汽车,让我们来看看构建的过程。

1.建立环境

首先,我需要为我的车创建虚拟环境。我最初想到创建一个Unity环境,但我的笔记本电脑在创建Unity游戏时感觉已经快死了。再加上机器学习和录制软件,我认为这么麻烦不值得。

我使用了一个名为Kivy的python包来创建UI。

我们从一张空地图开始。“汽车”的目标是在地图的左上角到右下角之间来回移动。

但是,我可以在地图上绘制“沙地”。如果汽车碰到了沙地,就会被视为出了车祸!

我们将使用强化学习(RL),特别是深度Q-Learning来制造我们的自动驾驶汽车。RL算法都有3个关键元素,状态(State),动作(Action)和奖励(Reward)。以下我的程序中定义这些元素的方式:

状态

汽车所处的状态包括5个变量:

传感器红色

传感器黄色

传感器蓝色

方向

负方向

前三个来自汽车前部的3个传感器。每个传感器(红色,黄色,蓝色)都能探测到距离自身10像素半径内的沙地的像素。从逻辑上讲,也就是说,如果汽车左侧有一堵沙墙,蓝色传感器会比黄色传感器探测到的沙地更多。这使汽车可以确定沙地的位置,从而确定行进的方向。最后2个变量代表汽车的方向。以角度衡量,0度将指向上方。我们还添加了负方向方便优化和提升性能。

动作

有三种可能的行动:

顺时针旋转20度

逆时针转动20度

不转弯

奖励

主要奖励包括:

-5:如果汽车驶入沙地

-0.1:如果汽车离目的地越远

0.1:如果汽车更接近目的地

这些只是主要的奖励。我还根据汽车的性能定义了其他奖励。例如,我后来意识到汽车离地图的边缘太近了,所以每当距离边缘10个像素内时我就给它一个负奖励。在实践中,你可以自行定义奖励,以获得自己想要达到的效果。

2.选择模型

我决定使用强化学习,特别是深度Q学习。这是我的神经网络的架构:

输入层:5个节点(每个状态一个输入节点)

隐藏层:30个节点

输出层:3个节点(每个动作一个)

激活函数:ReLU

优化器:Adam

一个隐藏层通常足以解决这类简单的问题。再进行训练需要更长的时间,并且不会带来显著的性能提升。

3.训练

训练时,汽车开始行驶,并逐渐适应环境。我添加了按钮来保存,并将以前的模型加载到当前的自动驾驶汽车中。以下是我们实际学习的代码片段:

4.评估和参数调整

这是智能体每个时间步获得奖励的图。在图中,智能体每次接近目标时都获得+1奖励,远离则获得-1奖励。这由+0.1和-0.1累积而来。训练在1500个时间步后达到稳定水平。

上面是更早之前生成的图。这是当智能体视离目标的远近分别获得+0.1和-0.1奖励。如你所见,奖励在2000步之后稳定了,而不是这次的1500步。这两个图平均需要10个不同的训练周期。结果表明,+1和-1奖励训练速度比+0.1和-0.1奖励更快。

对该模型进行了许多其他更改。比如:

天气调整

额外的奖励(例如,智能体不采取最佳路线。我们增加奖励,鼓励智能体降低与上一圈相比达到目标的步数。)

不同的神经网络架构(例如,层数,节点数,优化器,激活函数)

5.预测!

现在,我们的优化模型。我们的汽车可以无碰撞地进行自动驾驶!

我在这里开发了RL驱动的自动驾驶汽车的基础架构。现实生活中的汽车将更难进行编码,但我相信我们最终会成功。并且,我是在笔记本电脑上进行研发,其计算能力比特斯拉公司的小数百万倍。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 无人车
    +关注

    关注

    1

    文章

    294

    浏览量

    36279
  • 强化学习
    +关注

    关注

    4

    文章

    259

    浏览量

    11114

原文标题:强化学习开源项目:自己动手创建虚拟自动驾驶汽车

文章出处:【微信号:IV_Technology,微信公众号:智车科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    反向强化学习的思路

    强化学习的另一种策略(二)
    发表于 04-03 12:10

    深度强化学习实战

    内容2:课程一: TensoRFlow入门到熟练:课程二:图像分类:课程三:物体检测:课程四:人脸识别:课程五:算法实现:1、卷积神经网络CNN2、循环神经网络RNN3、强化学习DRL4、对抗性生成
    发表于 01-10 13:42

    基于强化学习的MADDPG算法原理及实现

    之前接触的强化学习算法都是单个智能体的强化学习算法,但是也有很多重要的应用场景牵涉到多个智能体之间的交互。
    的头像 发表于 11-02 16:18 2.1w次阅读

    量化深度强化学习算法的泛化能力

    OpenAI 近期发布了一个新的训练环境 CoinRun,它提供了一个度量智能体将其学习经验活学活用到新情况的能力指标,而且还可以解决一项长期存在于强化学习中的疑难问题——即使是广受赞誉的强化
    的头像 发表于 01-01 09:22 2151次阅读
    量化深度<b class='flag-5'>强化学习</b><b class='flag-5'>算法</b>的泛化能力

    机器学习中的无模型强化学习算法及研究综述

    强化学习( Reinforcement learning,RL)作为机器学习领域中与监督学习、无监督学习并列的第三种学习范式,通过与环境进行
    发表于 04-08 11:41 11次下载
    机器<b class='flag-5'>学习</b>中的无<b class='flag-5'>模型</b><b class='flag-5'>强化学习</b><b class='flag-5'>算法</b>及研究综述

    模型化深度强化学习应用研究综述

    强化学习。无模型强仳学习方法的训练过程需要大量样本,当采样预算不足,无法收集大量样本时,很难达到预期效果。然而,模型
    发表于 04-12 11:01 9次下载
    <b class='flag-5'>模型</b>化深度<b class='flag-5'>强化学习</b>应用研究综述

    基于深度强化学习仿真集成的压边力控制模型

    压边力控制策略的学习优化。基于深度强化学习的压边力优化算法,利用深度神经网络处理巨大的状态空间,避免了系统动力学的拟合,并且使用一种新的网络结构来构建策略网络,将压边力策略划分为全局与
    发表于 05-27 10:32 0次下载

    一种新型的多智能体深度强化学习算法

    一种新型的多智能体深度强化学习算法
    发表于 06-23 10:42 36次下载

    基于深度强化学习无人机控制律设计方法

    基于深度强化学习无人机控制律设计方法
    发表于 06-23 14:59 46次下载

    基于强化学习的虚拟场景角色乒乓球训练

    基于强化学习的虚拟场景角色乒乓球训练
    发表于 06-27 11:34 62次下载

    强化学习的基础知识和6种基本算法解释

    来源:DeepHub IMBA 强化学习的基础知识和概念简介(无模型、在线学习、离线强化学习等) 机器学习(ML)分为三个分支:监督
    的头像 发表于 12-20 14:00 879次阅读

    7个流行的强化学习算法及代码实现

    作者:Siddhartha Pramanik 来源:DeepHub IMBA 目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。这些算法
    的头像 发表于 02-03 20:15 820次阅读

    ICLR 2023 Spotlight|节省95%训练开销,清华黄隆波团队提出强化学习专用稀疏训练框架RLx2

    模型时代,模型压缩和加速显得尤为重要。传统监督学习可通过稀疏神经网络实现模型压缩和加速,那么同样需要大量计算开销的强化学习任务可以基于稀疏
    的头像 发表于 06-11 21:40 402次阅读
    ICLR 2023 Spotlight|节省95%<b class='flag-5'>训练</b>开销,清华黄隆波团队提出<b class='flag-5'>强化学习</b>专用稀疏<b class='flag-5'>训练</b>框架RLx2

    强化学习的基础知识和6种基本算法解释

    来源:DeepHubIMBA强化学习的基础知识和概念简介(无模型、在线学习、离线强化学习等)机器学习(ML)分为三个分支:监督
    的头像 发表于 01-05 14:54 485次阅读
    <b class='flag-5'>强化学习</b>的基础知识和6种基本<b class='flag-5'>算法</b>解释

    什么是强化学习

    强化学习是机器学习的方式之一,它与监督学习、无监督学习并列,是三种机器学习训练方法之一。 在围棋
    的头像 发表于 10-30 11:36 1643次阅读
    什么是<b class='flag-5'>强化学习</b>