一、线性代数基础(支撑模型输入输出处理)

1. 核心概念与公式(含通俗讲解)

概念

通俗讲解

定义 / 核心公式

AI 应用场景

向量(Vector)

把一组相关数据 “打包” 成的有序数组,比如一个样本的 3 个特征(身高、体重、年龄)就构成 3 维向量

n 维向量:\(\vec{v} = [v_1, v_2, ..., v_n]\)(1 维数组)

单样本特征、像素行向量

向量加法

两个同维度向量的 “对应数据相加”,比如两个样本的特征分别叠加,用于校正数据整体偏移

\(\vec{a} + \vec{b} = [a_1+b_1, a_2+b_2, ..., a_n+b_n]\)(同维对应元素相加)

批量样本特征偏移校正

标量乘法

用一个常数 “放大 / 缩小” 向量所有元素,比如把特征值从 [0-255] 缩放到 [0-1],适配模型输入

\(k \cdot \vec{v} = [k \cdot v_1, k \cdot v_2, ..., k \cdot v_n]\)(常数 × 向量元素)

特征缩放、参数更新

点积(内积)

两个向量的 “对应元素相乘再求和”,结果是一个数值,可衡量向量 “相似度”(值越大越相似)

\(\vec{a} \cdot \vec{b} = \sum_{i=1}^n a_i b_i = \|\vec{a}\| \|\vec{b}\| \cos\theta\)

特征相似度、模型线性变换

向量 L2 范数

向量的 “几何长度”,比如计算特征向量的 “大小”,用于归一化(让不同长度的向量统一尺度)

\(\|\vec{v}\|_2 = \sqrt{\sum_{i=1}^n v_i^2}\)(向量 “长度”)

特征归一化、正则化

矩阵(Matrix)

多个向量 “堆叠” 而成的二维表格,比如 100 个样本的 3 个特征,就构成 100×3 的矩阵(每行一个样本)

m×n 矩阵:\(A = \begin{bmatrix} a_{11} & ... & a_{1n} \\ ... & ... & ... \\ a_{m1} & ... & a_{mn} \end{bmatrix}\)

批量样本、模型权重

矩阵加法

两个形状完全相同的矩阵 “对应位置元素相加”,比如给批量样本的每个特征都加一个偏置值

\(A + B = [a_{ij} + b_{ij}]\)(同形矩阵对应元素相加)

批量数据偏置叠加

矩阵乘法

核心运算!前矩阵的 “列” 和后矩阵的 “行” 必须相等,结果矩阵的行数 = 前矩阵行数,列数 = 后矩阵列数,本质是 “批量向量的点积运算”

\(C = A \times B\),其中\(c_{ij} = \sum_{k=1}^p a_{ik} b_{kj}\)(A 列数 = p=B 行数)

特征 × 权重 = 模型输出

矩阵转置

矩阵的 “行变列、列变行”,比如把 3×4 矩阵转成 4×3,适配矩阵乘法的维度要求

\(A^T\):\(A^T_{ij} = A_{ji}\)(行变列、列变行)

维度适配、协方差矩阵计算

特征值 / 向量

对矩阵做 “压缩变换” 时,方向不变的向量是特征向量,缩放比例是特征值 —— 特征值越大,对应向量包含的 “信息越重要”

\(A\vec{v} = \lambda \vec{v}\)(\(\lambda\)为特征值,\(\vec{v}\)为特征向量)

PCA 降维、特征提取

2. 关键知识点深入讲解(AI 开发必懂)

  • 矩阵乘法为什么要 “前列 = 后行”?

矩阵乘法的本质是 “前矩阵的每行(单个样本特征向量)与后矩阵的每列(权重向量)做一次点积”。比如 3×4 矩阵(3 个样本,4 个特征)×4×2 矩阵(4 个输入特征→2 个输出特征),每个样本的 4 维特征向量与 4 维权重向量点积,得到 2 维输出,最终 3 个样本对应 3×2 输出矩阵 —— 如果前列≠后行,点积无法计算,因此必须满足该规则。

  • 特征值筛选的核心逻辑?

高维数据(如 100 维特征)存在冗余信息,特征值越大的向量,代表数据在该方向的 “分布越集中”(信息越密集)。筛选 Top-k 个大特征值对应的向量,就能用 k 维数据替代原高维数据,实现 “降维不减信息”。

3. Python 实战(公式对应代码)

import numpy as np

# 1. 向量运算(对应公式)
vec_a = np.array([1.2, 3.4, 5.6], dtype=np.float32)  # 样本A的3个特征
vec_b = np.array([2.1, 4.3, 6.5], dtype=np.float32)  # 样本B的3个特征

# 向量加法:$\vec{a} + \vec{b}$(校正特征偏移)
vec_add = vec_a + vec_b
print("向量加法结果:", vec_add)  # 输出:[3.3 7.7 12.1]

# 标量乘法:$0.0039 \cdot \vec{a}$(将0-255范围特征缩放到0-1,255≈0.0039)
vec_scalar = 0.0039 * vec_a
print("特征缩放结果(0-1范围):", vec_scalar)  # 输出:[0.00468 0.01326 0.02184]

# 点积:$\vec{a} \cdot \vec{b}$(计算两个样本特征的相似度)
vec_dot = np.dot(vec_a, vec_b)
print("特征相似度(点积):", vec_dot)  # 输出:55.74(值越大越相似)

# 向量L2范数:$\|\vec{a}\|_2$(计算特征向量长度,用于归一化)
vec_norm = np.linalg.norm(vec_a)
print("向量长度(L2范数):", vec_norm)  # 输出:≈6.57
# 归一化:向量/范数(让向量长度=1)
vec_normalized = vec_a / vec_norm
print("归一化后向量长度:", np.linalg.norm(vec_normalized))  # 输出:1.0

# 2. 矩阵运算(对应公式)
# 3×4样本矩阵 A(3个样本,每个4个特征),4×2权重矩阵 B(4个输入→2个输出)
A = np.array([[1.1,2.2,3.3,4.4],[5.5,6.6,7.7,8.8],[9.9,10.1,11.2,12.3]], dtype=np.float32)
B = np.array([[0.1,0.2],[0.3,0.4],[0.5,0.6],[0.7,0.8]], dtype=np.float32)

# 矩阵乘法:$C = A \times B$(3个样本的4维特征→2维输出)
C = np.matmul(A, B)
print("模型输出(矩阵乘法):\n", C)
# 输出:[[ 5.5   6.6  ], [14.3  17.16 ], [23.47 27.94 ]]

# 矩阵转置:$B^T$(将4×2转成2×4,适配后续可能的维度需求)
B_T = B.T
print("矩阵转置结果(4×2→2×4):\n", B_T)
# 输出:[[0.1 0.3 0.5 0.7], [0.2 0.4 0.6 0.8]]

# 3. 特征值与特征向量(PCA降维核心)
cov_matrix = np.array([[1.2,0.8],[0.8,1.5]], dtype=np.float32)  # 2维特征的协方差矩阵
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)
print("特征值 λ(信息重要性):", eigenvalues)  # 输出:[0.467 2.233](后者更重要)
print("特征向量 v(信息方向):\n", eigenvectors)
# 验证公式:A×v = λ×v(特征向量经矩阵变换后方向不变,仅缩放λ倍)
verify = np.matmul(cov_matrix, eigenvectors[:,0])  # A×v1
lambda_v1 = eigenvalues[0] * eigenvectors[:,0]     # λ1×v1
print("公式验证(A×v1 ≈ λ1×v1):\n", verify, "\n", lambda_v1)  # 结果近似相等

# 实战:筛选Top-1特征向量(降维2→1维)
top_k_idx = eigenvalues.argsort()[-1:]  # 按特征值降序,取最后1个(最大)
top_k_vec = eigenvectors[:, top_k_idx]
print("Top-1核心特征向量(降维后):\n", top_k_vec)

二、概率论基础(理解模型评估指标)

1. 核心概念与公式(含通俗讲解)

概念

通俗讲解

定义 / 核心公式

AI 应用场景

随机变量

取值不确定但有规律的变量,比如模型预测结果(可能是 0 或 1,也可能是连续分数)

取值不确定的变量(离散型:如分类结果;连续型:如预测分数)

模型输出、特征数据

概率分布

随机变量 “各种取值的概率规律”,比如分类结果为 0 的概率是 30%,为 1 的概率是 70%

描述随机变量取值的概率规律(离散:概率质量函数 PMF;连续:概率密度函数 PDF)

数据分布分析、模型初始化

正态分布

最常见的 “钟形分布”—— 数据集中在中间(均值),两边越来越少,比如身高、体重数据

PDF:\(f(x) = \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}\)(μ= 均值,σ= 标准差)

特征数据、参数初始化

二项分布

只有 “成功 / 失败” 两种结果的 n 次试验,比如 100 个样本中预测正确(成功)的次数

PMF:\(P(X=k) = C_n^k p^k (1-p)^{n-k}\)(n 次试验,k 次成功,p 成功概率)

分类模型评估、准确率统计

期望(均值)

随机变量的 “平均取值”,比如模型预测 100 次的平均分数,衡量预测的 “整体水平”

离散:\(E[X] = \sum x P(X=x)\);连续:\(E[X] = \int x f(x)dx\)

模型预测平均水平评估

方差

随机变量 “偏离均值的程度”,比如预测分数波动大(方差大)说明模型不稳定

\(Var(X) = E[(X-E[X])^2] = E[X^2] - (E[X])^2\)(偏离程度)

预测稳定性、数据离散度分析

协方差

两个变量 “同时偏离各自均值的程度”—— 正协方差:一个大另一个也大;负协方差:一个大另一个小

\(Cov(X,Y) = E[(X-E[X])(Y-E[Y])]\)(两变量线性相关程度)

特征相关性分析、降维

均方误差(MSE)

模型预测值与真实值 “差值的平方平均值”,衡量预测的 “平均偏差”(值越小越好)

\(MSE = \frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2\)(预测值与真实值的方差)

回归模型评估指标

准确率

分类模型 “正确预测的样本数占比”,比如 100 个样本对了 80 个,准确率 80%

\(Accuracy = \frac{TP+TN}{TP+TN+FP+FN}\)(正确预测数 / 总样本数)

分类模型基础评估指标

2. 关键知识点深入讲解(AI 开发必懂)
  • 正态分布为什么在 AI 中常用?

自然界中大多数数据(如图片像素值、文本特征)都近似服从正态分布,且正态分布的 “均值 + 标准差” 能完全描述数据规律 —— 模型初始化参数时用正态分布,可让参数取值集中在 0 附近,避免过大或过小导致训练失败;特征数据若符合正态分布,模型训练效率更高。

  • MSE 与方差的关系?

当模型预测误差的 “期望(平均偏差)≈0” 时,MSE 就等于误差的方差 ——MSE 本质是 “误差的平均平方偏离”,既衡量偏差大小,也反映波动程度,是回归模型的核心评估指标。

  • 准确率的局限性?

准确率只看 “正确预测占比”,但在样本不平衡场景(如 90% 样本是正类)中,模型全预测正类也能得 90% 准确率,此时需结合其他指标(如召回率),但准确率仍是入门阶段最易理解的分类评估指标。

3. Python 实战(公式对应代码)
import numpy as np

# 1. 正态分布(模拟特征数据)
mu = 0  # 均值(数据中心)
sigma = 1  # 标准差(数据离散程度,越小越集中)
n_samples = 1000  # 生成1000个数据点(模拟1000个特征值)
normal_data = np.random.normal(mu, sigma, size=n_samples)  # 符合正态分布的特征数据

# 验证公式:均值E[X]≈μ,方差Var(X)≈σ²
mean = np.mean(normal_data)  # 计算期望(均值)
var = np.var(normal_data)    # 计算方差
print("正态分布 - 均值 E[X]:", mean)  # 输出≈0(接近mu)
print("正态分布 - 方差 Var(X):", var)  # 输出≈1(接近sigma²)

# 实战:用正态分布初始化模型参数(AI开发常用)
model_param = np.random.normal(loc=0, scale=0.01, size=(4,2))  # 4×2权重参数,均值0,标准差0.01(避免参数过大)
print("模型初始化参数(正态分布):\n", model_param)

# 2. 二项分布(模拟分类模型预测结果)
n_trials = 100  # 试验次数(样本数)
p_success = 0.8  # 成功概率(模型单样本预测准确率)
binomial_data = np.random.binomial(n_trials, p_success, size=10)  # 10组试验,每组100个样本的正确预测数
print("二项分布 - 每组正确预测数:", binomial_data)  # 输出≈80(接近n_trials×p_success)

# 实战:计算分类准确率(对应公式)
correct = binomial_data[0]  # 第一组的正确预测数
total = n_trials            # 总样本数
accuracy = correct / total  # 准确率=正确数/总数
print("分类模型准确率:", accuracy)  # 输出≈0.8(接近p_success)

# 3. 期望与方差(评估模型预测稳定性)
# 模型预测值与真实值(模拟回归模型)
predictions = np.array([2.1, 2.3, 1.9, 2.2, 2.0])  # 模型预测值$\hat{y}$
true_values = np.array([2.0, 2.2, 2.0, 2.1, 2.0])  # 真实值$y$

# 期望:E[预测值] = 预测均值(衡量整体预测水平)
pred_mean = np.mean(predictions)
print("预测值期望 E[$\hat{y}$]:", pred_mean)  # 输出:2.1(接近真实值均值2.06)

# 误差:真实值-预测值(衡量单个预测偏差)
error = true_values - predictions
print("单个预测误差:", error)  # 输出:[-0.1 -0.1  0.1 -0.1  0.0]

# 方差:Var(误差) = 误差偏离均值的程度(衡量预测稳定性)
error_var = np.var(error)
print("误差方差(稳定性):", error_var)  # 输出:0.006(值越小越稳定)

# 4. 均方误差(MSE,回归模型核心评估指标)
mse = np.mean(np.square(error))  # 对应公式:$\frac{1}{n}\sum (y-\hat{y})^2$
print("均方误差 MSE:", mse)  # 输出:0.006(与误差方差相等,因误差期望≈0)

# 5. 协方差(分析特征相关性)
feature1 = np.array([1.2, 2.3, 3.1, 4.2, 5.0])  # 特征X(如“面积”)
feature2 = np.array([2.1, 3.2, 4.0, 5.1, 6.2])  # 特征Y(如“价格”)
cov = np.cov(feature1, feature2)[0,1]  # 计算Cov(X,Y)
print("特征X与Y的协方差:", cov)  # 输出≈1.93(正协方差→面积越大,价格越高)

# 实战:特征相关性判断(协方差>0:正相关;<0:负相关;≈0:无相关)
if cov > 0:
    print("特征X与Y:正相关(一个增大,另一个大概率增大)")
elif cov  print("特征X与Y:负相关(一个增大,另一个大概率减小)")
else:
    print("特征X与Y:无明显线性相关")

三、关键掌握要点

1. 线性代数

  • 必须掌握:向量 / 矩阵的定义、矩阵乘法维度规则(前列 = 后行)、点积 / 转置 / 范数的计算;
  • 重点应用:用矩阵乘法实现 “特征 × 权重 = 模型输出”,用特征值筛选核心特征(PCA 降维);
  • 避坑提醒:统一数据类型为np.float32(AI 开发标准),避免维度不匹配报错(用.shape校验维度,.T转置适配)。

2. 概率论

  • 必须掌握:正态分布 / 二项分布的特点、期望 / 方差的物理意义、MSE / 准确率的计算逻辑;
  • 重点应用:用正态分布模拟特征数据 / 初始化模型参数,用二项分布分析分类结果,用 MSE 评估回归模型;
  • 关联记忆:MSE 本质是 “误差的方差”(误差期望≈0 时),准确率是二项分布的 “成功概率”,协方差用于判断特征相关性。

四、学习总结

本文覆盖 AI 应用开发必备的数学基础,核心逻辑是 “线性代数处理数据变换,概率论评估模型效果”:

  • 线性代数部分:从向量到矩阵,再到特征值筛选,所有知识点都服务于 “模型输入→运算→输出” 的全流程,代码可直接复用在模型权重计算、数据降维中;
  • 概率论部分:从分布到期望、方差,再到评估指标,聚焦 “数据规律分析” 和 “模型效果衡量”,代码可直接用于特征分布验证、模型评估报告生成。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐