当前位置: 首页 > news >正文

无人驾驶实战-第十二课(强化学习自动驾驶系统)(完)

在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。

—————————————————————————————————————————

强化学习:通过和环境交互学习到如何在相应环境中采取最优策略的行为。特点是不需要标注,具有鲁棒性,对行为(Action)的学习更友好。
Environment:整体任务的工作环境 
Reward:激励、奖励,对行为好坏的一个评价,Value Function,不同环境可以有不同的奖励, 奖励的设计对RL来说至关重要。
Agent:智能体,一般是RL的作用对象 
Action:智能体可以采取的所有可能的行动 
Sensors:环境返回的当前情况 
MDP模型:马尔科夫决策过程
逆强化学习:能够找到一种能够高效可靠的Reward的方法,专家在完成某项任务时,其决策往往是最优或接近最优的。当所有的策略所产生的累积回报期望都不比专家策略所产生的累积回报期望大时, 对应的回报函数就是根据示例学到的回报函数。
常用的逆强化学习方法:学徒学习方法、最大边际规划算法MMP、基于最大熵的逆向强化学习
模仿学习: 从专家提供的范例中学习,一般提供人类专家的决策数据, 每个决策包含状态和动作序列, 把状态作为特征,动作作为标记进行分类或回归的学习从而得到最优策略模型。目标是使模型生成的状态-动作轨迹分布和输入的轨迹分布相匹配,算是一种监督学习方法( 行为克隆 )。特点是泛化性很差,依赖于大量数据 数据增广
深度学习:感知能力,缺乏一定的决策能力
强化学习:决策能力,非常适合做无人车决策规划 
强化学习中的一些分类:On-Policy vs Off-Policy、Model Based vs Model Free、Q-Learning vs SARSA、
DQN(Deep Q Network) 端到端的学习方式、 深度卷积神经网络和Q学习、 经验回放技术; 
DDPG(Deep Deterministic Policy Gradient ) actor-critic 算法、 深度神经网络作为逼近器;
强化学习主要方法的对比
无人车如何使用强化学习(模仿学习)
传感器感知(输入):Radar、Lidar、GPS、Camera … ,从原始数据抽取高阶特征,机器学习将特征转化成知识,知识处理后进行推理;做出合理的动作决策。
Q-Learning
Q-Table为每一个 state 上进行的每一个 action 计算出最大的未来 reward 的期望,每个状态允许四种可能的操作:左移、右移、上移、下移, Table 里的参数式给定最佳策略的状态下采取相应动作获得的最大未来奖励期望  
如何计算 Q-table 中每个元素的值? 
Q-Learning、学习动作值函数(Q值)、Bellman 方程
更新Q值的策略
选取一个动作:在基于当前的 Q 值估计得出的状态 state 下选择一个动作 action。采用动作 action 并且观察输出的状态 s' 和奖励 reward。
DQN
4个Action:上下左右,每走一步有reward,Maximum 未来的 Reward总和
Q-Learning: 使用最佳策略使得最大化未来的Reward值(Q值),Off-policy,持续迭代更新每步(s, a) 。
Exploration vs Exploitation(探索和使用): 局部最优(贪心),初始的时候对信息一无所知
持续更新(S, A) 是Q-Learning的最大问题,因为低效,泛化能力差,对复杂问题维数爆炸,所以后面使用Deep Learning代替Q-Table
DeepMind在这方面发表了文章在Nature上
如何训练DQN?
1.给定状态转移方式 ;2.在状态s用前向推理计算所有Action的预测Q值;3.前向推理下一步s’及其最大Q’值;4.并用Loss function进行梯度更新 
经验回放:提高数据利用率,遗忘数据流顺序(加入随机性)
课程总结
自动驾驶工程师技能图谱

相关文章:

无人驾驶实战-第十二课(强化学习自动驾驶系统)(完)

在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 强化学习&#xff…...

【flask sqlalchmey】一次性将返回的列表对象或者 一行数据对象转成dict---flask-sqlalchemy输出json格式数据

def model_to_dict(object):return {c.name: getattr(object, c.name) for c in object.__table__.columns}#将一组数据转为list def scalars_to_list(object):return [model_to_dict(c) for c in object]class Sysdict(Base,SerializerMixin):__bind_key__ forest_fire_contr…...

goland插件推荐Rider UI Theme Pack

推荐一个goland配色插件Rider UI Theme Pack,里面自带visual assist配色,配色截图如下: 直接在plugins里面进行搜索或者在插件home page下载后进行安装均可。 总算找到一统vscode 和goland二者优势的插件了。...

人工智能面试常识-10

目录 1. 人工智能的常见用途和应用有哪些? 2. 什么是智能代理,它们如何在人工智能中使用?...

Android JNI开发从0到1,java调C,C调Java,保姆级教程详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 第一步首先配置Android studio的NDK开发环境,首先在Android studio中下载NDK…...

STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用

文章目录: 一:LED与按键驱动程序 main.c 1.闪灯 led.h led.c 2.按键控制LED亮灭 key.h key.c 二:蜂鸣器与继电器驱动程序 main.c 1.蜂鸣器 buzzer.h buzzer.c delay.h delay.c 2.继电器 relay.h relay.c 三&#xff1…...

创建型模式 (Creational Patterns) 玄子Share 设计模式 GOF 全23种 + 七大设计原则

玄子Share 设计模式 GOF 全23种 七大设计原则 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWLAOFtO-1691793071647)(./assets/%E7%8E%84%E5%AD%90Share%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20GOF%20%E5%85%A823%E7%A7%8D%20%20%E4%B8%83%E…...

【脚踢数据结构】队列(顺序和链式)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,Linux基础,ARM开发板,软件配置等领域博主🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的一句鸡汤🤔&…...

linux添加磁盘

一、linux虚拟机添加一块新的硬盘 四步: (1) (2)为硬盘进行分区 (3)初始化硬盘分区 (4)挂载 在虚拟机上添加一块硬盘 (1)、 虚拟机添加一块新的硬盘作为数据盘 (2) ls…...

图片懒加载

什么是图片懒加载? 懒加载也叫做延迟加载、按需加载,指的是在长网页中延迟加载图片 数据,是一种较好的网页性能优化的方式。在比较长的网页或应用中, 如果图片很多,所有的图片都被加载出来,而用户只能看到可…...

scope,deep穿透的实际应用

一.父组件代码 <template><div id"app"><h1 class"box"><pageName> </pageName></h1></div> </template><script> import pageName from "../src/components/pageName.vue"; export de…...

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接

本文只介绍在windows下实现的过程&#xff0c;Ubuntu采用22.04 安装multipass后&#xff0c;在卓面右下角Open shell 就可以链接默认实例Primary&#xff0c;当然如果你有多个虚拟机&#xff0c;可以针对不同内容单独建立终端的链接&#xff0c;而本文仅仅用Primary来说明。 …...

Webpack5 core-js和babel-loader区别和用法

文章目录 core-js是什么&#xff0c;有什么用&#xff1f;为什么使用了babel-loader对js进行兼容性配置还需要core-js?core-js的具体用法总结 core-js是什么&#xff0c;有什么用&#xff1f; core-js是一个流行的JavaScript库&#xff0c;它提供了对新的JavaScript特性、API…...

软考高级架构师——5、系统规划分析与设计方法

系统计划主要用于描述从项目提出、选择到确立的过程&#xff0c;包括系统项目的提出与可行性 分析&#xff0c;系统方案的制订、评价和改进&#xff0c;新旧系统的分析和比较&#xff0c;以及现有软件、硬件和数据 资源的有效利用等问题。 1、项目的提出与选择 项目的立项目标…...

区块链学习6-长安链部署:如何创建特定共识节点数和同步节点数的链

正常prepare的时候只支持4 7 13 16个节点个数&#xff0c;想要创建10个节点&#xff0c;其中5个是共识节点&#xff0c;如何实现&#xff1f; 1. 注释掉prepare.sh的这几行&#xff1a; 2. 修改 crytogen的模板文件&#xff1a; 如果是cert模式&#xff1a;chainmaker-crypt…...

北航基于openEuler构建工业机器人操作系统,打造“开箱即用”的机器人基础软件平台

北京航空航天大学是国家“双一流”建设高校&#xff0c;以建设扎根中国大地的世界一流大学为发展目标。北京航空航天大学在机器人领域一直处于行业前沿&#xff0c;以其亮眼的成果和优秀的师资力量&#xff0c;成为国内机器人领域的重要参与者和建设者。机器人操作系统是机器人…...

孤儿进程与僵尸进程

进程退出 关于进程退出有两个函数 exit和 _exit&#xff1a;其主要差别是在于是否直接退出。 其流程主要区别如下&#xff1a; 孤儿进程&#xff08;不存在危害&#xff09; 父进程运行结束&#xff0c;但子进程还在运行&#xff08;未运行结束&#xff09;&#xff0c;这…...

redis的基础命令01

1、操作库的指令 1、清除当前库---flushdb 2、清除所有库---flushAll 2、操作key的指令 最常用的指令get、set 1&#xff09;set key value 2&#xff09;get key 基础指令 1、del 删除单个&#xff1a;del key 、批量删除&#xff1a;del key1 key2 key3 2、exists 判断key是否…...

批量将excel文件合并

要批量合并多个Excel文件&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 导入所需的Python库&#xff1a;首先&#xff0c;您需要导入pandas库来处理Excel文件。 import pandas as pd 2. 定义文件路径和输出文件名称&#xff1a; input_folder "your_input_fo…...

关于Vue与服务器端的通信:如何实现登录鉴权

随着前后端分离开发模式的流行&#xff0c;Vue作为一种轻量级的JavaScript框架&#xff0c;被广泛用于前端开发。Vue可以与服务器进行通信来获取数据和进行鉴权&#xff0c;本文将探讨如何实现登录鉴权的过程&#xff0c;并给出相应的代码示例。 一、前端登录请求的发送与接收…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...

Gitlab + Jenkins 实现 CICD

CICD 是持续集成&#xff08;Continuous Integration, CI&#xff09;和持续交付/部署&#xff08;Continuous Delivery/Deployment, CD&#xff09;的缩写&#xff0c;是现代软件开发中的一种自动化流程实践。下面介绍 Web 项目如何在代码提交到 Gitlab 后&#xff0c;自动发布…...