学习模拟简明教程【Learning to simulate】

深度神经网络是一项令人惊叹的技术。 有了足够的标记数据,他们可以学习为图像和声音等高维输入生成非常准确的分类器。 近年来,机器学习社区已经能够成功解决诸如对象分类、图像中对象检测和图像分割等问题。

上述声明中的加黑字体警告是有足够的标记数据。 对真实现象和现实世界的模拟有时会有所帮助。 在某些情况下,合成数据可以提高计算机视觉或机器人控制应用中深度学习系统的性能。

模拟可以为我们提供带有免费标签的准确场景。 但我们以侠盗猎车手 V (GTA) 为例。 研究人员利用了在 GTA V 世界中自由漫游时收集的数据集,并一直使用该数据集来引导深度学习系统等。 许多游戏设计师和地图制作者都致力于创造 GTA V 的错综复杂的世界。他们一条条街道精心设计,然后对街道进行精细梳理,添加行人、汽车、物体等。

GTA V(侠盗猎车手 V)中的示例图像

这很贵。 无论是时间还是金钱。 使用随机模拟场景我们可能不会做得更好。 这意味着重要的编辑情况可能会严重采样不足,并且我们的分类器可能无法学习如何正确检测它们。 让我们想象一下我们正在尝试训练一个检测危险场景的分类器。 在现实世界中,我们会遇到如下危险场景的频率很低,但它们却非常重要。 如果我们生成大量随机场景,那么像下面这样的危险场景也很少。 对这些重要情况进行欠采样的数据集可能会产生无法处理这些情况的分类器。

危险交通场景的示例。 当对合成数据进行随机采样时,这些重要情况可能会被欠采样。 我们可以做得更好吗?

学习模拟(Learning to simulate)的想法是,我们可以学习如何最佳地生成场景,以便深度网络可以学习非常好的表示或可以在下游任务中表现良好。

为了测试我们的工作,我们使用虚幻引擎 4 和 Carla 插件创建了一个参数化的程序交通场景模拟器。 我们的模拟器创建了一条具有不同类型交叉口(X、T 或 L)的可变长度道路。 我们可以在道路上布满建筑物,并在道路上布满 5 种不同类型的汽车。 建筑物和汽车的数量由可调参数以及汽车的类型控制。 我们还可以在 4 种不同的天气类型之间更改天气,从而控制照明和降雨效果。 主要思想是学习控制不同任务(例如语义分割或对象检测)的这些场景特征的最佳参数。

我们的程序场景模拟器的演示。 我们改变道路的长度、交叉路口、汽车的数量、汽车的类型和房屋的数量。 所有这些都由一组参数控制。

为了获取传感器数据,我们将一辆汽车放在生成的场景的道路上,它可以从生成的场景中捕获 RGB 图像,这些图像自动具有语义分割标签和深度标注(免费!)。

使用一组固定参数从我们的模拟器生成的场景的内部视图

然而,学习模拟算法比这更普遍。 我们不必专门将它用于交通场景,它可以适用于任何类型的参数化模拟器。 我们的意思是,对于任何将参数作为输入的模拟器,我们提出了一种搜索最佳参数的方法,以便生成的数据对于深度网络学习下游任务来说是最佳的。 据我们所知,我们的工作是首先进行模拟优化,以最大限度地提高主要任务的性能,并将其应用于交通场景。

继续我们算法的关键。 传统的机器学习设置如下,其中数据从分布 P(x,y) 中采样(x 是数据,y 是标签)。 通常,这是通过收集现实世界中的数据并手动标记样本来实现的。 该数据集是固定的,我们用它来训练我们的模型。

传统机器学习

通过使用模拟器训练主任务网络,我们可以从模拟器定义的新分布 Q 生成数据。 该数据集不是固定的,我们可以在计算和时间限制允许的情况下生成尽可能多的数据。 尽管如此,在此域随机化设置中生成的数据是从 Q 中随机采样的。获得良好模型所需的数据可能很大,并且性能可能不是最佳的。 我们可以做得更好吗?

我们引入学习模拟,它优化了我们在主要任务上选择的指标—通过定义与该指标直接相关的奖励函数 R 来训练管道(通常与指标本身相同)。 我们从参数化模拟器 Q(x,y|θ) 中采样数据,用它在算法的每次迭代中训练主要任务模型。 然后,我们定义的奖励 R 用于通知控制参数 θ 的策略的更新。 奖励 R 是通过在验证集上测试训练后的网络获得的。 在我们的例子中,我们使用普通策略梯度来优化我们的策略。

非正式地,我们试图找到最佳参数 θ,它为我们提供了分布 Q(x,y|θ),从而最大化主要任务的准确性(或任何度量)。

学习模拟

学习模拟问题的数学表述是一个双层优化问题。 尝试使用基于梯度的方法解决它会对较低级别的问题造成平滑性和可微性约束。 在这种情况下,模拟器也应该是可微分的,但这通常是不正确的! 这就是为什么像普通策略梯度这样的不需要微分的优化方法是有意义的。

模拟优化问题的双层学习的数学公式

下面展示了我们的实例计数和语义分割方法。

我们探索的汽车计数任务很简单。 我们要求网络计算场景中每种特定类型的汽车数量。 下面是一个示例场景,右侧有正确的标签。

汽车计数任务示例

我们使用学习模拟来解决这个问题,并与仅使用随机模拟所发生的情况进行比较。 在下图中,重点关注红色和灰色曲线,它们显示了学习模拟 (LTS) 如何在 250 个 epoch 后获得更高的奖励(计算的汽车的平均绝对误差更低)。 随机采样情况会短暂改善,但一旦采样的随机批次不足以完成任务,性能就会下降。 灰色曲线在几次迭代中缓慢上升,但学习模拟会收敛到蓝色曲线(我们使用真实模拟参数)所示的最佳精度。

计车任务奖励。 请注意学习模拟如何收敛到蓝色曲线所示的最佳可能奖励(在模拟数据集上)。

这意味着什么? 观察它的一个好方法是可视化场景中不同场景和对象的概率。 我们绘制随时间变化的天气概率。 我们生成的地面实况验证数据集对某些天气(晴朗的中午和晴朗的日落)进行了过采样,并对其余天气进行了欠采样。 这意味着晴朗的正午和晴朗的日落天气的图像比其他类型的天气更多。 我们可以看到我们的算法恢复了粗略的比例!

随时间变化的天气概率 (logits)

让我们对汽车生成概率做同样的事情。 我们的地面实况数据集对某些类型的汽车(银色日产和绿色甲壳虫)进行了过采样。 学习模拟在训练后也反映了这些比例。 本质上,该算法推动模拟器参数来生成与地面实况数据集相似的数据集。

随时间变化的汽车概率(logits)

现在我们展示一个示例,说明学习模拟如何提高 KITTI 流量分段数据集上随机模拟的准确性,该数据集是在现实世界中捕获的数据集。

来自 KITTI 数据集的示例图像。

我们的模拟器上的真实语义分割标签的示例。 在模拟器中,可以免费获得对象标签 - 无需人工标注者

作为我们的基线,我们分别训练主要任务模型 600 次,模拟器使用不同的随机参数集生成数据。 我们监控每个网络的验证 Car IoU 指标,并选择验证奖励最高的一个。 然后我们在看不见的 KITTI 测试集上对其进行测试。 我们训练学习模拟 600 次迭代,并获得 0.579 的 Car IoU(广泛分割指标),远高于使用随机参数基线(随机参数)实现的 0.480。 我们还展示了使用另一种无导数优化技术(随机搜索)的结果,该技术在本实验中没有取得良好的结果(尽管它在汽车计数方面确实效果很好)。 最后,我们还通过在 982 个带标注的真实 KITTI 训练图像(KITTI 训练集)上进行训练来展示用于分割的 ResNet-50 网络的实际性能,以显示上限。

学习模拟可以被视为一种元学习算法,它调整模拟器的参数以生成合成数据,以便基于这些数据训练的机器学习模型分别在验证集和测试集上实现高精度。 我们证明它在实际问题中击败了领域随机化,并相信这是一个非常有前途的研究领域。 看到在不久的将来它的扩展和应用会发生什么将是令人兴奋的,我鼓励每个人研究模拟和学习模拟如何帮助你的应用或研究。


原文链接:学习模拟简明教程 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/161363.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你用C语言写出“走迷宫”小游戏(能看懂文字就会自己敲系列)

目录 设计迷宫地图 设计主角——小球 完整代码 这次教大家编写一个简单的“走迷宫”小游戏,我们可以通过键盘上的‘W’、‘S’、‘A’、‘D’四个键来控制一个“小球”向上,下,左,右移动,目的就是让这个“小球”从起…

Python3语法总结-数据转换②

Python3语法总结-数据转换② Python3语法总结二.Python数据类型转换隐式类型转换显示类型转换 Python3语法总结 二.Python数据类型转换 有时候我们,需要对数据内置的类型进行转换,数据类型的转换。 Python 数据类型转换可以分为两种: 隐式类…

原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列4

文章目录 原型网络进行分类的基本流程一、原始代码---计算欧氏距离,设计原型网络(计算原型开始训练)二、每一行代码的详细解释总结 原型网络进行分类的基本流程 利用原型网络进行分类,基本流程如下: 1.对于每一个样本…

信号完整性分析基础知识之有损传输线、上升时间衰减和材料特性(十):有损传输线在时域中的表现

如果高频衰减大于低频衰减,随着信号传输,上升时间将会增加。上升时间通常定义为边沿在最终值的 10% 到 90% 之间过渡的时间。这假设信号的边缘轮廓看起来有点高斯分布,中间是最快的斜率区域。对于该波形,10%−90% 的上升时间是有意…

MIB 6.1810实验Xv6 and Unix utilities(4)primes

难度: hard/moderate Write a concurrent prime sieve program for xv6 using pipes and the design illustrated in the picture halfway down this page and the surrounding text. This idea is due to Doug McIlroy, inventor of Unix pipes. Your solution should be in …

让你的Mac体验更便捷,快速启动工具Application Wizard为你助力!

亲爱的Mac用户们,你是否经常感到在繁琐的软件启动过程中浪费了太多时间?你是否希望能够以更快的速度找到并启动你所需的应用程序?如果是的话,那么不要犹豫,让我们来介绍一款强大的软件快速启动工具——Application Wiz…

23年宁波职教中心CTF竞赛-决赛

Web 拳拳组合 进去页面之后查看源码,发现一段注释,写着小明喜欢10的幂次方,那就是10、100、1000、10000 返回页面,在点击红色叉叉的时候抓包,修改count的值为10、100、1000、10000 然后分别获得以下信息 ?count1…

Spring面试题:(八)Spring事务

Spring事务概述 Spring事务基于数据库,基于数据库的事务封装了统一的接口。 编程式事务和声明式事务。 声明式事务分为Xml声明式或者注解声明式 实现事务相关的三个类 事务管理器 事务定义 事务状态 XML声明式事务的使用方法 导入坐标配置目标类配置切面 导入…

JS判断是否存在某个元素(includes、indexOf、find、findeIndex、some)(every 数组内所有值是否相同)

方法一:array.includes(searcElement[,fromIndex]) 此方法判断数组中是否存在某个值,如果存在返回true,否则返回false。 searchElement:需要查找的元素,必选。fromIndex:可选,从该索引处开始查…

浏览器页面被恶意控制时的解决方法

解决360流氓软件控制浏览器页面 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、接受360安全卫士的好意(尽量不要选)二、拒绝360安全卫士的好意(强烈推荐)第…

【Vue渲染】 条件渲染 | v-if | v-show | 列表渲染 | v-for

目录 前言 v-if和v-show的区别和联系 v-show和v-if如何选择 条件渲染|v-if|v-show v-if v-if v-else v-if v-else-if v-else template v-show 列表渲染|v-for v-for 前言 本文介绍Vue渲染,包含条件渲染v-if和v-show的区别和联系以及列表渲染v-for v-if和…

“腾易视连”构建汽车生态新格局 星选计划赋能创作者价值提升

11月16日,在2023年广州国际车展前夕,以“腾易视连,入局视频号抓住增长新机会”为主题的腾易创作者大会在广州隆重举办。此次大会,邀请行业嘉宾、媒体伙伴、生态伙伴、视频号汽车领域原生达人等共济一堂,结合汽车行业数…

轻量级的资源授权:基于 OAuth 规范

了解 OAuth 感觉 OAuth 太负盛名了,以至于后来在 OIDC 反而难以企及前辈 OAuth。倒是大家谈论比较多的是 JWT(例如https://www.cnblogs.com/lyzg/p/6132801.html),——实际谈 JWT 就是在实现 OIDC,反而 OIDC 大家不怎…

Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用

文章目录 Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用()1.概念2.流程3.bctest.c3.1 注册服务,打开binder驱动3.2 获取服务 4.binder_call Android跨进程通信,IPC&#xf…

组件插槽,生命周期,轮播图组件的封装,自定义指令的封装等详解以及axios的卖座案例

3.组件插槽 3-1组件插槽 注意 插槽内容可以访问到父组件的数据作用域,因为插槽内容本身就是在父组件模版中定义的 插槽内容无法访问子组件的数据.vue模版中的表达式只能访问其定义时所处的作用域,这和JavaScript的词法作用域是一致的,换言之: 父组件模版的表达式只能访问父组…

计算机毕业设计选题推荐-掌心办公微信小程序/安卓APP-项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

模块一、任务一.数据分析概述

一、module1 预测未来-总统大选 样本偏差 二、module2 优化现状-化妆品销售 1、数据分析师从业务类型上划分 2、目标:总销量 达到 目标销量 3、固定基本流程 (1)确定 一、目标值节节升高,是否合理?根据什么定的&…

zabbix-proxy分布式监控

Zabbix是一款开源的企业级网络监控软件,可以监测服务器、网络设备、应用程序等各种资源的状态和性能指标。在大型环境中,如果只有一个Zabbix Server来监控所有的节点,可能会遇到性能瓶颈和数据处理难题。 为了解决这个问题,Zabbi…

爱拖延怎么办?如何改变拖延症?

拖延症是我们日常生活中多见的问题,也是不怎么受重视的问题,大多数人都会认为拖延不是什么大问题,办事拖拉怎么也不可能和心理疾病扯上关系。这里小猫测试网分不同情况来讨论。 偶尔的拖延没什么关系,建议忘掉这种偶然性拖延&…