前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用Q-Learning算法实现无人车智能代理程序

用Q-Learning算法实现无人车智能代理程序

作者头像
用户1332428
发布于 2018-03-09 10:15:25
发布于 2018-03-09 10:15:25
8850
举报
文章被收录于专栏:人工智能LeadAI人工智能LeadAI

优达学城的第四个项目,通过Q-Learning算法来实现一个简单的无人车代驾程序。

先来一张训练过程的动图。

训练过程
训练过程

01 需求分析

一个无人车需要满足的最基本需求就是安全性和可靠性。安全性用来保证用户安全,可靠性用来保证在限定时间内将用户送达目的地。安全性和可靠性划分为A+、A、B、C、D、F六个等级。

安全性

安全性具体表现为遵守交通规则,避免交通事故。

假设有一个简化的世界,路口的交通灯是老式交通灯,不带左右转向指示灯。

简易世界

红线代表红灯的路段。

仅考虑红绿灯就够了吗???NO!!!

根据一般的交通规则我们可以知道,红灯时停止直行和左转,但是可以右转;绿灯时可以任意方向行驶。

在该规则下,最可能引发安全隐患的情况有以下三种:

因此确保安全性需要同时考虑红绿灯、交叉方向车辆、左侧车辆、右侧车辆的意图方向。

  • 绿灯时,想左转,但是交叉方向有直行的车。(见图1)
  • 红灯时,想右转,但是左侧有直行车辆。(见图2)
  • 绿灯时,想直行,但是右侧有右转车辆。(见图3)

引发安全隐患的情况

可靠性

可靠性指按时到达目的地。由于路况的不确定,我们不能确定哪条路那种方式是最短时间消耗,比如遇到堵车,即使目的地就在前方,可能绕个道也比等待耗时短,所以这种情况下,我们只要时刻知道目的地的方位就行。

02

Q-Learning算法

我是通过查阅一个简明的Q-learning教程和知乎上Flappy Bird学习Q-Learning理解的Q-Learning算法。

下图是我画的一个漫画。

分数部分(奖励)

用通俗易懂的语言来讲(可能表述不严谨)Q-Learning算法,比如无人驾驶车,初始阶段,小车不知道自己会遇到什么样的状态(路况),也不知道该采取什么样的策略(前行?左转?右转?什么也不做?),每训练一次可能遇到一种状态,就把它记录下来,比如这一次采取了前行的办法,则世界根据这个动作给它一个打分,下一次又遇到了相同状态,采取了左转策略,则世界根据这个动作再给它一个打分……经过数次训练,小车可能知道了这种状态下自己的所有行动对应的分数,在下一次遇到该状态的时候,则采取分数最高的行动作为本次策略,结束了吗?

没有,采取了分数最高行动之后,世界根据这个动作又要给小车一个打分,就意味着要刷新这一次分数,如何刷新呢?放弃原来的分数重新打分吗?不,我们希望综合原来的分数和本次的分数来打分,也就是Q-Learning公式中的学习率alpha

Q-Learning公式
Q-Learning公式

公式中,t代表训练轮次,s代表状态,a代表动作,r(a)代表所采取的动作a的奖励(分数),alpha代表学习率,gamma代表折扣因子,gamma后面的max代表下一个状态中分数最高的动作的分数,不难发现,与简明教程中房间不同,在无人车中,并不知道下一个状态最高的动作是什么,因为路况是不确定的,所以令gamma=0,则公式便成了

简化后的公式
简化后的公式

从公式可以看出,学习率alpha越大,Q值更新依据过去经验越少,alpha越小,Q值更新依据过去经验越大。

至此,分数部分完毕。

动作选择部分

除了分数部分,还有一个重要部分,动作选择。每次该如何确定策略?引入一个探索因子epsilon。

小车的动作选择来源于以往经验和一丢丢“冒险”,就像我们学习新东西需要尝试一样,探索因子越大,小车越爱冒险,依据以往经验越少,探索因子越小,小车越拘束 ,依据以往经验越多。

不难想到,合适的探索因子是需要变化,比如一开始,小车什么都不知道,没有经验可循,因此探索因子应该大一些,越往后,探索因子可适当减小,偶尔根据以往经验决定动作,偶尔冒险决定动作。

具体在程序中的使用就是:探索因子为0-1,产生一个0-1的随机数,如果随机数小于等于探索因子,则冒险,大于,则根据以往经验,这样小车的每个动作就有一定概率是冒险,一定概率是以往经验。

至此,动作选择部分完毕。

具体实现

代码太多且涉及优达学城的版权,因此不贴了,核心逻辑根据上下文的探讨完全可以自己编码实现,重要的是原理的理解。

状态空间

根据需求分析,需要考虑的状态有目的地方向、红绿灯、交叉方向车辆、左侧车辆、右侧车辆,分别用waypoint、light、oncoming、left、right表示,waypoint有4种可能:forward、left、right、None,None代表到达目的地,算一种状态,但不占状态空间,因为到了目的地就不用判断light之类了,所以waypoint有3种状态,light有红和绿两种状态,oncoming、left、right有forward、left、right、None四种状态,则共有3x2x4x4x4=384种状态,所以状态空间的大小是384。

训练轮次

根据我的代码,每一轮有20次选择,最极端的情况是20这20次学的同一种状态的同一个动作,因此384种状态,每种4个动作,想学完所有状态,则需要384x4=1536轮训练。

探索因子的衰减函数

探索因子的可选衰减函数有:

衰减函数
衰减函数

a代表任意一个常数,t代表训练轮次。

参数可以随意选择,但是原则是需要让探索因子在一定轮次内合理衰减到某个设定值(即epsilon的tolerance),假设使用第一个衰减函数公式,a=0.999,经过1536轮训练后,epsilon=0.215074991847,所以tolerance设置为0.21,这样无人车就可以在合理训练轮次内合理地衰减到tolerance。

alpha的选择

alpha参数需要自己调参,一般取0.5左右的值。

实现效果

随机动作选择:
随机动作选择
随机动作选择

可以看出,安全性和可靠性不管趋势还是结果都完全随机,很差。

用Q-Learning进行1500+轮训练
1500+轮训练
1500+轮训练

可以看出,事故越来越少,每个动作的评分也越来越高,可靠性也逐渐提高,且逐渐收敛。最终安全性和可靠性都较高。

用Q-Learning进行1500+轮训练后的状态文件截图
1536轮训练后的状态文件截图
1536轮训练后的状态文件截图

经过1500+次训练后,学习到了382种状态,还有2种没学到,可能需要更多轮训练,也可能不需要,人工智能算法都达不到绝对稳定。

折扣因子gamma去哪了

智能车在行驶过程中只知道目的地的大方向,不知道距离目的地的距离,因此下一个状态是不知道的,且起点和终点也不固定,因此用gamma是没有意义的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能LeadAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用Q-learning算法实现自动走迷宫机器人
强化学习作为机器学习算法的一种,其模式也是让智能体在“训练”中学到“经验”,以实现给定的任务。但不同于监督学习与非监督学习,在强化学习的框架中,我们更侧重通过智能体与环境的交互来学习。通常在监督学习和非监督学习任务中,智能体往往需要通过给定的训练集,辅之以既定的训练目标(如最小化损失函数),通过给定的学习算法来实现这一目标。然而在强化学习中,智能体则是通过其与环境交互得到的奖励进行学习。这个环境可以是虚拟的(如虚拟的迷宫),也可以是真实的(自动驾驶汽车在真实道路上收集数据)。
宜信技术学院
2019/07/01
2.2K0
用Q-learning算法实现自动走迷宫机器人
【强化学习】基础离线算法:Q-Learning算法
在强化学习中,Q-Learning 是一种基于值函数的强化学习算法。它通过学习一个状态-动作值函数(Q函数)来选择最优策略。Q-Learning 是一种 无模型(model-free) 的强化学习方法,意味着它不需要了解环境的动态(即转移概率和奖励函数),而只依赖于与环境的交互。
不去幼儿园
2024/12/18
1.1K0
【强化学习】基础离线算法:Q-Learning算法
q-learning强化学习使用基础
马尔科夫链:奖励*折扣因子,R(t)=reward(1)+yR(t+1),马尔可夫链多次迭代后分布趋于稳定所以可以得到最优解
sofu456
2023/09/21
2820
q-learning强化学习使用基础
强化学习(七)时序差分离线控制算法Q-Learning
    在强化学习(六)时序差分在线控制算法SARSA中我们讨论了时序差分的在线控制算法SARSA,而另一类时序差分的离线控制算法还没有讨论,因此本文我们关注于时序差分离线控制算法,主要是经典的Q-Learning算法。
刘建平Pinard
2018/10/10
1.1K0
强化学习(七)时序差分离线控制算法Q-Learning
强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
SARSA(State-Action-Reward-State-Action)是一个学习马尔可夫决策过程策略的算法,通常应用于机器学习和强化学习学习领域中。它由Rummery 和 Niranjan在技术论文“Modified Connectionist Q-Learning(MCQL)” 中介绍了这个算法,并且由Rich Sutton在注脚处提到了SARSA这个别名。
汀丶人工智能
2023/06/02
1.8K0
强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点分析
【强化学习】悬崖寻路:Sarsa和Q-Learning
本篇博文通过悬崖寻路这一实例来实现Sarsa和Q-Learning算法。 相关代码主要参考自PARL强化学习公开课。.
zstar
2022/06/14
1.7K0
【强化学习】悬崖寻路:Sarsa和Q-Learning
强化学习(Reinforcement Learning)中的Q-Learning、DQN,面试看这篇就够了!
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/08/29
3K0
强化学习(Reinforcement Learning)中的Q-Learning、DQN,面试看这篇就够了!
Hands on Reinforcement Learning 07 Deep Q Network
在第 5 章讲解的 Q-learning 算法中,我们以矩阵的方式建立了一张存储每个状态下所有动作值的表格。表格中的每一个动作价值
一只野生彩色铅笔
2023/04/07
7290
Hands on Reinforcement Learning 07 Deep Q Network
研究了一堆Q-learning资料后,写了这份指南
“我从来不相信什么懒洋洋的自由,我向往的自由是通过勤奋和努力实现的更广阔的人生,那样的自由才是珍贵的、有价值的;我相信一万小时定律,我从来不相信天上掉馅饼的灵感和坐等的成就。做一个自由又自律的人,靠势必实现的决心认真地活着。
mixlab
2018/07/25
4610
研究了一堆Q-learning资料后,写了这份指南
强化学习之Q-Learning
我们做事情都会有自己的一个行为准则,比如小时候爸妈常说“不写完作业就不准看电视”。所以我们在写作业的状态(state)下,好的行为就是继续写作业,直到写完它,我们还可以得到奖励(reward),不好的行为就是没写完作业就跑去看电视了,被爸妈发现就会被惩罚,这种事情做的多了,也变成了我们不可磨灭的记忆,这其实就是一个Q-learning的决策过程。
CristianoC
2020/05/31
1.3K0
强化学习(八)价值函数的近似表示与Deep Q-Learning
    在强化学习系列的前七篇里,我们主要讨论的都是规模比较小的强化学习问题求解算法。今天开始我们步入深度强化学习。这一篇关注于价值函数的近似表示和Deep Q-Learning算法。
刘建平Pinard
2018/10/11
1.4K0
强化学习(八)价值函数的近似表示与Deep Q-Learning
第九篇:强化学习Q-learning算法 通俗介绍
前面我们介绍强化学习基本概念,马尔科夫决策过程,策略迭代和值迭代,这些组成强化学习的基础。
double
2023/08/08
1.5K0
第九篇:强化学习Q-learning算法 通俗介绍
Q-learning算法 探索与利用平衡问题
Q-learning算法中,探索与利用是一个重要的平衡性问题。怎么在算法中平衡,今天第十一篇讨论:Q-learning算法探索与利用平衡问题
double
2023/08/08
3750
Q-learning算法 探索与利用平衡问题
小白系列(6)| Q-Learning vs. Deep Q-Learning vs. Deep Q-Network
原文:小白系列(6)| Q-Learning vs. Deep Q-Learning vs. Deep Q-Network
一点人工一点智能
2023/09/07
7200
小白系列(6)| Q-Learning vs. Deep Q-Learning vs. Deep Q-Network
Q-learning解决悬崖问题
Q-learning是一个经典的强化学习算法,是一种基于价值(Value-based)的算法,通过维护和更新一个价值表格(Q表格)进行学习和预测。
lyhue1991
2023/09/05
3780
Q-learning解决悬崖问题
走近流行强化学习算法:最优Q-Learning
Q-Learning 是最著名的强化学习算法之一。我们将在本文中讨论该算法的一个重要部分:探索策略。但是在开始具体讨论之前,让我们从一些入门概念开始吧。
啦啦啦
2018/09/20
7830
走近流行强化学习算法:最优Q-Learning
景驰无人车披露最新技术进展,2年后开启国内规模化运营 | 视频
李根 发自 凹非寺 量子位 报道 | 公众号 QbitAI 景驰无人车最近怎么样了? 在6月初,他们对外展示过台风天穿越江底隧道的路测视频,秀了一把传感器融合、定位以及感知算法上的技术实力。 但对于
量子位
2018/07/19
3250
《深度剖析Q-learning中的Q值:解锁智能决策的密码》
在人工智能的飞速发展进程中,强化学习作为一个关键领域,为智能体与环境交互并学习最优行为策略提供了有效框架。其中,Q-learning算法凭借其独特的魅力,在机器人控制、自动驾驶、游戏AI等众多领域大放异彩。而Q-learning中的Q值,更是理解这一算法的核心关键,它如同智能体的“智慧密码”,指导着智能体在复杂环境中做出最优决策。
程序员阿伟
2025/01/29
1070
《深度剖析Q-learning中的Q值:解锁智能决策的密码》
强化学习(九)Deep Q-Learning进阶之Nature DQN
    在强化学习(八)价值函数的近似表示与Deep Q-Learning中,我们讲到了Deep Q-Learning(NIPS 2013)的算法和代码,在这个算法基础上,有很多Deep Q-Learning(以下简称DQN)的改进版,今天我们来讨论DQN的第一个改进版Nature DQN(NIPS 2015)。
刘建平Pinard
2018/10/11
1.2K0
入门 | 走近流行强化学习算法:最优Q-Learning
选自Medium 作者:Yassine Yousfi 机器之心编译 参与:Nurhachu Null、李泽南 Q-Learning 是最著名的强化学习算法之一。我们将在本文中讨论该算法的一个重要部分:探索策略。但是在开始具体讨论之前,让我们从一些入门概念开始吧。 强化学习(RL) 强化学习是机器学习的一个重要领域,其中智能体通过对状态的感知、对行动的选择以及接受奖励和环境相连接。在每一步,智能体都要观察状态、选择并执行一个行动,这会改变它的状态并产生一个奖励。 马尔科夫决策过程(MDP) 在绝大多数传统的设
机器之心
2018/06/08
6230
推荐阅读
相关推荐
用Q-learning算法实现自动走迷宫机器人
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档