动手学深度学习-02-课程学习计划及在 Windows WSL 安装环境

本课程将从零开始教授深度学习。同学们只需要有基础的Python编程和数学基础。我们将覆盖四大类模型:多层感知机、卷积神经网络、循环神经网络、和注意力机制。在此之上,我们将介绍深度学习中的两大应用领域—计算机视觉和自然语言处理—中的典型任务。

本课程的一大特点是不仅讲述模型算法,同时会将每一处细节都讲述如何用PyTorch进行实现。这样同学们可以在真实数据上获得第一手经验。我们将举办四次课程竞赛,让同学们实践学习到的知识如何解决实际问题。

file

1.2. 机器学习中的关键组件

首先介绍一些核心组件。无论什么类型的机器学习问题,都会遇到这些组件:

    1. 可以用来学习的数据(data);
    1. 如何转换数据的模型(model);
    1. 一个目标函数(objective function),用来量化模型的有效性;
    1. 调整模型参数以优化目标函数的算法(algorithm)。

1.2.1. 数据

毋庸置疑,如果没有数据,那么数据科学毫无用武之地。 有一句古语很好地反映了这个现象:“输入的是垃圾,输出的也是垃圾。”(“Garbage in, garbage out.”)

1.2.2. 模型

大多数机器学习会涉及到数据的转换。 比如一个“摄取照片并预测笑脸”的系统。再比如通过摄取到的一组传感器读数预测读数的正常与异常程度。 虽然简单的模型能够解决如上简单的问题,但本书中关注的问题超出了经典方法的极限。 深度学习与经典方法的区别主要在于:前者关注的功能强大的模型,这些模型由神经网络错综复杂的交织在一起,包含层层数据转换,因此被称为深度学习(deep learning)。 在讨论深度模型的过程中,本书也将提及一些传统方法。

1.3.1.6. 序列学习

以上大多数问题都具有固定大小的输入和产生固定大小的输出。 例如,在预测房价的问题中,我们考虑从一组固定的特征:房屋面积、卧室数量、浴室数量、步行到市中心的时间; 图像分类问题中,输入为固定尺寸的图像,输出则为固定数量(有关每一个类别)的预测概率; 在这些情况下,模型只会将输入作为生成输出的“原料”,而不会“记住”输入的具体内容。

如果输入的样本之间没有任何关系,以上模型可能完美无缺。 但是如果输入是连续的,模型可能就需要拥有“记忆”功能。 比如,我们该如何处理视频片段呢? 在这种情况下,每个视频片段可能由不同数量的帧组成。 通过前一帧的图像,我们可能对后一帧中发生的事情更有把握。 语言也是如此,机器翻译的输入和输出都为文字序列。

再比如,在医学上序列输入和输出就更为重要。 设想一下,假设一个模型被用来监控重症监护病人,如果他们在未来24小时内死亡的风险超过某个阈值,这个模型就会发出警报。 我们绝不希望抛弃过去每小时有关病人病史的所有信息,而仅根据最近的测量结果做出预测。

这些问题是序列学习的实例,是机器学习最令人兴奋的应用之一。 序列学习需要摄取输入序列或预测输出序列,或两者兼而有之。 具体来说,输入和输出都是可变长度的序列,例如机器翻译和从语音中转录文本。 虽然不可能考虑所有类型的序列转换,但以下特殊情况值得一提。

标记和解析。这涉及到用属性注释文本序列。 换句话说,输入和输出的数量基本上是相同的。 例如,我们可能想知道动词和主语在哪里,或者可能想知道哪些单词是命名实体。 通常,目标是基于结构和语法假设对文本进行分解和注释,以获得一些注释。 这听起来比实际情况要复杂得多。 下面是一个非常简单的示例,它使用“标记”来注释一个句子,该标记指示哪些单词引用命名实体。 标记为“Ent”,是实体(entity)的简写。

Tom has dinner in Washington with Sally
Ent  -    -    -     Ent      -    Ent

安装环境

在Windows 的 WSL(Ubuntu)环境中安装

# 0、切换root
su root

# 1、更新包列表
sudo apt update

# 2、安装依赖项
sudo apt install -y software-properties-common

# 3、安装miniconda
# miniconda库:https://repo.anaconda.com/miniconda/
# https://repo.anaconda.com/miniconda/Miniconda3-py39_24.9.2-0-Linux-x86_64.sh
mkdir -p /data/env
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_24.9.2-0-Linux-x86_64.sh

# 文件名可能会更改
sh Miniconda3-py39_24.9.2-0-Linux-x86_64.sh -b

# 执行
root@kaiyi:/data/env# sh Miniconda3-py39_24.9.2-0-Linux-x86_64.sh -b
PREFIX=/root/miniconda3
Unpacking payload ...

Installing base environment...

Preparing transaction: ...working... done
Executing transaction: ...working... done
installation finished.
root@kaiyi:/data/env#

接下来,初始化终端Shell,以便我们可以直接运行conda。

~/miniconda3/bin/conda init

现在关闭并重新打开当前的shell。并使用下面的命令创建一个新的环境:

conda create --name d2l python=3.9 -y

现在激活 d2l 环境:

conda activate d2l

file

安装深度学习框架和d2l软件包

我们可以按如下方式安装PyTorch的CPU或GPU版本:

pip install torch==1.12.0
pip install torchvision==0.13.0

我们的下一步是安装d2l包,以方便调取本书中经常使用的函数和类:

pip install d2l==0.17.6

下载 D2L Notebook

接下来,需要下载这本书的代码。 可以点击本书HTML页面顶部的“Jupyter 记事本”选项下载后解压代码,或者可以按照如下方式进行下载:

cd data
mkdir d2l-zh && cd d2l-zh
curl https://zh-v2.d2l.ai/d2l-zh-2.0.0.zip -o d2l-zh.zip
unzip d2l-zh.zip && rm d2l-zh.zip
cd pytorch

# 完整目录
cd /data/d2l-zh/pytorch

注意:如果没有安装unzip,则可以通过运行 sudo apt install unzip 进行安装。

安装完成后我们可以通过运行以下命令打开Jupyter笔记本(在Window系统的命令行窗口中运行以下命令前,需先将当前路径定位到刚下载的本书代码解压后的目录):

jupyter notebook

# 以root用户启动
jupyter notebook --allow-root

file

现在可以在Web浏览器中打开 http://localhost:8888(通常会自动打开) 。 由此,我们可以运行这本书中每个部分的代码。 在运行书籍代码、更新深度学习框架或d2l软件包之前,请始终执行conda activate d2l以激活运行时环境。 要退出环境,请运行conda deactivate。

file


相关文章:
动手学深度学习课程安排 | https://courses.d2l.ai/zh-v2/
动手学深度学习-01-环境安装

为者常成,行者常至