参与:李泽南、张倩

李沐等人开源中文书《动手学深度学习》预览版上线

获得这本实体书最好的方法就是成为贡献者。

近日,由 Aston Zhang、李沐等人所著图书《动手学深度学习》放出了在线预览版,以供读者自由阅读。这是一本面向在校学生、工程师和研究人员的交互式深度学习书籍。

  • 在线书地址:https://zh.diveintodeeplearning.org/index.html

  • GitHub 项目:https://github.com/diveintodeeplearning/d2l-zh

这本书是亚马逊 MXNet 零基础深度学习课程的重要组成部分。课程内容推荐使用 Apache MXNet 的前端工具 Gluon 进行开发,可指导你在动手实践的过程中学会使用简单易读的代码,写出产品级的应用。

值得一提的是,该书以 Jupyter 记事本的形式呈现,读者可以操作其中的代码和参数来获取及时反馈,以此提高学习效率。

贡献者

本书的贡献者包括多位供职于亚马逊的科学家:

李沐亚马逊首席科学家,美国卡内基梅隆大学计算机系博士。

阿斯顿·张:亚马逊应用科学家,美国伊利诺伊大学香槟分校计算机科学博士。

扎卡里 C. 立顿:亚马逊应用科学家,美国卡内基梅隆大学助理教授,加州大学圣迭戈分校计算机科学博士。

亚历山大 J. 斯莫拉:亚马逊 ML 总监,德国柏林工业大学计算机科学博士。

此外,本书在开源社区还有 100 余位贡献者。作者表示,这一在线书「项目」仍然在不断发展当中,成为贡献者将可以获得专享版赠书,并被致谢。

交互:Jupyter 记事本+活跃的社区支持

每一小节都是可以运行的 Jupyter 记事本,你可以自由修改代码和参数来获取及时反馈,从而积累深度学习的实战经验。

  • Jupyter 记事本下载地址:http://zh.diveintodeeplearning.org/d2l-zh.zip

本书还有活跃的社区支持,可以通过每个章节最后的链接来同社区的数千名小伙伴一起讨论学习。

结构:公式 + 图示 + 代码

本书不仅结合文字、公式和图示来阐明深度学习里常用的模型和算法,还提供代码来演示如何从零开始实现它们,并使用真实数据来提供一个交互式的学习体验。

这三种展示方法能相互补充,很多算法可以通过图示加深对结构的理解,而如上图所示的 LSTM 等算法却需要公式才能理解具体结构。此外,不论是表达式还是图例,它们都不能包含完整的细节,很多具体细节不用代码是展示不出来的。

目录

引言

  • 前言

  • 深度学习简介

  • 如何使用本书

预备知识

  • 获取和运行本书代码

  • 数据操作

  • 自动求梯度

  • 查阅 MXNet 文档

深度学习基础

  • 线性回归

  • 线性回归的从零开始实现

  • 线性回归的 Gluon 实现

  • Softmax 回归

  • 图像分类数据集(Fashion-MNIST)

  • Softmax 回归的从零开始实现

  • Softmax 回归的 Gluon 实现

  • 多层感知机

  • 多层感知机的从零开始实现

  • 多层感知机的 Gluon 实现

  • 模型选择、欠拟合过拟合

  • 权重衰减

  • 丢弃法

  • 正向传播、反向传播和计算图

  • 数值稳定性和模型初始化

  • 实战 Kaggle 比赛:房价预测

深度学习计算

  • 模型构造

  • 模型参数的访问、初始化和共享

  • 模型参数的延后初始化

  • 自定义层

  • 读取和存储

  • GPU 计算

卷积神经网络

  • 二维卷积层

  • 填充和步幅

  • 多输入通道和多输出通道

  • 池化

  • 卷积神经网络LeNet

  • 深度卷积神经网络AlexNet

  • 使用重复元素的网络(VGG

  • 网络中的网络(NiN)

  • 含并行连结的网络(GoogLeNet

  • 批量归一化

  • 残差网络(ResNet)

  • 稠密连接网络(DenseNet

循环神经网络

  • 语言模型

  • 循环神经网络

  • 语言模型数据集(周杰伦专辑歌词)

  • 循环神经网络的从零开始实现

  • 循环神经网络的 Gluon 实现

  • 通过时间反向传播

  • 门控循环单元(GRU)

  • 长短期记忆(LSTM

  • 深度循环神经网络

  • 双向循环神经网络

优化算法

  • 优化与深度学习

  • 梯度下降和随机梯度下降

  • 小批量随机梯度下降

  • 动量

  • Adagrad

  • RMSProp

  • Adadelta

  • Adam

计算性能

  • 命令式和符号式混合编程

  • 异步计算

  • 自动并行计算

  • 多 GPU 计算

  • 多 GPU 计算的 Gluon 实现

计算机视觉

  • 图像增广

  • 微调

  • 目标检测和边界框

  • 锚框

  • 多尺度目标检测

  • 目标检测数据集(皮卡丘)

  • 单发多框检测(SSD

  • 区域卷积神经网络(R-CNN)系列

  • 语义分割和数据集

  • 全卷积网络(FCN)

  • 样式迁移

  • 实战 Kaggle 比赛:图像分类(CIFAR-10)

  • 实战 Kaggle 比赛:狗的品种识别 (ImageNet Dogs)

自然语言处理

  • 词嵌入word2vec

  • 近似训练

  • Word2vec 的实现

  • 词嵌入fastText

  • 全局向量的词嵌入GloVe

  • 求近义词和类比词

  • 文本情感分类:使用循环神经网络

  • 文本情感分类:使用卷积神经网络(textCNN)

  • 编码器—解码器(seq2seq)

  • 束搜索

  • 注意力机制

  • 机器翻译

附录

  • 主要符号一览

  • 数学基础

  • 使用 Jupyter 笔记本

  • 使用 AWS 运行代码

  • GPU 购买指南

  • 如何为本书贡献

  • gluonbook 包索引

在本书上线之前,李沐等人还推出了《动手学深度学习》系列视频,这门课程的第一季已经于今年 2 月份结束,共 19 课。李沐博士对此系列视频进行了整理,有需求的同学可通过以下视频学习。

  • 课程视频:https://space.bilibili.com/209599371/#/channel/detail?cid=23541

入门MXNet书籍
141
相关数据
AWS机构

亚马逊网络服务系统(英语:Amazon Web Services,缩写为AWS),由亚马逊公司所创建的云计算平台,提供许多远程Web服务。Amazon EC2与Amazon S3都架构在这个平台上。在2002年7月首次公开运作,提供其他网站及客户端(client-side)的服务。截至2007年7月,亚马逊公司宣称已经有330,000名开发者,曾经登录过这项服务。

相关技术
亚马逊机构

亚马逊(英语:Amazon.com Inc.,NASDAQ:AMZN)是一家总部位于美国西雅图的跨国电子商务企业,业务起始于线上书店,不久之后商品走向多元化。目前是全球最大的互联网线上零售商之一,也是美国《财富》杂志2016年评选的全球最大500家公司的排行榜中的第44名。

https://www.amazon.com/
相关技术
李沐人物

李沐,2008年毕业于上海交通大学计算机系,大学期间,曾在微软亚洲研究院担任实习生。2017年博士毕业后,李沐加入亚马逊任AI主任科学家。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

全卷积网络技术

全卷积网络最开始在论文 Fully Convolutional Networks for Semantic Segmentation(2015)中提出,它将传统卷积神经网络最后几个全连接层替换为卷积层。引入全卷积的意义在于它能实现密集型的预测,即在二维卷积下对图像实现像素级的分类,在一维卷积下对序列实现元素级的预测。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

欠拟合技术

使用太少参数,以致于不能很好的拟合数据,称为拟合不足(欠拟合)现象

GloVe技术

Stanford开发的用于词向量表示的一个库/工具

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

词嵌入技术

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

LeNet技术

LeNet 诞生于 1994 年,是最早的卷积神经网络之一,并且推动了深度学习领域的发展。自从 1988 年开始,在许多次成功的迭代后,这项由 Yann LeCun 完成的开拓性成果被命名为 LeNet5。LeNet5 的架构基于这样的观点:(尤其是)图像的特征分布在整张图像上,以及带有可学习参数的卷积是一种用少量参数在多个位置上提取相似特征的有效方式。在那时候,没有 GPU 帮助训练,甚至 CPU 的速度也很慢。因此,能够保存参数以及计算过程是一个关键进展。这和将每个像素用作一个大型多层神经网络的单独输入相反。LeNet5 阐述了那些像素不应该被使用在第一层,因为图像具有很强的空间相关性,而使用图像中独立的像素作为不同的输入特征则利用不到这些相关性。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

门控循环单元技术

门控循环单元(GRU)是循环神经网络(RNN)中的一种门控机制,与其他门控机制相似,其旨在解决标准RNN中的梯度消失/爆炸问题并同时保留序列的长期信息。GRU在许多诸如语音识别的序列任务上与LSTM同样出色,不过它的参数比LSTM少,仅包含一个重置门(reset gate)和一个更新门(update gate)。

线性回归技术

在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系。由X可以部分地决定Y的值,但这种决定往往不很确切。常常用来说明这种依赖关系的最简单、直观的例子是体重与身高,用Y表示他的体重。众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y。又如,城市生活用电量Y与气温X有很大的关系。在夏天气温很高或冬天气温很低时,由于室内空调、冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少。但我们不能由气温X准确地决定用电量Y。类似的例子还很多,变量之间的这种关系称为“相关关系”,回归模型就是研究相关关系的一个有力工具。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

GoogLeNet技术

同样在2014年,谷歌提出了 GoogLeNet(或Inception-v1)。该网络共有22层,且包含了非常高效的Inception模块,它同样没有如同VGG-Net那样大量使用全连接网络,因此参数量非常小。GoogLeNet最大的特点就是使用了Inception模块,它的目的是设计一种具有优良局部拓扑结构的网络,即对输入图像并行地执行多个卷积运算或池化操作,并将所有输出结果拼接为一个非常深的特征图。

Alex网络技术

AlexNet是一个卷积神经网络的名字,最初是与CUDA一起使用GPU支持运行的,AlexNet是2012年ImageNet竞赛冠军获得者Alex Krizhevsky设计的。该网络达错误率大大减小了15.3%,比亚军高出10.8个百分点。AlexNet是由SuperVision组设计的,由Alex Krizhevsky, Geoffrey Hinton和Ilya Sutskever组成。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

fastText技术

Facebook开发的文本处理工具,是一个用于高效学习单词表示和句子分类的库。

MXNet技术

MXNet是开源的,用来训练部署深层神经网络的深度学习框架。它是可扩展的,允许快速模型训练,并灵活支持多种语言(C ++,Python,Julia,Matlab,JavaScript, Go,R,Scala,Perl,Wolfram语言)

word2vec技术

Word2vec,为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。 训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。该向量为神经网络之隐藏层。 Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。该算法渐渐被其他人所分析和解释。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

语义分割技术

语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类。图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。

密集型连接网络技术

Gao Huang等研究者提出了DenseNet,该论文获得了CVPR 2017的最佳论文。DenseNet的目标是提升网络层级间信息流与梯度流的效率,并提高参数效率。它也如同ResNet那样连接前层特征图与后层特征图,但DenseNet并不会像ResNet那样对两个特征图求和,而是直接将特征图按深度相互拼接在一起。DenseNet最大的特点即每一层的输出都会作为后面所有层的输入,这样最后一层将拼接前面所有层级的输出特征图。这种结构确保了每一层能从损失函数直接访问到梯度,因此可以训练非常深的网络。

动量技术

优化器的一种,是模拟物理里动量的概念,其在相关方向可以加速SGD,抑制振荡,从而加快收敛

长短期记忆网络技术

长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network)。 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成。它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的随时间反向传播中权重消失的问题(vanishing gradient problem over backpropagation-through-time),重要组成部分包括Forget Gate, Input Gate, 和 Output Gate, 分别负责决定当前输入是否被采纳,是否被长期记忆以及决定在记忆中的输入是否在当前被输出。Gated Recurrent Unit 是 LSTM 众多版本中典型的一个。因为它具有记忆性的功能,LSTM经常被用在具有时间序列特性的数据和场景中。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

图网技术

ImageNet 是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库。

Jupyter技术

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

推荐文章
北京航空航天大学・飞行器设计与工程(航天)--结构优化・本科(目前研一)
666