《动手学习深度学习》预备知识——线性代数

线性代数

🏷sec_linear-algebra

在你已经可以存储和操作数据后,让我们简要地回顾一下部分基本线性代数内容。
这些内容能够帮助你了解和实现本书中介绍的大多数模型。
本节我们将介绍线性代数中的基本数学对象、算术和运算,并用数学符号和相应的代码实现来表示它们。

标量 0阶张量

如果你曾经在餐厅支付餐费,那么你已经知道一些基本的线性代数,比如在数字间相加或相乘。
例如,北京的温度为 5 2 ∘ F 52^{\circ}F 52F(除了摄氏度外,另一种温度计量单位)。
严格来说,我们称仅包含一个数值的叫标量(scalar)。
如果要将此华氏度值转换为更常用的摄氏度,
则可以计算表达式 c = 5 9 ( f − 32 ) c=\frac{5}{9}(f-32) c=95(f32),并将 f f f赋为 52 52 52
在此等式中,每一项( 5 5 5 9 9 9 32 32 32)都是标量值。
符号 c c c f f f称为变量(variable),它们表示未知的标量值。

在本书中,我们采用了数学表示法,其中标量变量由普通小写字母表示(例如, x x x y y y z z z)。
我们用 R \mathbb{R} R表示所有(连续)实数标量的空间。
我们之后将严格定义空间(space)是什么,
但现在你只要记住表达式 x ∈ R x\in\mathbb{R} xR是表示 x x x是一个实值标量的正式形式。
符号 ∈ \in 称为“属于”,它表示“是集合中的成员”。
我们可以用 x , y ∈ { 0 , 1 } x, y \in \{0,1\} x,y{ 0,1}来表明 x x x y y y是值只能为 0 0 0 1 1 1的数字。

(标量由只有一个元素的张量表示)。
在下面的代码中,我们实例化两个标量,并执行一些熟悉的算术运算,即加法、乘法、除法和指数。

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 \mathbf{x} x y \mathbf{y} y z ) \mathbf{z}) z))。

我们通过一维张量处理向量。一般来说,张量可以具有任意长度,取决于机器的内存限制。

x = torch.arange(4)
x
tensor([0, 1, 2, 3])

我们可以使用下标来引用向量的任一元素。
例如,我们可以通过 x i x_i xi来引用第 i i i个元素。
注意,元素 x i x_i xi是一个标量,所以我们在引用它时不会加粗。
大量文献认为列向量是向量的默认方向,在本书中也是如此。
在数学中,向量 x \mathbf{x} x可以写为:

x = [ x 1 x 2 ⋮ x n ] , \mathbf{x} =\begin{bmatrix}x_{1} \\x_{2} \\ \vdots \\x_{n}\end{bmatrix}, x=x1x2xn,
:eqlabel:eq_vec_def

其中 x 1 , … , x n x_1,\ldots,x_n x1,,xn是向量的元素。在代码中,我们(通过张量的索引来访问任一元素)。

x[3]
tensor(3)

长度、维度和形状

向量只是一个数字数组,就像每个数组都有一个长度一样,每个向量也是如此。
在数学表示法中,如果我们想说一个向量 x \mathbf{x} x n n n个实值标量组成,
我们可以将其表示为 x ∈ R n \mathbf{x}\in\mathbb{R}^n xRn
向量的长度通常称为向量的维度(dimension)。

与普通的Python数组一样,我们可以通过调用Python的内置len()函数来[访问张量的长度]。

len(x)
4

当用张量表示一个向量(只有一个轴)时,我们也可以通过.shape属性访问向量的长度。
形状(shape)是一个元素组,列出了张量沿每个轴的长度(维数)。
对于(只有一个轴的张量,形状只有一个元素。)

x.shape
torch.Size([4])

请注意,维度(dimension)这个词在不同上下文时往往会有不同的含义,这经常会使人感到困惑。
为了清楚起见,我们在此明确一下:
向量的维度被用来表示向量的长度,即向量或轴的元素数量。
然而,张量的维度用来表示张量具有的轴数。
在这个意义上,张量的某个轴的维数就是这个轴的长度。

矩阵

正如向量将标量从零阶推广到一阶,矩阵将向量从一阶推广到二阶。
矩阵,我们通常用粗体、大写字母来表示
(例如, X \mathbf{X} X Y \mathbf{Y} Y Z \mathbf{Z} Z),
在代码中表示为具有两个轴的张量。

在数学表示法中,我们使用 A ∈ R m × n \mathbf{A} \in \mathbb{R}^{m \times n} ARm×n
来表示矩阵 A \mathbf{A} A,其由 m m m行和 n n n列的实值标量组成。
我们可以将任意矩阵 A ∈ R m × n \mathbf{A} \in \mathbb{R}^{m \times n} ARm×n视为一个表格,
其中每个元素 a i j a_{ij} aij属于第 i i i行第 j j j列:

A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] . \mathbf{A}=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \\ \end{bmatrix}. A=a11a21am1a12a22am2a1na2namn.
:eqlabel:eq_matrix_def

对于任意 A ∈ R m × n \mathbf{A} \in \mathbb{R}^{m \times n} ARm×n
A \mathbf{A} A的形状是( m m m, n n n)或 m × n m \times n m×n
当矩阵具有相同数量的行和列时,其形状将变为正方形;
因此,它被称为方阵(square matrix)。

当调用函数来实例化张量时,
我们可以[通过指定两个分量 m m m n n n来创建一个形状为 m × n m \times n m×n的矩阵]。

A = torch.arange(20).reshape(5, 4)
A
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15],
        [16, 17, 18, 19]])

我们可以通过行索引( i i i)和列索引( j j j)来访问矩阵中的标量元素 a i j a_{ij} aij
例如 [ A ] i j [\mathbf{A}]_{ij} [A]ij
如果没有给出矩阵 A \mathbf{A} A的标量元素,如在 :eqref:eq_matrix_def那样,
我们可以简单地使用矩阵 A \mathbf{A} A的小写字母索引下标 a i j a_{ij} aij
来引用 [ A ] i j [\mathbf{A}]_{ij} [A]ij
为了表示起来简单,只有在必要时才会将逗号插入到单独的索引中,
例如 a 2 , 3 j a_{2,3j} a2,3j [ A ] 2 i − 1 , 3 [\mathbf{A}]_{2i-1,3} [A]2i1,3

当我们交换矩阵的行和列时,结果称为矩阵的转置(transpose)。
我们用 a ⊤ \mathbf{a}^\top a来表示矩阵的转置,如果 B = A ⊤ \mathbf{B}=\mathbf{A}^\top B=A
则对于任意 i i i j j j,都有 b i j = a j i b_{ij}=a_{ji} bij=aji

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

By_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值