线性代数
[toc]
数据类型¶
| 名词 | 应用场景 | 纬度 |
|---|---|---|
| 标量 | 点 | |
| 向量 | 线 | 1 |
| 矩阵 | 面 | 2 |
| 张量 | 体 | 多 |
基本运算¶
元素乘法¶
Python
p1 = np.array([0.3, 0.5, 0.8]) # 事件A的概率
p2 = np.array([0.4, 0.6, 0.7]) # 事件B的概率
joint_p = p1 * p2 # 联合概率
矩阵乘法相关¶
点积 Dot Product¶
点积的计算例子:
例如,给定向量 \( \mathbf{a} = [1, 2, 3] \) 和 \( \mathbf{b} = [4, 5, 6] \),它们的点积为: [ 1 \times 4 + 2 \times 5 + 3 \times 6 = 4 + 10 + 18 = 32 ]
矩阵乘法¶
如果 A, B是两个矩阵, **A行和B列**之间进行**点积**操作, 得到矩阵乘法的结果
这个规则保证了所有元素的运算顺序与维度一致,使得结果矩阵代表了两个线性变换的组合效果。
点积**其实就是**一纬的矩阵乘法
线性变换和向量空间的运算
Python
$$
\text{out}{i} = \frac{1}{\sqrt{\text{input}
$$}}
import numpy as np
# 创建两个矩阵
<div markdown="1" style="margin-top: -30px; font-size: 0.75em; opacity: 0.7;">
:material-circle-edit-outline: 约 370 个字 :fontawesome-solid-code: 30 行代码 :material-clock-time-two-outline: 预计阅读时间 2 分钟
</div>
A = np.array([[1, 2, 3],
[4, 5, 6]])
B = np.array([[7, 8],
[9, 10],
[11, 12]])
# 使用矩阵乘法运算符
C = A @ B
# 结果是
# [[58, 64],
# [139,154]]
"""
计算原理:
C[0,0] = 1×7 + 2×9 + 3×11 = 58
C[0,1] = 1×8 + 2×10 + 3×12 = 64
C[1,0] = 4×7 + 5×9 + 6×11 = 139
C[1,1] = 4×8 + 5×10 + 6×12 = 154
"""
\[
\text{out}_{i} = \sqrt{\text{input}_{i}}
\]
小结¶
| 名词 | 应用场景 |
|---|---|
| 元素乘法 | 特征遮掩, 图像处理 |
| 矩阵乘法 | 图像处理, 线性变换, 特征转换 |
norm¶
范数一种度量,通常用来衡量向量或矩阵的“大小”或“长度” 分为 l1, l2, 最大norm
l1: 定义为向量各元素绝对值的和:||x||₁ = |x₁| + |x₂| + ... + |xₙ| 诞生了MAE
l2: 定义为向量各元素平方和的平方根:||x||₂ = √(x₁² + x₂² + ... + xₙ²) 诞生了MSE , 最常用
MSE被称为L2损失——它本质上是基于L2范数的损失函数,只是为了计算和优化的便利性,省略了平方根操作并进行了平均