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

133 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

线性代数简明教程

线性代数

标量

简单操作

  • c=a+bc=a+b
  • c=a×bc=a \times b
  • c=sinαc=\sin\alpha

长度

  • a={aifa>0aotherwise|a|=\begin{cases}a &if a>0 \\-a &otherwise\end{cases}
  • a+ba+b|a+b|\leq|a|+|b|
  • a×b=a×b |a \times b|=|a|\times |b|  

向量

向量就是一行值(或者一列值),称作行向量、列向量

简单操作

  • 定义:a,b都是向量、alpha是标量定义:a,b都是向量、alpha是标量
  • c=a+b where ci=ai+bic=a+b \space where\space c_{i}=a_{i}+b_{i}
    • 每个元素分别相加
  • c=α×b where ci=α×bic=\alpha \times b \space where \space c_{i}=\alpha \times b_{i}
    • 标量乘以每一个元素
  • c=sina where ci=sinaic=\sin a \space where \space c_{i}= \sin a_{i}
    • 每个元素分别求sin

长度

  • a2=[i=1mai2]12\begin{Vmatrix}a\end{Vmatrix}_{2}=\left[ \sum_{i=1}^m a_i^2 \right]^\frac{1}{2}

    • (向量的长度)向量的每个元素的平方求和再开根号
  • a0 for all a\begin{Vmatrix}a\end{Vmatrix} \geq 0 \space for \space all \space a

  • a+ba+b\begin{Vmatrix}a+b\end{Vmatrix} \leq\begin{Vmatrix}a\end{Vmatrix}+\begin{Vmatrix}b\end{Vmatrix}

  • a×b=a×b\begin{Vmatrix}a \times b\end{Vmatrix} =\begin{Vmatrix}a\end{Vmatrix}\times\begin{Vmatrix}b\end{Vmatrix}

向量直观上的理解

图片.png

点乘

  • ab=iaibia^\top b=\sum_ia_ib_i
    • 每个元素分别相乘求和  
  • ab=iaibi=0a^\top b=\sum_ia_ib_i=0

正交

 

矩阵

简单操作

  • C=A+B where Ci,j=Ai,j+Bi,jC=A+B \space where \space C_{i,j}=A_{i,j}+B_{i,j}
  • C=α×B where Ci,j=αBi,jC=\alpha \times B \space where \space C_{i,j}=\alpha B_{i,j}
  • C=sinA where Ci,j=sinAi,jC=sinA \space where \space C_{i,j}=sin A_{i,j}

矩阵乘以向量

图片.png 矩阵的每一行和列向量做内积(乘法)

矩阵的乘法是在扭曲空间

图片.png

一个向量通过一个矩阵乘法变成了另外一个向量

矩阵乘法

  • C=A×B where Ci,k=jAi,jBj,kC=A \times B \space where \space C_{i,k}=\sum_j A_{i,j}B_{j,k}
    • A矩阵的每一行要内积B矩阵的每一列

范数

  • 矩阵范数(计算复杂)

  • F范数(一般采用的方法)

对称和反对称

图片.png

正交矩阵

置换矩阵

特征向量

图片.png

  • 不被矩阵改变方向的向量

  • 对称矩阵总是可以找到特征向量

  • 但不是每个矩阵都有特征向量

pytorch

基础+-*/

向量就是标量组成的列表

a = torch.arange(4)

索引访问

a[0]

长度

len(a)

矩阵

创建一个5行4列的矩阵

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

矩阵的转置(沿着对称轴翻转 \ )

图片.png

A.T

对称矩阵的转置等于自身

向量是标量的推广,矩阵是向量的推广,可以基于此原理,构建具有更多轴的数据结构(任何维度)

创建一个三维矩阵

图片.png

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

注意2,3,4代表的是什么(从外到内)

哈达玛积(矩阵按元素乘)不常用

A*B

矩阵元素和(标量)

图片.png

A.sum()

axis从0开始

A.sum(axis=1)

矩阵乘向量

torch.mv(A,x)

矩阵乘法

torch.mm(A,B)

范数(标量)

向量的范数

L1L_1范数

图片.png

torch.abs(u).sum()

L2L_2范数

图片.png

torch.norm(a)

矩阵的范数

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

图片.png

torch.norm(torch.ones(4,9))