动手学深度学习——线性代数

本文深入探讨了数学基础知识,如标量、向量和矩阵在人工智能领域的运用,包括它们的运算规则、长度计算、正交性和特殊矩阵的概念。此外,还介绍了矩阵乘法、特征向量与特征值、范数等重要概念,并通过Python的torch库展示了相关代码示例,揭示了这些数学工具在AI模型训练和数据处理中的核心作用。
摘要由CSDN通过智能技术生成

标量

简单操作
c = a + b c = a ⋅ b c = s i n a c = a + b \\ c = a \cdot b \\ c = sina c=a+bc=abc=sina
长度
∣ a ∣ = { a i f a > 0 − a o t h e r w i s e ∣ a + b ∣ ≤ ∣ a ∣ + ∣ b ∣ ∣ a ⋅ b ∣ = ∣ a ∣ ⋅ ∣ b ∣ |a| = \left \{ \begin{aligned} a \quad if a>0 \\ -a \quad otherwise\end{aligned} \right. \\ |a+b| \leq |a| + |b| \\ |a \cdot b| = |a|\cdot|b| a={aifa>0aotherwisea+ba+bab=ab

向量

简单操作
c = a + b w h e r e c i = a i + b i c = α ⋅ b w h e r e c i = α b i c = s i n a w h e r e c i = sin ⁡ a i c = a + b \quad where \quad c_i = a_i + b_i \\ c = \alpha \cdot b \quad where \quad c_i = \alpha b_i\\ c = sina \quad where \quad c_i = \sin a_i c=a+bwhereci=ai+bic=αbwhereci=αbic=sinawhereci=sinai
长度
∣ ∣ a ∣ ∣ = [ ∑ i = 1 m a i 2 ] 1 2 ∣ ∣ a ∣ ∣ ≥ 0 f o r a l l a ∣ ∣ a + b ∣ ∣ ≤ ∣ ∣ a ∣ ∣ + ∣ ∣ b ∣ ∣ ∣ ∣ a ⋅ b ∣ ∣ = ∣ a ∣ ⋅ ∣ ∣ b ∣ ∣ ||a|| = [\sum_{i=1}^m a_i^2]^{1 \over 2} \\ ||a|| \geq 0 \quad for \quad all \quad a \\ ||a+b|| \leq ||a|| + ||b|| \\ ||a \cdot b|| = |a|\cdot||b|| a=[i=1mai2]21a0forallaa+ba+bab=ab
点乘
a T b = ∑ i a i b i a^Tb = \sum_i a_ib_i aTb=iaibi
正交
a T b = ∑ i a i b i = 0 a^Tb=\sum_ia_ib_i=0 aTb=iaibi=0

矩阵

简单操作
C = A + B w h e r e C i j = A i j + B i j C = α ⋅ B w h e r e C i j = α B i j C = s i n A w h e r e C i j = sin ⁡ A i j C = A + B \quad where \quad C_{ij} = A_{ij}+B_{ij} \\ C = \alpha \cdot B \quad where \quad C_{ij}= \alpha B_{ij} \\ C = sinA \quad where \quad C_{ij} = \sin A_{ij} C=A+BwhereCij=Aij+BijC=αBwhereCij=αBijC=sinAwhereCij=sinAij
乘法(矩阵乘以向量)
c = A b w h e r e c i = ∑ j A i j b j c = Ab \quad where \quad c_i = \sum_jA_{ij}b_j c=Abwhereci=jAijbj
乘法(矩阵乘以矩阵)
C = A B w h e r e C i k = ∑ j A i j B j k C = AB \quad where \quad C_{ik} = \sum_jA_{ij}B_{jk} C=ABwhereCik=jAijBjk
范数
c = A ⋅ b h e n c e ∣ ∣ c ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ b ∣ ∣ c = A\cdot b \quad hence \quad ||c|| \leq ||A|| \cdot ||b|| c=AbhencecAb
取决于如何衡量b和c的长度
常见范数:
1.矩阵范数:最小的满足的上面公式的值
2.Frobenius范数
∣ ∣ A ∣ ∣ F r o b = [ ∑ i j A i j 2 ] 1 2 ||A||_{Frob} = [\sum_{ij}A_{ij}^2]^{1 \over 2} AFrob=[ijAij2]21

特殊矩阵

对称和反对称 A i j = A j i a n d A i j = − A j i A_{ij} = A_{ji} \quad and \quad A_{ij} = -A_{ji} Aij=AjiandAij=Aji
正定
∣ ∣ x ∣ ∣ 2 = x T x ≥ 0 g e n e r a l i z e s t o x T A x ≥ 0 ||x||^2 = x^Tx \geq 0 \quad generalizes \quad to \quad x^TAx \geq0 x2=xTx0generalizestoxTAx0
正交矩阵
1.所有行都相互正交
2.所有行都有单位长度 U w i t h ∑ j U i j U k j = δ i k U \quad with \sum_jU_{ij}U_{kj} = \delta_{ik} UwithjUijUkj=δik
3.可以写成 U U T = 1 UU^T = 1 UUT=1
置换矩阵
P w h e r e P i j = 1 i f a n d o n l y i f j = π ( i ) P \quad where \quad P_{ij} =1 \quad if \quad and \quad only \quad if \quad j= \pi(i) PwherePij=1ifandonlyifj=π(i)
置换矩阵是正交矩阵

  • 特征向量和特征值
  • 不被矩阵改变方向的向量
  • 对称矩阵总是可以找到特征向量

代码

标量由只有一个元素的张量表示

import torch 
x = torch.tensor([3.0])
y = torch.tensor([2.0])

x + y,x * y, x / y, x**y 

可以将向量视为标量组成的列表

x = torch.arrange(4)
x

通过张量的索引来访问任一元素

x[3]

访问张量的长度

len(x)

只有一个轴的张量,形状只有一个元素

x.shape

通过制定两个分量m和n来创建一个形状 m × n m \times n m×n的矩阵

A = torch.arange(20).reshape(5,4)

矩阵的转置

A.T

对称矩阵A等于其转置: A = A T A=A^T A=AT

B = torch.tensor([[1,2,3],[2,0,4],[3,4,5]])
B == B.T

就像向量是标量的推广,矩阵是向量的推广一样,我们可以构建具有更多轴的数据结构

x = torch.arange(24).reshape(2,3,4)
x

给定任何相同形状的任何两个张量,任何按元素二元运算的结果都将是相同形状的张量

A = torch.arange(20,dtype=torch.float32).reshape(5,4)
B = A.clone()
A, A + B

两个矩阵的按元素乘法成为哈达玛积

A*B

表示任何形状张量的元素和

A.sum()

指定求和汇总张量的轴

A_sum_axis0 = A.sum(axis=0)
A_sum_axis1 = A.sum(axis=1)
A_sum_axis2 = A.sum(axis =[0,1])

求均值

A.mean(), A.sum()/A.numel()
A.mean(axis=0),A.sum(axis=0)/A.shape[0]

计算总和或均值时保持轴数不变

sum_A =A.sum(axis=1,keedims=True)

通过广播将A处以sum_A

A/sum_A

某个轴计算A元素的累积总和

A.cumsum(axis=0)

点积是相同位置的按元素乘积的和

x = torch.tensor([0,1,2,3])
y = torch.ones(4,dtype= torch.float32)
torch.dot(x,y)

我们可以通过执行按元素乘法,然后进行求和来表示两个向量的点积

torch.sum(x*y)

矩阵向量积 A x Ax Ax是一个长度为m的列向量,其 i t h i^{th} ith元素是点积 a i T x a_i^Tx aiTx

torch.mv(A,x)

我们可以将矩阵-矩阵乘法AB看做是简单的执行m次矩阵-向量积,并将结果拼接在一起,形成一个 n × m 矩 阵 n \times m矩阵 n×m

torch.mm(A,B)

L2范数是向量元素平方和的平方根

torch.norm(u)

L1范数表示向量元素的绝对值之和

torch.abs(u).sum()

矩阵的佛罗贝尼乌斯范数(Frobenius norm)是矩阵元素的平方和的平方根

torch.norm(torch.ones((4,9)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值