持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
之前我们说过了数据操作以及预处理的知识,对于里面用到的线性代数和概率的知识,我们在本篇文章中详细描述。
线性代数
标量
仅包含一个数值的我们称之为 标量(scalar),它由只有一个元素的张量表示。
- 在深度学习中,标量通常由普通小写字母表示(例如,、和);
- 用 表示所有(连续)实数标量的空间,那么表达式是表示是一个实值标量的整式形式,例如表明和是值只能为或的数字。
在下面的代码中,我们实例化两个标量,并使用它们执行一些熟悉的算术运算,即加法、乘法、除法和指数。
import torch
x = torch.tensor([3.0])
y = torch.tensor([2.0])
x + y, x * y, x / y, x**y
# 运行结果
(tensor([5.]), tensor([6.]), tensor([1.5000]), tensor([9.]))
向量
1. 向量表示
我们可以将向量视为标量值组成的列表,这些标量值称为向量的元素(element)或分量(component)。
当我们使用向量表示数据集中的样本时,它们的值具有一定的现实意义。例如,如果我们正在训练一个模型来预测贷款违约风险,我们可能会将每个申请人与一个向量相关联,其分量与其收入、工作年限、过往违约次数和其他因素相对应。如果我们正在研究医院患者可能面临的心脏病发作风险,我们可能会用一个向量来表示每个患者,其分量为最近的生命体征、胆固醇水平、每天运动时间等。
通常将向量记为粗体、小写的符号(例如,、和。
我们使用一维张量处理向量x = torch.arange(6),使用下标来引用向量的任一元素。例如,我们可以通过来引用第个元素。注意,元素是一个标量,大量文献中都会默认列向量是向量的默认方向。在数学中,向量可以写为:
其中是向量的元素。
2. 向量维度
向量只是一个数字数组。就像每个数组都有一个长度一样,每个向量也是如此。在数学表示法中,如果我们想说一个向量由个实值标量组成,我们可以将其表示为。
向量的长度通常称为向量的维度(dimension)。
当用张量表示一个向量(只有一个轴)时,我们可以通过.shape属性访问向量的长度。形状(shape)是一个元组,列出了张量沿每个轴的长度(维数),对于只有一个轴的张量,形状只有一个元素。
x.shape # torch.Size([4])
为什么我会着重强调这个概念呢,因为维度(dimension)这个词在不同上下文往往会有不同的含义,这经常会使人感到困惑。
- 向量 或 轴的维度 被用来表示向量或轴的长度,即向量或轴的元素数量。
- 张量的维度 用来表示张量具有的轴数。在这个意义上,张量的某个轴的维数就是这个轴的长度。
矩阵
1. 矩阵定义
向量将标量从零阶推广到一阶,矩阵将向量从一阶推广到二阶。
矩阵,我们通常用粗体、大写字母来表示(例如,、和),在代码中表示为具有两个轴的张量。
在数学表示法中,我们使用来表示矩阵,其由行和列的实值标量组成。直观地,我们可以将任意矩阵视为一个表格,其中每个元素属于第行第列:
对于任意,的形状是(,)或。当矩阵具有相同数量的行和列时,我们称之为方矩阵(square matrix)。
当调用函数来实例化张量时,我们可以通过指定两个分量和来创建一个形状为的矩阵。
A = torch.arange(20).reshape(5, 4)
A
2. 矩阵的转置
当我们交换矩阵的行和列时,可以得到一个新的矩阵,我们称之为矩阵的转置(transpose),用来表示矩阵的转置。
-
如果,则对于任意和,都有。
-
作为方矩阵的一种特殊类型,对称矩阵(symmetric matrix)等于其转置:。
3. 哈达玛积
两个矩阵按元素相乘称为哈达玛积(Hadamard product)(数学符号)。
对于矩阵,,其中矩阵 和 矩阵 第行和第列的元素分别为,。那么这两个矩阵的哈达玛积为:
点积(Dot Product)
线性代数中最基本的操作之一是点积。给定两个向量,它们的点积 (或)是相同位置的按元素乘积的和:
- 。
y = torch.ones(4, dtype = torch.float32)
x, y, torch.dot(x, y)
# tensor([0., 1., 2., 3.]), tensor([1., 1., 1., 1.]), tensor(6.)
点积在很多场合都有用。例如,给定一组由向量表示的值,和一组由表示的权重。中的值根据权重的加权和可以表示为点积。当权重为非负数且和为1(即)时,点积表示加权平均(weighted average)。将两个向量归一化得到单位长度后,点积表示它们夹角的余弦。
概率
在某种形式上,机器学习就是做出预测。举例说明
例一:如图所示,我们很容易的可以从像素的分辨率识别出狗,但它在像素上变得具有挑战性,而且在像素下几乎是不可能的。换句话说,我们在很远的距离(从而降低分辨率)区分狗的能力可能会接近不知情的猜测。
概率给了我们一种正式的途径来说明我们的确定性水平。
- 如果我们完全肯定图像是一只狗,我们说标签是"狗"的概率,表示为"狗"等于;
- 如果我们没有证据表明“猫”或“狗”,那么我们可以说这两种可能性是等可能的,把它表示为"猫""狗";
- 如果我们有足够的信心,但不确定图像描绘的是一只狗,我们可以将概率赋值为"狗"。
例二,给出一些天气监测数据,我们想预测明天金华下雨的概率。如果是夏天,下雨的概率是0.5。
在这两种情况下,我们都不确定结果。但这两种情况之间有一个关键区别。在第一种情况中,图像实际上是狗或猫,我们只是不知道哪个。在第二种情况下,结果实际上可能是一个随机的事件。因此,概率是一种灵活的语言,用于说明我们的确定程度。
联合概率
联合概率(joint probability)。给定任何值和,联合概率可以回答,和的概率是多少。
请注意,对于任何和的取值,。这点是确定的,因为要同时发生和,就必须发生,也必须发生(反之亦然)。因此,和同时发生的可能性不大于或是单独发生的可能性。
条件概率
我们称下面比率为条件概率(conditional probability),并用表示它:它是的概率,前提是已发生。
- 。
期望和差异
为了概括概率分布的关键特征,我们需要一些测量方法。
随机变量的期望(或平均值)表示为
当函数的输入是从分布中抽取的随机变量时,的期望值为
在许多情况下,我们希望衡量随机变量与其期望值的偏置。这可以通过方差来量化
方差的平方根被称为标准差(standared deviation)。
随机变量函数的方差衡量的是,当从该随机变量分布中采样不同值时,函数值偏离该函数的期望的程度:
总结
这部分的数学知识还是很重要的,但本文涉及的知识面并没有那么全,只是讲了论文中经常用到的数学知识。如果想要了解更多,大家可以在掘金平台上再搜索补习下相关知识。同时对于本文所叙述的内容,我概括了以下几点:
- 标量、向量、矩阵和张量是线性代数中的基本数学对象。
- 向量泛化自标量,矩阵泛化自向量。
- 标量、向量、矩阵和张量分别具有零、一、二和任意数量的轴。