第2章 使用PyTorch进行深度学习

本章内容

PyTorch张量及其基本运算

在PyTorch中准备深度学习使用的数据

使用PyTorch构建和训练深度神经网络

利用深度学习进行二分类和多类别分类

创建验证集以确定何时停止训练

在本书中,我们将使用深度神经网络生成各种内容,包括文本、图像、图形、音乐等。本书假设读者已经掌握机器学习的基础知识,尤其是人工神经网络的内部原理,也对人工神经网络有所了解。

本章将带领读者复习一些关键概念,如损失函数(loss function)、激活函数(activation function)、优化器(optimizer)和学习率(learning rate),它们是开发和训练深度神经网络不可或缺的要素。如果读者对这些概念还存在知识缺口,强烈建议读者在进一步学习本书内容之前弥补这些空白。附录B简要总结了需要掌握的基础技能和概念,以及与人工神经网络的架构和训练有关的信息。

注意

有很多优秀的机器学习图书可供选择。《机器学习实战:基于Scikit-Learn、Keras和TensorFlow(原书第2版)》(Hands-on Machine Learning with Scikit-Learn, Keras and TensorFlow)和Machine Learning, Animated(CRC Press,2023)都使用TensorFlow创建神经网络。如果你更喜欢使用PyTorch,则推荐阅读《PyTorch深度学习实战》(Deep Learning with PyTorch)。

生成式人工智能模型经常面临二分类(binary classification)或多类别分类(multi-category classification)任务。例如在生成对抗网络中,判别器扮演着二分类器的重要角色,其目的是区分生成器创建的虚假样本和训练集中的真实样本。同样,在文本生成模型中,无论循环神经网络或是Transformer,其首要目标都是从大量可能性中预测后续的字符或单词(本质上这也是一种多类别分类任务)。

本章将介绍如何使用PyTorch创建能执行二分类和多类别分类的深度神经网络,借此帮助读者掌握深度学习和分类任务。

具体来说,我们将在PyTorch中完成一个端到端深度学习项目,探索如何将服装的灰度图像分类为不同类别,如外套、包、运动鞋、衬衫等。这个项目为我们创建深度神经网络做好准备,借此我们将能利用PyTorch执行二分类和多类别分类任务。这也会让我们为本书后续章节做好准备,帮助我们在PyTorch中使用深度神经网络创建各种生成模型。

为了训练生成式人工智能模型,我们需要利用各种数据格式,如原始文本、音频文件、图像像素和数字数组。在PyTorch中创建的深度神经网络无法直接将这些形式的数据作为输入,因为我们必须先将其转换成神经网络能够理解和接受的格式。具体来说,需要把各种形式的原始数据转换成PyTorch张量(用于表示数据和操控数据的基本数据结构),然后再将它们输入生成式人工智能模型。因此,本章还将介绍数据类型的基础知识、创建各种形式的PyTorch张量的方法,以及在深度学习中使用这些张量的方法。

分类(classification)任务的执行在实践中有很多实际应用。分类被广泛应用于医疗诊断领域,例如判断患者是否患有某种疾病(如根据医学影像或检测结果确定是否患有某种癌症)。在很多商业任务(如股票推荐、信用卡欺诈检测等)中,分类也发挥着重要作用。分类任务还是我们日常使用的许多系统和服务不可或缺的一部分,如垃圾邮件检测和人脸识别。