当前位置: 首页 > 编程日记 > 正文

2019最新实战!给程序员的7节深度学习必修课,最好还会Python!

整理 | 琥珀

出品 | AI科技大本营


从 2017 年开始,fast.ai 创始人、数据科学家 Jeremy Howard 以每年一迭代的方式更新“针对编程者的深度学习课程”(Practical Deep Learning For Coders)。这场免费的课程可以教大家如何搭建最前沿的模型、了解深度学习的基础知识。直到今年已经是第三个年头了。


640?wx_fmt=png

1 月 24 日,fast.ai 上线 2019 版深度学习新课程。据介绍,该课程 100%  全新,包括以前从未涵盖过的深度学习入门课程,甚至其中某些技术成果还尚未发表学术论文。


如以往一样,Jeremy Howard 公开了本次课程将涵盖的所有细节内容。他表示,本次课程共有七节,每节课大约 2 小时,当然,预计完成课后作业的时间将有 10 小时。


640?wx_fmt=png

课程将涉及的应用案例


本次课程设计关键应用包括:


  • 计算机视觉(例如按品种分类宠物照片)

  • 图像分类

  • 图像定位(分割和激活图)

  • 图像关键点


  • NLP(如电影评论情绪分析)

  • 语言建模

  • 文档分类


  • 表格数据(如销售预测)

  • 分类数据

  • 连续数据


  • 协作过滤(如电影推荐)


640?wx_fmt=png

课程涵盖的基础


课程链接传送:https://course.fast.ai


目标人群:至少有一年的编程经验,且最好是 Python,fast.ai 还提供了Python 相关的学习资源。



第 1 课:图像分类


该系列课程第一课,是训练一个能以最高精准度识别宠物品种的图像分类器。其中,迁移学习的使用时本次课程的基础。我们将了解如何分析模型,以了解其失效模型,或许还能发现,模型出错的地方与育种专家犯了相同的错误。


640?wx_fmt=png

训练和分析宠物品种分类器


我们将讨论课程的整体方法,这与先理论再实际应用的方式不同,课程旨在先进行实际应用再深入研究。


我们还将讨论如何在训练神经网络时设置最重要的超参数:学习率(这主要基于 Leslie Smith 的 learning rate finder)。最后,还会介绍“标签”的问题,并了解 fast.ai 所提供的功能,如可以轻松将标签添加到图像中。



第 2 课:数据清洗与构建;梯度下降法(SGD)


本节课程将学习如何使用自己的数据构建图像分类模型,主要包括以下几方面:


  • 图像收集

  • 并行下载

  • 创建验证集

  • 数据清洗,通过模型找到数据问题


如下图所示,我们可以创建一个可区分泰迪熊和灰熊任务的模型。


640?wx_fmt=png

将模型投入生产


课程后半部分,将完整训练一个较为简单的模型,同时创建一个梯度下降循环。(注:在此过程中,将学习到很多新的术语,所以请确保做好笔记,因为在整个课程中都会引用这个新术语。


640?wx_fmt=gif



第3课:数据块;多标签分类;分割


本节课开始将主要研究一个有趣的数据集,叫做 “Planet’s Understanding the Amazon from Space”。为了将这些数据转化为模型需要的形式,将使用 fast.ai 工具之一的数据块 API。


Planet 数据集的一个重要特征是,它是一个多标签数据集。也就是说,每个Planet 图像可包含多个标签,而之前看过的数据集,每个图像只有一个标签。此外,可能还需要对多标签数据集进行修改。


640?wx_fmt=png

图像分割模型的结果


接下来的图像分割,是一个标记图像中每个像素的过程,其中一个类别显示该像素描绘的对象类型。将使用与早期图像分类类似的技术,所以不需要太多调整。


本课程中还会使用到 CamVid 数据集,该模型误差远低于在学术文献中找到的任何模型。


假设:如果你的因变量是连续值而不是类别怎么办?我们将重点回答这个问题,查看关键点数据集,并构建一个精准预测面部关键点的模型。



第 4 课:NLP;表格数据;协同过滤;嵌入(Embeddings)


使用 IMDb 电影评论数据集深入研究自然语言处理(NLP)。在这项任务中,目标是预测电影评论是积极的还是消极的,这称为“情绪分析”。此前,在 fast.ai 2018 课程里提到的 ULMFit 算法,对 NLP 的发展起着重要作用。纽约时报曾报道:“新系统开始瓦解自然语言的代码。”ULMFiT 被认为是当今最准确的情绪分析算法。


640?wx_fmt=png


基本步骤如下:


  1. (首选)创建(或下载预训练的)语言模型,该模型在大型语料库(如维基百科)上训练。(“语言模型”指的是学习预测句子下一个单词的任意一种模型。)


  2. 使用目标语料库(案例为 IMDb 电影评论)微调该语言模型。


  3. 在微调语言模型中删除编码器,并用分类器进行替换。然后对微调该模型以完成最终分类任务(情绪分类)。


在学习 NLP 的过程中,我们将通过覆盖表格数据(如电子表格和数据库表格)以及协作过滤(推荐系统)来完成使用的编码器深度学习的实际应用。


对于表格数据,我们还将看到如何使用分类变量和连续变量,以及如何使用 fast.ai. tabular 模块来设置和训练模型。


在课程中期,我们主要研究了如何在每个关键应用领域中构建和解释模型,包括:计算机视觉、NLP、表格数据、协同过滤等。


在课程的后半部分,我们将了解这些模型如何真正起作用、如何从头开始创建的过程,会涉及以下几部分:


  • 激活

  • 参数

  • 图层(仿射和非线性)

  • 损失函数



第 5 课:反向传播;加速SGD;构建神经网络


本节课程中,将所有的训练融合在一起,以便讨论反向传播时准确理解发生了什么,并利用这些只是从头构建一个简单的神经网络。


640?wx_fmt=png


在这个过程中,可以看到嵌入层的权重,以找出模型从分类变量的中学到了什么。


640?wx_fmt=png


尽管嵌入在 NLP 的单词嵌入环境中最广为人知,但它们对一般的分类变量也同样重要,例如表格数据或协同过滤。它们甚至可以与非神经模型一起使用并取得巨大成功。


640?wx_fmt=png



第 6 课:正规化;卷积;数据伦理


本节课主要讨论一些改进训练和避免过度拟合的技术:


  • Dopout:在训练期间随机删除激活,使模型正规化

  • 数据增强:在训练期间修改模型输入,以便有效增加数据大小

  • 批量标准化:调整模型的参数化,使损失表面更加平滑


640?wx_fmt=png

单个图像的数据增强示例


接下来,我们将学习有关卷积的所有内容,卷积可被视为矩阵乘法的一种变体,也是现代计算机视觉模型的核心操作基础。


我们将创建一个类激活图。这是一个热图,显示图像的哪些部分在进行与测试时最重要。


640?wx_fmt=png

卷积如何运作


最后,我们还将提到:数据伦理。同学们将了解到模型出错的一些方法,尤其是反馈循环,其原因以及如何避免这些问题。我们还将研究数据偏差可能导致偏向算法的方式,并讨论数据科学家可以而且应该提出的问题,以确保他们的工作不会导致意外的负面结果。


640?wx_fmt=png

美国司法系统中算法偏差的例子



第 7 课:构建 ResNet、U-Net;生成对抗网络


在最后一讲中,我们将研究现代架构中最重要的技术之一:跳跃连接(skip connection)。跳跃连接是 ResNet 最重要的应用,其主要在课程中用于图像分类,同样它还是很多前沿成果的基石。


我们还将研究 U-Net 架构,使用不同类型的跳跃连接极大改善了分段结果。


640?wx_fmt=png

ResNet跳跃连接对损失表面的影响


然后,使用 U-Net 架构来训练超分辨率模型。这是一种可以提高低质量图像分辨率的模型,该模型不仅会提高分辨率,还会删除 jpeg 图片上伪迹和文本水印。


为了使我们的模型产生高质量的结果,需要创建一个自定义损失函数,其中包含特征损失(也称为感知损失)以及 gram 损失。这些技术可用于许多其他类型的 图像生成模型,例如图像着色。


640?wx_fmt=png

使用特征损失和 gram 损失的超分辨率结果


我们将了解到一种称为生成性对抗性损失(用于生成性对抗性网络 GAN)的损失函数,可以在某些情况下以牺牲速度为代价来提高生成模型的质量。


例如,上文提到的还未发表的一些论文中所涉及的应用:


  • 利用迁移学习,更快更可靠地训练 GAN

  • 将架构创新和损失函数方法以前所未有的方式进行结合


结果令人惊叹,只需要几个短短几小时便可进行训练(与以前需要几天的方法相比)。


640?wx_fmt=png

一个循环神经网络


最后,我们还将学到如何从头开始创建递归神经网络(RNN)。实际上,RNN 不仅是整套课程中 NLP 应用的基础模型,还被证明是规则的多层神经网络的一个简单重构。



课前须知:


1、Google Cloud 和微软 Azure 作为赞助方,已将课程所需的全部功能集成到基于 GPU 的平台上,并且提供“一键式”平台服务,如 Crestle 和Gradient 服务。


2、完成第一堂课后,学生可以在自己的数据上训练图像分类模型。整个上半部分重点是实用技术,仅展示在实践中用到的技术相关理论知识;课程的后半部分,将深入研究理论。直到最后一节课,将学习构建和训练一个 Resnet 的神经网络,以求接近最佳准确性。


3、 课程使用 PyTorch 库进行教学,可更轻松访问推荐的深度学习模型最佳实践,同时也可以直接使用所有底层的 PyTorch 功能。


4、学习内容同样适用于 TensorFlow/keras、CNTK、MXnet 或者任何其他深度学习库的任何任务。


5电脑需要连接到安装了 fast.ai 库的云 GPU 供应商服务,或设置一个适合自己的 GPU。同时,还需要了解运行深度学习训练的 Jupyter Notebook 环境的基础知识。


6、课程笔记本提供了新的交互式 GUI,用于使用模型查找和修复错误标记或错误收集的图像。


7、(强烈)建议学院参加该课程的在线社区。


(本文为 AI科技大本营原创文章,转载请微信联系 1092722531。

征稿

640?wx_fmt=png


推荐阅读

  • PDF翻译神器,再也不担心读不懂英文Paper了

  • Facebook增强版LASER开源:零样本迁移学习,支持93种语言

  • 啥是佩奇排名算法

  • 网络爬虫的法律边界

  • Caicloud 开源 Nirvana:让 API 从对框架的依赖中涅槃重生

  • 程序员有话说 | 那个拒绝加班的程序员后来怎么样了

  • 告别摩拜

  • 6大改进:盘点以太坊的2018冒险之旅

  • 不难!月薪 50K大牛,悉心整理程序员必备技能!


640?wx_fmt=png

相关文章:

linux驱动:i2c驱动(二)

3、驱动源码分析 IPNC_RDK_V3.8.0.1/Source/ti_tools/ipnc_psp_arago/kernel/sound/soc/codecs/tlv320aic3x.c 3.1 注册模块 module_init(aic3x_modinit); 3.2 在初始化函数中添加i2c驱动 static int __init aic3x_modinit(void) { intret 0; #if defined(CONFIG_I2C) ||…

01 使用AFN3 0上传图片时间慢的问题

##iOS中修改图片的大小:修改分辨率和裁剪 ###第一步:裁剪图片 // 裁剪// 要裁剪的图片区域,按照原图的像素大小来,超过原图大小的边自动适配CGSize size CGSizeMake(1000, 1000);UIImage *img [self imageWithImageSimple:image scaledToS…

配置telnet

配置telnet<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />允许root账号能够登录telnet&#xff0c;但是拒绝某一台主机登录且只允许在9&#xff1a;00-14&#xff1a;00 14&#xff1a;00-18&#xff1a;00能够访问&#xff0…

04 pod setup 慢的问题

解决方式一: 可以直接从别人的电脑中拷贝解决方式二转载于:https://juejin.im/post/5a3c5a985188257d391d3a39

linux驱动:i2c驱动(三)流程图之注册设备

一、设备注册过程 1、将i2c设备信息保存到i2c_board_info结构体中&#xff1b; 2、在注册i2c_board_info时&#xff08;i2c_register_board_info&#xff09;将它加入一个全局列表__i2c_board_list中&#xff0c; 3、在注册I2c adapter适配器驱动后&#xff0c;再从全局列表…

AI找Bug,一键快速预测

作者 | Jane出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;在程序开发中&#xff0c;程序员每天都要和 Bug 打交道&#xff0c;对新手程序员而言&#xff0c;debug 是一件非常让人头疼的事情。好不容易写完一段代码&#xff0c;一运行&#xff0c;全是红色&#xff…

专业研究HP procurve网络、阿姆瑞特和系统集成的论坛

一个专业研究HP procurve网络、阿姆瑞特防火墙和系统集成的论坛http://www.vlan2.com确实不错。转载于:https://blog.51cto.com/showrouter/284235

到底是什么特征影响着CNN的性能?

作者 | 刘畅 编辑 | Jane出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;开门见山。最近阅读了一篇论文&#xff0c;加上看了一些之前的工作。记录一下&#xff0c;CNN 到底学到了什么东西&#xff0c;或者换句话讲。到底是什么样的特征在影响着CNN 的性能&#xff1…

Java数据结构与算法(八)-二叉树

一、为什么要使用树 有序数组插入、删除数据慢。链表查找数据慢树可以解决这两个问题二、相关术语 树的结点&#xff1a;包含一个数据元素及若干指向子树的分支&#xff1b;孩子结点&#xff1a;结点的子树的根称为该结点的孩子&#xff1b;双亲结点&#xff1a;B 结点是A 结点…

linux驱动:i2c驱动(四)流程图之注册驱动

二、i2c设备的驱动部分 1、i2c驱动i2c_driver 2、通过i2c_add_driver注册 2、注册过程中 比较i2c_device_id数组中各成员的id与i2c_client中的名字&#xff0c;找到设备 3、执行i2c_driver驱动中的probe

Expression Blend实例中文教程(2) - 界面快速入门

上一篇主要介绍Expression系列产品&#xff0c;另外概述了Blend的强大功能&#xff0c;本篇将用Blend 3创建一个新Silverlight项目&#xff0c;通过创建的过程&#xff0c;对Blend进行快速入门学习。 在开始使用Blend前&#xff0c;首先需要进行Silverlight的开发环境搭建&…

Lua基本语法-书写规范以及自带常用函数

Lua基本语法-书写规范和常用函数本文提供全流程&#xff0c;中文翻译。Chinar坚持将简单的生活方式&#xff0c;带给世人&#xff01;&#xff08;拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例&#xff09; 1String Operation —— 字符串操作2Table ——…

linux驱动:音频驱动(一)ALSA

一、【基础知识】 1、J2 《--HPR_OUTHPL_OUT 《-- U13&#xff08;TLV320AIC3104IRHBR&#xff09;的HPROUTHPLOUT 2、驱动源码 IPNC_RDK_V3.8.0.1/Source/ti_tools/ipnc_psp_arago/kernel/sound/soc/codecs/tlv320aic3x.c 3、依赖于I2C驱动 4、声卡驱动框架&#xff1a;…

秘籍 | 机器学习数据集网址大全

作者 | Will Badr译者 | Linstancy整理 | Jane出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;要找到一定特定的数据集可以解决各种机器学习问题&#xff0c;是一件很难的事情。越来越多企业或研究机构将自己的数据集公开&#xff0c;已经成为全球的趋势&#xff0c;…

为asa防火墙配置ssh登陆

由于最近事情超多&#xff0c;单位下发某些令人恶心的制度&#xff0c;今天突然说北京分公司和总公司之间要做***的连接&#xff0c;虽然俺是个CCNP&#xff0c;但是对于***来说接触的少之又少&#xff0c;并且工作繁忙&#xff0c;每天头大&#xff0c;北京分公司的安全ie同事…

70.nodejs操作mongodb

转自&#xff1a;https://www.cnblogs.com/whoamme/p/3467374.html 首先安装nodejs mongodb npm install mongodb var mongodb require(mongodb); var server new mongodb.Server(localhost, 27017, {auto_reconnect:true}); var db new mongodb.Db(mydb, server, {saf…

明晚8点公开课 | 用AI给旧时光上色!详解GAN在黑白照片上色中的应用

在改革开放40周年之际&#xff0c;百度联合新华社推出了一个刷屏级的H5应用——用AI技术为黑白老照片上色&#xff0c;浓浓的怀旧风勾起了心底快被遗忘的时光。想了解如何给老照片上色&#xff1f;本次公开课中&#xff0c;我们邀请到了百度高级研发工程师李超&#xff0c;他的…

linux驱动:音频驱动(二)ASoc

五、【ASoC声卡驱动框架】 1、ASoC将嵌入式设备的音频系统从软件层面划分为3个组件 1.1 codec驱动&#xff1a;音频编解码器驱动&#xff0c;与平台无关&#xff0c;实现音频控制项添加、音频接口实现、DAPM&#xff08;动态音频电源管理&#xff09;、音频编解码器的IO功能 …

把32位的SharePoint服务器场迁移到64位, 应该怎么做?

总体步骤如下: 1. 迁移已经存在了的数据库服务器到新的数据库服务器. 先迁移这一层的目的是避免可能发生的一些由64位系统对32位系统执行查询或写入操作所引起的性能问题. 2. 迁移WFE服务器到64位环境下. 准备工作: 1. 重新编译已经存在的32位的应用程序和自定义的程序集(web p…

testem方便的web tdd 测试框架使用

备注&#xff1a;单元测试&#xff0c;对于日常的开发是比较重要的&#xff0c;testem 简化了我们的代码编写&#xff0c;以及运行。主要特性&#xff1a;a. 支持的测试框架有&#xff1a;jasmine quint mocha buster.js &#xff0c;同时也包含一些其他的适配器&#xff0c;支…

程序员老在改Bug,就不能一次改好吗?

作者丨伍杏玲来源 | 程序人生&#xff08;ID&#xff1a;coder_life&#xff09;程序员的日常三件事&#xff1a;写Bug、改Bug、背锅。连程序员都自我调侃道&#xff0c;为什么每天都在加班&#xff1f;因为我的眼里常含Bug。但是真的有这么多Bug要改吗&#xff1f;就不能一次改…

一场库文件的远程修复

一场库文件的远程修复系统环境RHEL 4.7一、原因&#xff1a;发现每天早上7点1分备份的数据库文件时间不对&#xff0c;登录上去后date下发现时间是正确。二、尝试解决&#xff1a;1&#xff09;setup->Timezone configuration-> Asia/Shanghai保存后&#xff0c;发现由原…

linux驱动:音频驱动(四)ASoc之machine设备

linux驱动&#xff1a;音频驱动&#xff08;四&#xff09;ASoc之machine设备

Sql server Insert执行的秘密(下) 带外键的INSERT分析

2019独角兽企业重金招聘Python工程师标准>>> 这一篇分析一下带外键表的INSERT的例子。 本文所用的数据表结构如上图所示&#xff1b;其中Blog表上BlogID是自增的主键&#xff0c;并在CreateUserID和CreateTime列上分别建有两个非唯一索引。 我们要往Blog表中插入一…

熬夜写代码,不如换女装入GitHub获上千Star?

作者 | 琥珀出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;程序员如何以合规手段快速获得 GitHub 上千 Star&#xff1f;新年刚过&#xff0c;GitHub Trending 上一个名为“Dress”的开源项目迅速蹿红&#xff0c;并成功掀起了不少程序员及吃瓜群众的热议。项目地址…

CCNp笔记(EIGRP)

EIGRP<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />特性1属于混合路由协议具有距离矢量路由协议的特性&#xff0c;又有链路状态路由协议的特性。2属于高级距离矢量路由协议3快速收敛4保证100%无环路5增量更新6支持默认4条最多…

linux驱动:音频驱动(五)ASoc之codec驱动

linux驱动&#xff1a;音频驱动&#xff08;五&#xff09;ASoc之codec驱动

科大讯飞市值腰斩背后,AI产业集体思考如何落地?

作者丨郭敏本文经授权转载自钛媒体&#xff08;ID&#xff1a;taimeiti&#xff09;【导语】在过去的一年里&#xff0c;科大讯飞受到了多方质疑&#xff0c;质疑的声音不外乎盈利疲软、靠政府补助、技术优势逐渐变弱等&#xff0c;种种质疑背后&#xff0c;其实整个 AI 产业从…

zabbix系列之邮件告警(三)

设置邮件告警有两种方式&#xff1a;1&#xff09;、通过Linux自带的mail发送告警邮件2&#xff09;、通过第三方邮箱发送&#xff08;如QQ邮箱、163邮箱等&#xff09;告警邮件1、修改 zabbx_server.conf 文件,指定脚本路径&#xff0c;没有则添加[rootcentos1 ~]# vim /usr/l…