苹果首篇AI论文 SimGANs 代码及详解

2024-01-20 03:20

本文主要是介绍苹果首篇AI论文 SimGANs 代码及详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:Michael Dietz,Waya.ai创始人
原文:SimGANs - a game changer in unsupervised learning, self driving cars, and more
译者:王安阳 上海交通大学研究生在读
责编:王艺,CSDN记者,专注人工智能。寻求报道及投稿请请联系wangyi@csdn.net。同时运营CSDN AI相关微信群,「面向AI从业者及研究员做深入讨论与交流,分享业内领先案例」,欢迎加微信Qunnie-Yi申请入群。(请备注姓名+公司+职位,以快速审核通过)

编者按

本文为苹果最新AI论文SimGANs写就,作为GANs的变种,SimGANs一经提出便引发众议。本文分析论文思想及代码,并就将SimGANs应用于基于无监督学习的自主驾驶为例进行探讨。文中多连接,推荐您一一打开,会有惊喜。

译文

苹果公司在2016年年尾发布了其首篇AI论文《通过对抗训练从模拟的和无监督的图像中学习》(Learning from Simulated and Unsupervised Images through Adversarial Training)。该文使用了如今最炙手可热的深度学习“对抗训练”方法,提出了一个所谓“模拟+无监督学习”(simulated + unsupervised learning)的方法,可以使用合成的和未标记的数据训练先进的神经网络。文章一经登出,便广受关注。

图片描述

本文将分析为什么说SimGAN方法有着巨大的潜力,并把它应用于一个有趣的问题——自动驾驶。

我们将参考SimGAN的一个实现,以及除了waya.ai(译者注:作者为Waya.ai的创始人)之外我最喜欢的公司——Comma.ai,来进行讲解。(译者注:Comma.ai是一家致力于自动驾驶技术研发的科技公司)

若您需要了解GAN,请点击这里。

论文思想简介


苹果这篇论文背后的核心思想是,标记的数据通常是稀缺和昂贵的。然而,标记数据可以通过强大的引擎(如Unity)或其他方法进行合成。问题是,合成的和真实的数据之间存在差距,这导致用合成数据进行训练的网络不能很好地推广到真实世界。

“模拟+无监督学习”一文认为,使用真实的,非必需有标记的数据集,可以跨越这一差距。生成网络(generator)可以通过“对抗训练”来学习精炼(refine)合成数据,使得它更接近于真实数据集的分布,同时保持合成数据的标注(即,它的标签保持有效)。

以下链接是要解释的概念的相关代码。使用精炼网络(refiner)改进合成数据,可以:

  1. 通过自正则化损失项使精确和合成数据之间的差异最小化来保留标注。
  2. 使合成数据看起来是真实的(GAN的标准概念)。

精炼网络(refiner)将合成数据样本作为输入,输出相同维度的改进数据样本。判别网络(discriminator)将数据样本作为输入,并将其分类为改进的或真实的。

在苹果所发“模拟+无监督学习”一文中,GAN架构和培训过程是标准的,但是建议两种简单和直观的方法来提高应用于GAN的生成数据的质量。

  1. 在当前的GAN架构中,判别网络仅对最新产生的数据进行训练。这导致其忘记先前生成的数据的特征,并且意味着生成网络可以重新引入旧的特征以欺骗判别网络。生成的数据就是生成的数据,判别网络应该总能将其正确识别。设置一个先前生成的数据的历史缓冲器,就可以用来自当前生成网络的数据以及来自过去的生成网络的数据共同训练该判别网络。

  2. 在当前GAN架构中,判别网络通过全局分析输入数据将数据分类。这意味着生成网络可以通过在生成的数据中局部作假来欺骗判别网络。真实数据的任何局部数据块都应该看起来是真实的,因此鉴别器应该将数据分成局部块并且将每个块分类为真实的或生成的,将这些局部对抗损耗平均化以获得更平衡的全局对抗损失。

将SimGANs应用于基于无监督学习的自主驾驶


想象你是Comma.AI的一员,有大量的由Dash收集的真实的未标记的驾驶数据。虽然你当前的标记数据的方法很棒,但你只有少量的有标记数据。使用SimGAN,你可以训练一个改进神经网络来改进侠盗飞车的数据(开发者使用侠盗飞车游戏模拟真实车辆行驶),使数据看起来像是来自你的真实数据集,同时保留标注。现在,你可以在这个几乎无限精细标记的数据集上训练你的生产模型,并使用少量的真实标记数据集作为验证。

我没有参加任何自动驾驶的课程,但我知道他们使用侠盗飞车和模拟环境来训练他们的模型。有了这样的技术,他们的软件可以更接近现实世界。SimGAN在现实世界中似乎有许多可能的应用,自主驾驶只是我选择使用的一个有趣的例子。


【CSDN_AI】面向AI从业者及研究员做深入讨论与交流,分享业内领先案例

扫码关注CSDN AI公众号 「人工智能头条」

图片描述

这篇关于苹果首篇AI论文 SimGANs 代码及详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624635

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Go路由注册方法详解

《Go路由注册方法详解》Go语言中,http.NewServeMux()和http.HandleFunc()是两种不同的路由注册方式,前者创建独立的ServeMux实例,适合模块化和分层路由,灵活性高... 目录Go路由注册方法1. 路由注册的方式2. 路由器的独立性3. 灵活性4. 启动服务器的方式5.

Java中八大包装类举例详解(通俗易懂)

《Java中八大包装类举例详解(通俗易懂)》:本文主要介绍Java中的包装类,包括它们的作用、特点、用途以及如何进行装箱和拆箱,包装类还提供了许多实用方法,如转换、获取基本类型值、比较和类型检测,... 目录一、包装类(Wrapper Class)1、简要介绍2、包装类特点3、包装类用途二、装箱和拆箱1、装

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Python中Markdown库的使用示例详解

《Python中Markdown库的使用示例详解》Markdown库是一个用于处理Markdown文本的Python工具,这篇文章主要为大家详细介绍了Markdown库的具体使用,感兴趣的... 目录一、背景二、什么是 Markdown 库三、如何安装这个库四、库函数使用方法1. markdown.mark

PLsql Oracle 下载安装图文过程详解

《PLsqlOracle下载安装图文过程详解》PL/SQLDeveloper是一款用于开发Oracle数据库的集成开发环境,可以通过官网下载安装配置,并通过配置tnsnames.ora文件及环境变... 目录一、PL/SQL Developer 简介二、PL/SQL Developer 安装及配置详解1.下