我读完了这本机器学习实战,也就是那本蜥蜴书。想着写点什么,先讲讲机器学习分类吧

机器学习分类

机器学习分为;监督学习,无监督学习,半监督学习,自监督学习,强化学习

然后任务类型有,分类,回归,聚类,降维,生成

如果按照模型分:

线性模型:线性回归、逻辑回归

基于树的模型:决策树、随机森林、XGBoost

基于概率的模型:朴素贝叶斯、高斯混合模型

基于神经网络的模型:DNN、CNN、RNN、Transformer

基于图的模型:Graph Neural Network(GNN)

机器学习面临的困难有什么呢?

首先是数据数量不足,其次就是数据有,没有代表性数据。还有就是质量差的数据,

之后就是训练的数据过拟合和欠拟合。

分类

评价标准

分类首先得有考核标准,这里面就包括:准度,精度,召回率,F1,特异度。ROC AUC

然后就是混淆矩阵,这个可以通过行列快速看这个分类怎么样。有一个小tip,其实在这个混淆矩阵里特别容易看,混淆矩阵分TP FN FP TN。就是一个2 * 2的矩阵。我们看准确率的时候,是Accuracy = (TP+TN)/(FP+FN+TP+TN)

我们就可以记的时候,可以记成斜/全部,然后精度是TP/ TP + FP,召回率是 TP/TP +FN。分母也就是 “竖”“横”。分子都是TP。F1就是积在和上飞(鸡在河上飞)。

特异度当然就要单独记, TN / (TN + FP)

然后就是ROC和AUC就是模型整体区分能力。具体的可以自己查阅

角度

代表指标

关注点

全局正确性

Accuracy

整体预测正确率

正类质量

Precision

正类预测的准确性

正类覆盖

Recall

找全正样本的能力

平衡性

F1, MCC

Precision 与 Recall 的协调

阈值稳定性

ROC, AUC

模型整体区分能力

多分类

然后就是有 多类别多分类,二分类就是要么是正,要么是负,很单一。但是往往有多个类别(猫、狗、鸟、鱼……)。

我们可以用二分类去拓展到多分类,这里就有OVA(为每个类别训练一个分类器,判断“是否属于该类)和OVO(为每对类别训练一个分类器。)。对了,这个多分类和多标签不一样,不要混淆! 多分类:一个样本只属于一个类(猫或狗或鸟);

多标签:一个样本可以属于多个类(猫+可爱+室内)。

然后当然这里补充一下,深度学习中多分类的 Softmax 输出层 实际就是一种 OVA 思想的极限形式。(可以不用理解先)

回归

说到回归就是预测连续值,本质上也就是拟合函数。

这里面有线性回归,和非线性回归

评价标准

指标

公式

特点

对异常值敏感度

MAE

平均绝对误差

简单直观

MSE

平均平方误差

平滑可导,放大大误差

RMSE

MSE 开平方

单位与原值一致

Huber Loss

混合 MAE 与 MSE

兼顾稳定性与可微性

中等

公式可以自己找一下。

然后就是我们怎么找到这个最合适的函数,让模型参数沿着损失函数的梯度方向逐步下降,直到找到最低点。梯度下降是一种非常通用的优化算法。然后有三种

方法

每次更新用的样本数

优点

缺点

特征

批量梯度下降 (Batch GD)

全部训练样本(n)

精确的梯度,收敛稳定

计算量大、内存占用高;在大数据上慢

适合小数据集

随机梯度下降 (SGD)

1 个样本

计算快、更新频繁,能跳出局部极值

梯度噪声大,收敛抖动

像在山坡上“抖着”往下走

小批量梯度下降 (Mini-batch GD)

一小批样本(如 32、64)

权衡两者:速度快、梯度更稳定

需调 batch 大小;依赖硬件优化

深度学习默认标准

然后如果拟合不了,我们可以多项式回归去拟合

我们继续说正则线性模型。我本来这里想打公式的,就是普通线性回归当特征很多、存在噪声或多重共线性时,模型容易“过拟合”,也就是在训练集表现完美,但在新数据上崩溃。所以引入了正则化。我放一个表格,公式可以自己去查。

模型

类型

惩罚项

用途

特点

线性回归

回归

连续预测

易过拟合

岭回归

回归

L2

连续预测

降方差,平滑权重

Lasso 回归

回归

L1

连续预测

稀疏特征选择

弹性网络

回归

L1+L2

连续预测

兼顾稳健与稀疏

早期停止

回归/分类

时间正则

控制过拟合

不改损失,只停训练

逻辑回归

分类(二类)

L1/L2 可选

概率分类

Sigmoid 输出

Softmax 回归

分类(多类)

L2 常用

多类概率分类

Softmax 输出归一化

SVM支持向量机

我感觉svm是监督学习史上最优雅的算法之一

它有三种形态——线性分类、非线性分类、回归(SVR)

线性分类就是有一个最大间隔超平面然后给他们分开,使得它不仅能分对样本,还要离样本尽可能远。也就是硬间隔,但是现实数据通常不可完全线性可分,所以允许了少量违规,改了目标函数,也就是软间隔。

现实数据往往线性不可分。 于是 SVM 的妙计是:把数据“隐式”地映射到高维空间,让它线性可分。就是我们假设在某个高维度他们是能分开的,但是高纬度我们又没办法计算,所以这里面我们不直接计算 \phi(x),而只用内积,还有核函数。核函数就像魔法变换:在原空间是曲线,映射后变成直线。这里面设计对偶分析,和凸分析,所以可以自己学习一下数学原理。

之后就到了svm回归,SVM 不仅能分类,也能做回归任务。同样可以用核函数,SVR 的“支持向量”就是那些超出 ε 管的样本。

类型

目标

损失

可用核函数?

输出

线性 SVM 分类

最大间隔分离

hinge 损失

±1 分类

非线性 SVM 分类

在高维线性分离

hinge 损失

必需

±1 分类

SVM 回归 (SVR)

ε-不敏感拟合

ε-insensitive 损失

连续值

分类:找两类之间最宽的“间隔带”;

回归:找一条曲线,使大多数点都落在“ε管”内;

核技巧:让这条“线”在高维空间里变成“曲面”。

线性 SVM:最大化间隔的超平面; 非线性 SVM:通过核函数在高维实现线性分割; SVM 回归(SVR):用 ε 管道平衡精度与平滑度。

决策树

这也是监督学习,它其实不是在做矩阵代数,而是在不断分割数据空间

也就是从输入特征中,逐步选择最能“区分”样本的特征进行分裂,直到叶节点上的样本足够纯(即几乎全属于同一类)。

然后CART是决策树的主流实现,在分类问题中使用基尼不纯度; 在回归问题中使用均方误差(MSE)。CART 每次分裂都遵循:选择一个特征和一个分裂点,使得左右子集的纯度最高。

这里面信息熵和就是混乱程度,基尼不纯度也就是表示从该节点随机抽两个样本,不同类别的概率。越小表示节点越纯。

这里面你会疑问,这个节点纯不纯有啥用。

想象你有个袋子,里面混着两种糖:

  • 红糖代表“正类”;

  • 蓝糖代表“负类”。

你想设计一个规则(比如“按甜度切分”)来把糖果分袋。 如果切完之后:

  • 每个袋子里都是清一色的糖(要么全红,要么全蓝)——那说明你的规则很棒;

  • 如果切完后,每个袋子仍然是红蓝混合的——那说明你的规则没起多大作用。

节点纯度(purity)就是衡量“袋子里是不是越来越干净”的指标。

这个算法很好,但是也要考虑这个计算复杂度的事情,我们假设样本n,特征m。 我们的树的总体的复杂度就是O(m n log² n),决策树比线性模型慢得多,但比神经网络快得多。

在之后就是,决策树容易过拟合,因为它能把训练集分得“非常纯”但泛化差。所以我们通过“剪枝”或“约束生长”正则化:

超参数

作用

max_depth

限制树的最大深度

min_samples_split

一个节点最少要有多少样本才能再分裂

min_samples_leaf

叶节点最少样本数

max_features

每次考虑多少特征(随机森林常用)

ccp_alpha

代价复杂度剪枝参数(Cost Complexity Pruning)

决策树的“回归”和“不稳定性”

  1. 回归

回归树预测值是区域内样本的均值, 它本质是一个分段常数函数: 每个叶子对应一个“区域”,区域内输出固定。

缺点:

  • 不连续;

  • 对输入微小变化非常敏感;

  • 预测曲线是“阶梯形”。

  1. 不稳定性(High Variance)

决策树对数据扰动极其敏感:

  • 换一两个样本,分裂特征可能完全不同;

  • 不同样本顺序可能生成完全不同的树。

这就是高方差(high variance)问题。 解决方式:

  • Bagging(随机森林 Random Forest)

  • Boosting(如 XGBoost、LightGBM)

集成方法 = “多个不稳定学习器的平均”,从而稳健。

集成学习和随机森林

刚刚提到了集成学习,其实他的理念就是:单个模型不完美,但多个模型的平均会更稳。

Bagging

Pasting

抽样方式

有放回

无放回

每个子集

可能有重复样本

样本唯一

效果

更随机,方差更低

稍微高一些

随机森林是 Bagging + 随机特征选择 的自然扩展。随机森林能天然评估每个特征的重要性。

这里面,我们就得提到boosting家族, AdaBoost Gradient Boosting XGBoost。它们不是“并行平均”,而是“顺序强化”。 后一个模型专门修正前一个模型的错误。不依赖一个强模型,而是让多个“弱模型”(通常是浅层树)按顺序协作,每个都去纠正前一个的错误。

类别

代表方法

核心思想

是否并行

优点

缺点

Bagging

随机森林、Extra Trees

多模型独立训练 + 平均

稳定、降低方差

增加偏差

Boosting

AdaBoost、GBDT、XGBoost

顺序学习 + 纠错

准确率高

易过拟合、训练慢

Stacking

任意组合

多层集成

部分

泛化最强

复杂、难调参

Boosting家族

特征

AdaBoost

Gradient Boosting (GBDT)

XGBoost

核心思想

调整样本权重,让下个模型更关注“分错样本”

用梯度下降的思想,让下个模型拟合“残差(负梯度)”

基于梯度提升,加入二阶导、正则化和工程优化

弱学习器

通常是小型决策树(如树深=1 的 stump)

任意可微损失下的决策树

同样是树,但带结构正则

更新方式

样本权重根据错误率更新

残差作为目标更新

残差 + 二阶信息更新(牛顿法思想)

优化目标

最小化指数损失(exponential loss)

最小化任意可导损失(如平方误差、log loss)

最小化正则化的二阶近似目标函数

正则化

无显式正则

可调学习率(shrinkage)

显式正则项 + 树剪枝 + 学习率

计算效率

快,适合小数据

较慢,逐步构建

高度并行、高效实现

对噪声敏感性

中等

低(有正则)

应用场景

分类(经典)

分类 / 回归通用

工业级标准(XGB、LightGBM、CatBoost)

三者在数学上的进化路线从“直接优化指数损失”到梯度下降最小化任意损失,再到加入二阶导+正则.

降维

最有意思的部分,降维我感觉是最哲学的,他在干什么,为什么要降维。

其实这是在问“高维世界里,哪些维度是真正重要的?"

现实世界往往都是高维度的,但是高维度有一个维度灾难,样本稀疏,计算量爆炸,很容易过拟合。但是其实那么多维度里面,我们其实只需要抓住其中的本质,某些个维度。

举几个例子:

  • 一张人脸的像素有几万个维度,但“人脸变化”的主要因素(光照、角度、表情)不过十几个。

  • 股票有几百只,但市场真正的“主因”(政策、经济周期、风险偏好)只有几个。

  • 语音信号看似复杂,其实主要由频率成分和声道特性决定。

换句话说:

高维只是表象,低维才是本质。

降维就是从复杂的表面找到本质的结构变量

降维方法

PCA 是最经典、最广泛使用的线性降维方法。 它的目标是:

找到一组新的正交坐标轴(主成分), 使得数据在这些方向上的方差最大。

最大化信息量 ≈ 最大化方差。

想象一群点在三维空间里沿着某条“细长的斜线”分布。 PCA 就像:

“找出那条最能代表数据延展方向的轴”, 然后把数据投影到那条轴上。

  • 第一主成分:最大方差方向;

  • 第二主成分:与第一正交,方差次大;

  • 以此类推。

然后这边提一下PCA压缩,由于主成分是按方差排序的,我们可以只保留前 k 个。图像压缩、特征预处理、噪声消除中常用。

PCA的三种等价形式;

方法

实现思路

协方差矩阵特征分解

计算 (X^TX) 的特征值与特征向量

奇异值分解(SVD)

(X = U\Sigma V^T),取前 k 列 (V) 即主成分

最大方差投影

优化投影方向使方差最大

PCA的变体;

名称

思想

特点

Kernel PCA

用核函数将数据映射到高维空间再做 PCA

处理非线性结构

Sparse PCA

限制主成分载荷为稀疏向量

结果更易解释

Incremental PCA

分块更新主成分

适合大规模数据流

Randomized PCA

用随机近似加速计算

高维大数据加速版本

其他降维

方法

类型

主要思想

保持的结构

是否监督

优点

缺点

LDA(Linear Discriminant Analysis)

线性

寻找能最大化类间方差 / 最小化类内方差的投影方向

类间可分性

✅(有标签)

有监督降维;增强分类效果

仅适用于有标签任务;线性边界

t-SNE(t-distributed Stochastic Neighbor Embedding)

非线性

保持邻近点在低维空间中仍相近,通过概率分布相似度建模

局部邻域结构

能揭示簇结构;可视化效果极佳

计算慢;结果随机;仅适用于可视化

ISOMAP

非线性

通过最短路径近似流形“测地距离”,保持全局几何关系

全局流形结构

能捕捉非线性全局结构

对噪声敏感;复杂度高

LLE(Locally Linear Embedding)

非线性

假设局部邻域可线性表示,保持邻域线性组合关系

局部线性结构

简洁、能揭示流形

对噪声敏感;全局形状可能扭曲

UMAP(Uniform Manifold Approximation and Projection)

非线性

基于拓扑与流形假设,通过邻域图建模并优化

局部与部分全局结构

比 t-SNE 快;可保留更多全局信息;可重复性更好

需调参(邻域数、最小距离);解释性低

不同降维的侧重点:

方法

是否线性

保留局部

保留全局

可解释性

常用用途

PCA

一定

压缩、预处理

LDA

分类辅助

t-SNE

可视化

ISOMAP

流形分析

LLE

局部嵌入

UMAP

部分

快速可视化

总结一句话

PCA 是“最大方差方向投影”, 是线性降维的代名词; t-SNE、LLE、UMAP 是它的非线性后继者; 它们共同回答:在庞大数据空间里,哪些维度最值得留下?

人工神经网络

终于到人工神经网络了,我们来整体说一下神经网络,神经网络其实就是模仿人的神经网络,然后你可能会问为什么要有神经网络?

传统机器学习(线性回归、逻辑回归、SVM)本质上都是线性模型, 它们能画直线、平面、超平面,但无法捕捉复杂的非线性关系

现实世界几乎都是非线性的:

  • 图片像素与“猫”之间的关系不是线性的;

  • 声音波形与“人说的话”之间不是线性的。

于是我们构造一种模型:

把多个线性变换层层堆叠,中间加非线性激活,让模型能自动逼近任意函数。

这就是人工神经网络。

基本结构

一个最简单的神经网络由三部分组成:

输入层 → 隐藏层(若干) → 输出层

每一层都有若干神经元(neuron)

终于要提到激活函数了,激活函数让神经网络能表示非线性关系。

名称

公式/特点

优点

缺点

Sigmoid

(f(x)=1/(1+e^{-x}))

平滑、输出0~1

梯度消失

tanh

输出 -1~1,对称

更稳定

仍可能梯度消失

ReLU

(f(x)=\max(0,x))

快速、稀疏

死亡ReLU(负区间梯度0)

Leaky ReLU

负区间保留小梯度

缓解死亡问题

无明显缺点

GELU / Swish

现代平滑ReLU

更优性能

计算稍复杂

前向传播

数据从输入层流向输出层,最后算到y

损失函数

任务类型

常见损失函数

回归

MSE, MAE, Huber

二分类

二元交叉熵

多分类

多类交叉熵(Softmax Loss)

反向传播

训练神经网络的关键:

用梯度下降法最小化损失函数。

反向传播是“链式法则”的大规模应用,每层的误差信号从输出往输入层传播,更新权重

训练过程(整体)

  1. 初始化参数(通常是随机小值)

  2. 前向传播计算预测 \hat{y}

  3. 计算损失 L(\hat{y}, y)

  4. 反向传播计算梯度

  5. 使用优化器(SGD / Adam 等)更新参数

  6. 重复直到收敛

优化器

决定了“如何下山”

优化器

思想

特点

SGD

固定学习率的梯度下降

简单但震荡

Momentum

加上动量项平滑更新

收敛更快

RMSProp

自适应步长(按梯度平方调整)

稳定

Adam

Momentum + RMSProp 结合

默认首选

万能逼近定理

理论上,一个两层(一个隐藏层)神经网络,就能逼近任意连续函数。 这称为万能逼近定理(Universal Approximation Theorem)

直觉:

神经网络不是“写公式”,而是“学习函数形状”。

深层网络语表示学习

当我们堆叠多层隐藏层后:

  • 第一层提取简单特征(边、线条);

  • 第二层提取组合特征(形状);

  • 更深层提取语义(猫、狗、人)。

这种分层特征学习能力,就是“深度学习(Deep Learning)”的精髓。

神经网络的主要问题

问题

含义

常见解决方案

过拟合

模型记住训练集而非规律

Dropout、L2正则、数据增强

梯度消失

深层网络更新慢

ReLU、BatchNorm、残差结构

训练不稳定

学习率过大或初始化不当

归一化、学习率调度、He 初始化

神经网络类型

类型

用途

示例

全连接(MLP)

通用回归/分类

基础模型

卷积网络(CNN)

图像处理

LeNet、ResNet

循环网络(RNN, LSTM, GRU)

序列数据

NLP、时间序列

自编码器(AE)

特征学习、降维

PCA 的非线性版本

Transformer

注意力机制模型

GPT、BERT 等

还是一句话总结:人工神经网络是用数学模拟神经元连接的非线性函数系统, 通过前向传播学习输入到输出的复杂映射, 通过反向传播不断自我调整, 最终让“算法”具备了学习函数形状的能力

深度神经网络

我们继续说这个问题,就是梯度消失和梯度爆炸。在反向传播中,梯度要层层乘上每一层的权重矩阵和激活函数导数。如果每一层导数和权重略小于一,特别多层之后就会变成0,如果都略大于 1,则梯度指数级爆炸。说一下解决方法

解决方式

保持前向信号和反向梯度在各层之间的方差尽可能恒定

有xavier初始化和He初始化

项目

Xavier 初始化(Glorot Initialization)

He 初始化(Kaiming Initialization)

设计思想

保持前向传播与反向传播时,输入输出的方差相同,防止梯度消失或爆炸

针对 ReLU 族激活,考虑 ReLU 截断一半输入的情况,使输出方差保持稳定

适用激活函数

Sigmoid、tanh 等双边激活函数

ReLU、Leaky ReLU、ELU 等单边激活函数

目标

保持信号方差在层与层之间恒定

在 ReLU 截断后仍维持方差一

前向传播稳定性

对称传播(输入输出两侧平衡)

仅考虑输入侧(适合非对称 ReLU)

反向传播稳定性

对梯度衰减敏感(Sigmoid 时)

对 ReLU 深层网络更稳健

常见用途

早期全连接网络、RNN、Sigmoid/tanh 网络

现代 CNN、ReLU 深层网络

效果总结

防止 Sigmoid 梯度消失;适合较浅网络

避免 ReLU 梯度消失;更适合深层网络

Xavier → 适合“双边激活”函数(Sigmoid / tanh)。He → 适合“单边激活”函数(ReLU 及其变体)。

在之后就是使用非饱和的激活函数,如ReLU系列的

还有就是批量归一化,在每层中,对每个 mini-batch 的输入标准化(均值=0,方差=1),然后再学习两个可训练参数(scale γ, shift β)恢复分布。可以说就是在每一层加入了一个“稳压器”。

问题

原因

对应方案

梯度消失

激活函数饱和、权重过小

He/Xavier 初始化、ReLU 激活、BatchNorm

梯度爆炸

权重过大、累积放大

梯度裁剪、BatchNorm、正则化

训练不稳定

输入分布变化、学习率大

BN、学习率调度

快速优化器

深度学习训练的“加速核心”——就像不同的“赛车引擎”,这些优化器和学习率调度器让网络更快、更稳、更聪明地收敛

普通的梯度下降容易陷入局部最小值;在陡峭或弯曲的损失面上收敛慢;同方向反复震荡(尤其在深谷形区域)

然后我们发明了Momentum 动量法,普通 SGD 像“光脚走山路”,每次都被地形拖慢。Momentum 像“给梯度加惯性”,让更新方向更平滑。

在之后,普通动量先“看梯度再走”,Nesterov 是“先走一步再看梯度”:“预判”未来的方向;避免过冲;收敛更快、更稳定。

在之后又发明了AdaGrad,不同参数学习速度不同,给每个参数单独调学习率。AdaGrad = 自适应步长 + 记忆所有历史梯度。常更新的参数(大梯度)→ 学习率减小;少更新的参数 → 学习率保持大;适合稀疏特征(NLP、推荐系统)。

在这个基础上又有RMSProp解决 AdaGrad 学习率“衰减过快”问题。只保留梯度平方的指数加权平均,而不是全部累加。自适应学习率;适合非平稳目标(如循环网络);不会像 AdaGrad 那样衰减到 0。

最后是Adam(Adaptive Moment Estimation)

也就是集大成者:Momentum + RMSProp, 同时跟踪:

  • 一阶动量(梯度的平均);

  • 二阶动量(梯度平方的平均)。

收敛快;对超参数不敏感;适合深度网络。Adam 就像:Momentum 加速、RMSProp 控制方向,两者融合的混合动力引擎。

学习率调度

这里补充这个概念

即使有强优化器,学习率 η 仍是关键。固定学习率可能:

太大 → 震荡;

太小 → 收敛慢。

常见策略:

调度器

公式/策略

效果

Step Decay

每 N 个 epoch 把 η 乘以一个 γ (如 0.1)

分阶段加速收敛

Exponential Decay

ηₜ = η₀·exp(-kt)

平滑下降

Cosine Annealing

ηₜ = ηmin + 0.5(ηmax - η_min)(1 + cos(πt/T))

周期性收缩放大

Cyclical LR

在两界之间周期振荡

改善局部极小点逃逸

Warm Restarts

先逐步升,再降,反复循环

更稳健的收敛

整体进化发展

方法

核心改进

类比

I

SGD

固定学习率

徒步下山

II

Momentum / NAG

加惯性(速度)

滑板加速下山

III

AdaGrad / RMSProp

自适应步长

每个方向有独立油门

IV

Adam

动量 + 自适应结合

混合动力赛车

V

LR Scheduler

动态调速

智能巡航系统

正则化

当模型太强、参数太多、数据太少时,它会把训练集的噪声和偶然模式也当作“规律”去学。

我们就有这个正则化,

  1. 提前停止

不让模型“学太久”。 当验证集误差开始上升时,立即停止训练。

  1. L1 / L2 正则化

在损失函数中加入对参数规模的惩罚项。

对比

L1

L2

导致

稀疏权重(部分为 0)

小权重(均被缩小)

可解释性

常用场景

特征选择

深度模型正则

  1. Dropout(随机失活)

在训练过程中随机“关闭”一部分神经元连接,防止它们彼此过度依赖(co-adaptation)。类似集成学习(ensemble);强制网络学出冗余表示;大大提升泛化能力

  1. 最大范数约束

限制每个神经元权重向量的长度(L2 范数上限),防止权重无限增大;稳定训练;常与 Dropout 搭配使用。

  1. 数据扩充

既然模型太会记,那就多给它“变化的题目”。图像:旋转、平移、缩放、翻转、加噪声;文本:同义词替换、随机删除;语音:变速、加背景噪音。可以增强样本多样性;减少模型记忆训练集细节;逼近“真实世界分布”。

类别

方法

控制目标

模型限制

L1/L2、最大范数、Dropout

降低自由度

训练控制

提前停止

防止过学

数据增强

Data Augmentation

扩充有效样本

现象

比喻

对应方法

模型太贪心

“学太多不该学的”

L1/L2 正则、Max-Norm

训练太久

“刷题过头”

Early Stopping

神经元互相抄作业

“组团背题”

Dropout

样本太少

“见识太窄”

Data Augmentation

现代神经网络

模块

现代默认选择

核心思想

初始化

He 初始化(for ReLU)Xavier 初始化(for GELU / tanh)

保持梯度稳定

激活函数

GELU / Swish / ReLU6

平滑、非饱和,防梯度消失

归一化层

BatchNorm / LayerNorm / RMSNorm

稳定分布,防梯度爆炸

正则化

Dropout + Weight Decay + Data Augmentation

防止过拟合

优化器

AdamW / Lion / RMSProp

自适应动量 + 权重衰减

学习率调度

Warmup + Cosine Annealing / OneCycleLR

平滑启动,渐进收敛

可以开始炼丹了!!!

现代神经网络的“黄金组合”是: He 初始化 + GELU 激活 + LayerNorm + AdamW + Cosine 调度 + Dropout + Weight Decay。是目前几乎所有主流架构(ResNet、Transformer、ViT、BERT、GPT)的基础。

卷积神经网络

为什么要卷积?

在全连接网络(MLP)中,每个神经元都与前一层所有神经元相连。 图像输入若是 256 \times 256,那就是 65,536 个特征, 一层 100 个神经元就有 650 万个参数——非常庞大。

而且图像像素之间是局部相关的(例如边缘、角、纹理),并不需要每个神经元都看全图。

于是我们引入 “局部感受野 + 权重共享”,这就是卷积层的核心思想。

卷积层

卷积层通过一个小滤波器(kernel)滑动在输入上,计算点积形成特征图(feature map)。

池化层

在保持主要特征的同时,降低维度和计算量,并提升模型的平移与尺度不变性。

类型

计算方式

特点

Max Pooling

取窗口内最大值

保留最显著特征,常用

Average Pooling

取平均值

平滑特征,旧网络常见

Global Average Pooling (GAP)

整张特征图平均成一个值

取代全连接层,减少参数(如 GoogLeNet)

通用架构

输入 → [卷积层 + 激活 + 池化]*N → 全连接层 → Softmax 输出

在深层网络中还会加:BatchNorm / LayerNorm, Dropout, 残差连接(ResNet)

发展过程

LeNet-5 ---> AlexNet ---> GoogLeNet ---> ResNet

ResNet 是分水岭,之后的设计都是“在它的肩膀上进化”。具体可以去查询了解

方向

示例

思想

更深网络

ResNeXt, DenseNet

多分支连接、特征复用

轻量化网络

MobileNet, EfficientNet

深度可分离卷积、宽高复合缩放

混合架构

ConvNeXt, ViT

CNN + Transformer 混合

自动结构搜索

NASNet, EfficientNet

自动优化网络结构

本质思想

  1. 局部感受野 → 捕捉空间相关性

  2. 权重共享 → 减少参数

  3. 层级抽象 → 从边缘到语义

  4. 多尺度融合 → Inception

  5. 跨层传梯 → ResNet

CNN 就像一个层层递进的“视觉系统”: 先看线条 → 再看形状 → 再看对象。

卷积层 负责“提特征”; 池化层 负责“压信息”; 全连接层 负责“判类别”;

循环神经网络

刚刚卷积是视觉王国,现在是序列的王国

传统神经网络(MLP、CNN)一次只能处理固定长度、独立样本。但许多现实任务都是时间相关、可变长的。所以RNN诞生了。

当前时刻的输出不仅取决于当前输入,还取决于上一个时刻的隐藏状态

把循环结构展开就变成一个深层网络。其中同一个权重 W_{hh} 被重复使用——这叫 参数共享。 每个时间步都“继承”前一步的状态。

训练 RNN 时要反向传播跨越时间维度,这称为:BPTT(Backpropagation Through Time)。当权重或激活导数 < 1 → 梯度逐渐变小(梯度消失)当它们 > 1 → 梯度指数放大(梯度爆炸)。这正是原始 RNN 难以训练的核心问题。

RNN缺陷:

问题

原因

后果

梯度消失

长时间依赖中导数连乘 < 1

记不住远距离信息

梯度爆炸

导数连乘 > 1

参数发散

训练慢

时间展开过长

收敛困难

所以有人提出了LSTM,让网络自己决定哪些信息记住、哪些忘掉

后有GRU简化了LSTM GRU把三个门合并为两个:

  1. 更新门 (Update Gate):控制记忆保留比例

  2. 重置门 (Reset Gate):控制遗忘旧信息的程度

公式更简单、计算更快,性能接近 LSTM。

GRU ≈ “LSTM 的小巧版”,更适合实时或小模型场景。

RNN架构

类型

结构

应用

Many-to-One

多个输入 → 一个输出

情感分析、语音识别

One-to-Many

一个输入 → 多个输出

图像描述生成

Many-to-Many

序列到序列

机器翻译、对话生成

强化学习

它不是被动模仿(监督学习),也不是单纯发现规律(无监督学习),而是靠试错与奖励去摸索策略。 这让它在博弈、游戏、机器人控制、自动驾驶等任务上成为真正的“决策智能”核心。我这里也是简略讲一下

一、强化学习的基本构成

强化学习的世界可以抽象为一个交互循环:

智能体(Agent) ⇄ 环境(Environment)

每个时间步:

  1. Agent 观察环境状态 s_t

  2. 执行动作 a_t

  3. 环境反馈奖励 r_t,并转移到新状态 s_{t+1}

  4. Agent 更新策略,让未来回报最大化

目标是学一个策略函数 π(a|s), 使得累计期望奖励最大化:

强化学习三大核心要素

策略;价值函数;奖励函数

维度

对应思想

策略 π

决定动作选择(行为)

价值函数 V/Q

评估行为好坏(评价)

奖励 r

提供即时反馈(信号)

动态规划

已知规则下的最优规划(理论求解)

蒙特卡洛

基于经验的平均回报(回合后更新)

时序差分

即时误差校正的近似学习(逐步更新)

进化阶段

阶段

核心特征

代表

经典强化学习

表格型 Q-learning

Sutton & Barto (1998)

深度强化学习

Q-learning + CNN

DeepMind DQN (2013)

策略梯度时代

PPO, A3C, DDPG

2016~2019

RLHF

强化学习 + 人类反馈

GPT, Claude 等

自博弈 / 元学习

AI 自我进化

AlphaZero, MuZero

其他大多数机器学习都是经验论,通过已有的数据去总结规律,我们从哲学角度来看强化学习,强化学习不是描述世界,而是行动于世界,以目的为导向地改变世界。

强化学习是一种基于奖励的自我改进机制: 它不依赖标签,而依赖后果; 它不模仿,而是探索; 它不追求“每步正确”,而追求“长期最优”。

“它学的不是答案,而是——怎么赢。”