OpenI 启智社区

启智社区,确实给力

当前位置:首页 > 学习 > 实训 >

Pytorch深度学习

Pytorch深度学习

  • 来源:太原学院
  • 章节:15 单元:113

  • 白文江
进入实训课程

课程简介:

机器学习是一门具有前瞻性的学科,在现实世界的应用范围很窄。而那些应用,例如语音识别和计算机视觉,需要大量的领域知识,以至于它们通常被认为是完全独立的领域,而机器学习对于这些领域来说只是一个小组件。因此,神经网络——本课程中关注的深度学习模型的前身,被认为是过时的工具。
就在过去的五年里,深度学习给世界带来了惊喜,推动了计算机视觉、自然语言处理、自动语音识别、强化学习和统计建模等领域的快速发展。有了这些进步,我们现在可以制造比以往任何时候都更自主的汽车(不过可能没有一些公司试图让你相信的那么自主),可以自动起草普通邮件的智能回复系统,帮助人们从令人压抑的大收件箱中挖掘出来。在围棋等棋类游戏中,软件超越了世界上最优秀的人,这曾被认为是几十年后的事。这些工具已经对工业和社会产生了越来越广泛的影响,改变了电影的制作方式、疾病的诊断方式,并在基础科学中扮演着越来越重要的角色——从天体物理学到生物学。
全书大致可分为三个部分,如下图所示:

课程章节:

1. 深度学习概述

本章介绍深度学习的基本概念

2. 预备知识

要学习深度学习的相关知识,需要先掌握一些基本技能。所有机器学习方法都涉及从数据中提取信息,因此,我们先学习一些关于数据的实用技能,包括存储、操作和预处理数据。 机器学习通常需要处理大型数据集。我们可以将数据集视为表,其中表的行对应样本,列对应属性。线性代数为我们提供了一些用来处理表格数据的方法。我们不会太深入细节,而是将重点放在矩阵运算的基本原理及其实现上。 深度学习是关于优化的。我们有一个带有参数的模型,想要找到其中能拟合数据的最好模型。在算法的每个步骤中,决定以何种方式调整参数需要一点微积分知识。本节将简要介绍这些知识。幸运的是,autograd包会自动计算微分,本章也将介绍它。

3. 线性神经网络

在本章中,我们将介绍神经网络的整个训练过程,包括:定义简单的神经网络架构、数据处理、指定损失函数和如何训练模型。经典统计学习技术中的线性回归和softmax回归可以视为线性神经网络。为了更容易学习,我们将从这些经典算法开始,向你介绍神经网络的基础知识。这些知识将为本书其他部分中更复杂的技术奠定基础。

4. 多层感知机

在本章中,我们将介绍第一个真正的深度网络--多层感知机,它们由多层神经元组成,每一层都与下面一层(从中接收输入)和上面一层(反过来影响当前层的神经元)完全相连。当我们训练大容量模型时,我们面临着过拟合的风险。因此,我们需要为你提供第一次严格的概念介绍,包括过拟合、欠拟合和模型选择。为了帮助你解决这些问题,我们将介绍权重衰减和dropout等正则化技术。我们还将讨论数值稳定性和参数初始化相关的问题,这些问题是成功训练深度网络的关键。在整个过程中,我们的目标不仅是让你掌握概念,还希望让你掌握深度网络的实践方法。

5. 深度学习计算

到目前为止,我们已经介绍了一些基本的机器学习概念,并慢慢介绍了功能齐全的深度学习模型。在上一章中,我们从零开始实现了多层感知机的每个组件,然后展示了如何利用高级API轻松地实现相同的模型。为了易于学习,我们调用了深度学习库,但是跳过了它们工作的细节。在本章中,我们开始深入探索深度学习计算的关键组件,即模型构建、参数访问与初始化、设计自定义层和块、将模型读写到磁盘,以及利用GPU实现显著的加速。这些知识将使你从基础用户变为高级用户。虽然本章不介绍任何新的模型或数据集,但后面的高级模型章节在很大程度上依赖于本章的知识。

6. 卷积神经网络

本章介绍的卷积神经网络(convolutional neural network,CNN)是一类强大的、为处理图像数据而设计的神经网络。 基于卷积神经网络结构的模型在计算机视觉领域中已经占主导地位,当今几乎所有的图像识别、对象检测或语义分割相关的学术竞赛和商业应用都以这种方法为基础。 在本章的开始,我们将介绍构成所有卷积网络主干的基本元素。 这包括卷积层本身、填充(padding)和步幅(stride)的基本细节、用于在相邻区域的汇聚层(pooling)、在每一层中多通道(channel)的使用,以及有关现代卷积网络架构的仔细讨论。 在本章的最后,我们将介绍一个完整的、可运行的LeNet模型:

7. 现代卷积神经网络

上一章我们介绍了卷积神经网络的基本原理,本章我们将带你了解现代的卷积神经网络结构,许多现代卷积神经网络的研究都是建立在这一章的基础上的。 在本章中的每一个模型都曾一度占据主导地位,其中许多模型都是ImageNet竞赛的优胜者。ImageNet竞赛自2010年以来,一直是计算机视觉中监督学习进展的指向标。 虽然深度神经网络的概念非常简单——将神经网络堆叠在一起。但由于不同的网络结构和超参数选择,这些神经网络的性能会发生很大变化。 本章介绍的神经网络是将人类直觉和相关数学见解结合后,经过大量研究试错后的结晶。 我们会按时间顺序介绍这些模型,在追寻历史的脉络的同时,帮助你培养对该领域发展的直觉。

8. 循环神经网络

卷积神经网络可以有效地处理空间信息,循环神经网络(recurrent neural network, RNN)这种设计可以更好地处理序列信息。 循环神经网络通过引入状态变量存储过去的信息和当前的输入,从而可以确定当前的输出。 许多使用循环网络的例子都是基于文本数据的,因此我们将在本章中重点介绍语言模型。 在对序列数据进行更详细的回顾之后,我们将介绍文本预处理的实用技术。 然后,我们将讨论语言模型的基本概念,并将此讨论作为循环神经网络设计的灵感。 最后,我们描述了循环神经网络的梯度计算方法,以探讨训练此类网络时可能遇到的问题。

9. 现代循环神经网络

循环神经网络在实践中一个常见问题是数值不稳定性。 尽管我们已经应用了梯度裁剪等实现阶段的技巧来处理它,但是通过设计更复杂的序列模型可以进一步缓解这个问题。 具体来说,在实践中更常见的门控循环神经网络。 首先,我们将引入两个广泛使用的网络, 即 门控循环单元(gated recurrent units, GRU)和长短期记忆网络(long short-term memory, LSTM)。 然后,我们将基于迄今为止讨论过的一个单向隐藏层来扩展循环神经网络架构。

10. 注意力机制

在本章中,我们将首先回顾一个热门框架,解释如何在视觉场景中展开注意力。受此框架中的 注意力提示(attention cues)的启发,我们将设计能够利用这些注意力提示的模型。1964 年的 Nadaraya-Waston 核回归(kernel regression)正是具有 注意力机制(attention mechanisms)的机器学习的简单演示。

11. 优化算法

在本章中,我们深入探讨常见的深度学习优化算法。深度学习中出现的几乎所有优化问题都是非凸的。尽管如此,在凸问题背景下设计和分析算法是非常有启发性的。正是出于这个原因,本章包括了凸优化的入门,以及凸目标函数上非常简单的随机梯度下降算法的证明。

12. 计算性能

在深度学习中,数据集和模型通常都很大,导致计算量也会很大。因此,计算的性能非常重要。本章将集中讨论影响计算性能的主要因素:命令式编程、符号编程、异步计算、自动并行和多GPU计算。通过学习本章,你可以进一步提高前几章中实现的那些模型的计算性能。例如,我们可以在不影响准确性的前提下,减少训练时间。

13. 计算机视觉

近年来,深度学习一直是提高计算机视觉系统性能的变革力量。 无论是医疗诊断、自动驾驶车辆,还是智能滤镜、摄像头监控,许多计算机视觉领域的应用都与我们当前和未来的生活密切相关。 可以说,最先进的计算机视觉应用程序与深度学习几乎是不可分割的。 有鉴于此,本章将重点介绍计算机视觉领域,并探讨最近在学术界和行业中具有影响力的方法和应用。

14. 自然语言处理之预训练

自然语言处理是指研究使用自然语言的计算机和人类之间的交互。 在实践中,使用自然语言处理技术来处理和分析文本(人类自然语言)数据是非常常见的,例如8.3节的语言模型和9.5节的机器翻译模型。 要理解文本,我们可以从学习它的表示开始。利用来自大型语料库的现有文本序列, 自监督学习 已被广泛用于预训练文本表示,例如通过使用周围文本的其它部分来预测文本的隐藏部分。通过这种方式,模型可以通过有监督地从海量文本数据中学习,而不需要昂贵的标签标注!

15. 自然语言处理之应用

本章重点描述了使用不同类型的深度学习架构(如多层感知机、卷积神经网络、循环神经网络和注意力)设计自然语言处理模型的基本思想。尽管可以将任何预训练的文本表示与任何应用的架构相结合,但我们选择了一些具有代表性的组合。具体来说,我们将探索基于循环神经网络和卷积神经网络的流行架构进行情感分析。对于自然语言推断,我们选择注意力和多层感知机来演示如何分析文本对。最后,我们介绍了如何为广泛的自然语言处理应用,如在序列级(单文本分类和文本对分类)和词元级(文本标注和问答)上对预训练BERT模型进行微调。