深度学习——线性代数的基础

一、基础概念(标量、向量、矩阵、张量)

(1).标量:标量是数学和中的一个基本概念,它是一个没有方向的、只有大小的量。标量通常用普通的数字来表示,如5、10、-3.14等。在数学数学表达式中,标量通常用斜体字母表示,如a、b、c等。

(2).向量:表示一列数,这些数有序排列的,可以通过下标获取对应值,通常⽤粗体小写字母表示,它表示元素取实数,且有 n 个元素,第⼀个元素表⽰为:x1。将向量写成列向量的形式:

(3). 矩阵:矩阵是一个二维数组,其中的每一个元素被两个索引(而非 一个)所确定。我们通常会赋予矩阵粗体的大写变量名称,比如 A。如果一个 实数矩阵高度为 m,宽度为 n,那么我们说 A R m×n

(4).张量(Tensor): 超过两维的数组。一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。我们使用字体 A 来表示张量 “A’’。张量 A 中坐标为 (i, j, k) 的元素记作 Ai,j,k

代码演示:

import numpy as np
# 标量
a = 1
# 向量
b = np.array([1,2])
# 矩阵
c = np.array([[1,2], [3,4]])
# 张量
d = np.array([
[[1,2,3],[4,5,6],[7,8,9]],
[[1,2,3],[4,5,6],[7,8,9]],
[[1,2,3],[4,5,6],[7,8,9]],
])
print("标量: " + str(a))
print("向量: " + str(b))
print("矩阵: " + str(c))
print("张量: " + str(d))
# 运行结果:
'''标量: 1
向量: [1 2]
矩阵: [[1 2]
 [3 4]]
张量: [[[1 2 3]
  [4 5 6]
  [7 8 9]]

 [[1 2 3]
  [4 5 6]
  [7 8 9]]

 [[1 2 3]
  [4 5 6]
  [7 8 9]]]
'''

 二、矩阵的转置

转置 transpose )是矩阵的重要操作之一。矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线被称为主对角线 main diagonal 。我们将矩阵 A  的转置表示为 A^{T} ,定义如下:

代码演示:

import numpy as np
A = np.array([[1.0,2.0],[1.0,0.0],[2.0,3.0]])
A_T = A.transpose()
print("A:", A)
print("A 的转置:", A_T)
# 运行结果
'''A: [[1. 2.]
 [1. 0.]
 [2. 3.]]
A 的转置: [[1. 1. 2.]
 [2. 0. 3.]]'''

三、矩阵的加法 

代码演示:

import numpy as np
a = np.array([[1.0,2.0],[3.0,4.0]])
b = np.array([[5.0,6.0],[7.0,8.0]])
print("矩阵相加:", a + b)
# 运行结果
'''矩阵相加: [[ 6.  8.]
 [10. 12.]]'''

 四、矩阵的乘法

 代码演示:

import numpy as np
m1 = np.array([[1.0,3.0],[1.0,0.0]])
m2 = np.array([[1.0,2.0],[3.0,0.0]])
print("按矩阵乘法规则:", np.dot(m1, m2))
print("按逐元素相乘:", np.multiply(m1, m2))
print("按逐元素相乘:", m1*m2)
v1 = np.array([1.0,2.0])
v2 = np.array([3.0,4.0])
print("向量内积:", np.dot(v1, v2))
# 运行结果
'''按矩阵乘法规则: [[10.  2.]
 [ 1.  2.]]
按逐元素相乘: [[1. 6.]
 [3. 0.]]
按逐元素相乘: [[1. 6.]
 [3. 0.]]
向量内积: 11.0'''

五、单位矩阵和逆矩阵

 (1).单位矩阵的结构⼗分简单,所有的对⾓元素都为 1 ,其他元素都为 0。单位矩阵乘以任意⼀个向量等于这个向量本⾝。单位矩阵 I_{3} 如下图所示:

代码演示:

import numpy as np
a = np.identity(3)
print(a)
# 运行结果
'''[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]'''

(2). 矩阵A矩阵逆matrix inversion)记作 A^{-1},其定义的矩阵满足如下条件:

A^{-1}A=I_{n}

A^{-1}存在,那么线性⽅程组Ax=b的解为:

A^{-1}Ax=I_{n}x=x=A^{-1}b

 代码演示:

import numpy as np
A = [[1.0,2.0],[3.0,4.0]]
A_inv = np.linalg.inv(A)
print("A 的逆矩阵", A_inv)
# 运行结果
'''A 的逆矩阵 [[-2.   1. ]
 [ 1.5 -0.5]]'''

六、范数

有时我们需要衡量一个向量的大小。在机器学习中,我们经常使用被称为 范数(norm )的函数衡量向量大小。形式上,L^{p} 范数定义如下:

  1. L1 范数(当前范数):L1 范数为求解中所有元素的绝对值之和。对于 n 维求解 x,其 L1 范数表示为 ||x||₁,计算方式为:||x ||₁ = |x₁| + |x2| + ... + |xₙ|。

  2. L2范数(欧几里得范数):L2范数定义为支持中所有元素的平方和的平方根。对于n维支持x,其L2范数表示为||x||2,计算方式为: ||x||2 = √(x₁² + x2² + ... + xₙ²)。

  3. L∞范数(无穷范数):L∞范数定义为求解中所有元素的绝对值的顶峰。对于n 维求解x,其L∞范数表示为||x||∞,计算方式为:||x||∞ = max(|x₁|, |x2|, ..., |xₙ|)。

  4. Lp 范数:Lp 范数是一个通用的范数定义,其中 p 是一个正实数。对于 n 维 表示 x,其 Lp 范数表示为 ||x||ₚ,计算方式为:||x|| ₚ = (|x₁|ᵖ + |x2|ᵖ + ... + |xₙ|ᵖ)^(1/p)。

 机器学习中通常使⽤的是 F 范数 (Frobenius norm),其定义为:

代码演示:

import numpy as np
a = np.array([1.0,2.0])
print("向量 2 范数", np.linalg.norm(a,ord=2))
print("向量 1 范数", np.linalg.norm(a,ord=1))
print("向量无穷范数", np.linalg.norm(a,ord=np.inf))
b = np.array([[1.0,2.0],[3.0,4.0]])
print("矩阵 F 范数", np.linalg.norm(b,ord="fro"))
# 运行结果
'''
向量 2 范数 2.23606797749979
向量 1 范数 3.0
向量无穷范数 2.0
矩阵 F 范数 5.477225575051661
'''

七、特征值分解

假设矩阵 A n 个线性无关的特征向量 { v (1) , . . . , v ( n ) } ,对应着特征值 { λ 1 , . . . , λ n }。我们将特征向量连接成一个矩阵,使得每一列是一个特征向量: V = [ v (1) , . . . , v ( n) ]. 类似地,我们也可以将特征值连接成一个向量 λ = [ λ1 , . . . , λ n] 。因此 A 的特征分解(eigendecomposition)可以记作
A=Vdiag(\lambda )V^{-1}
代码演示:
import numpy as np
A = np.array([[1.0,2.0,3.0],
[4.0,5.0,6.0],
[7.0,8.0,9.0]])
# 计算特征值
print("特征值:", np.linalg.eigvals(A))
# 计算特征值和特征向量
eigvals,eigvectors = np.linalg.eig(A)
print("特征值:", eigvals)
print("特征向量:", eigvectors)
# 运行结果
'''
特征值: [ 1.61168440e+01 -1.11684397e+00 -1.30367773e-15]
特征值: [ 1.61168440e+01 -1.11684397e+00 -1.30367773e-15]
特征向量: [[-0.23197069 -0.78583024  0.40824829]
 [-0.52532209 -0.08675134 -0.81649658]
 [-0.8186735   0.61232756  0.40824829]]
'''

八、最后的奇异值分解(SVD)和PCA(主成分分析)留在下一篇文章讲述。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值