浅层神经网络:全面解析(扩展)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,可以分享一下给大家。点击跳转到网站。
https://www.captainbed.cn/ccc
\begin{array}{c|c}
\text{层类型} & \text{数学表达式} \\
\hline
输入层 & \mathbf{X} \in \mathbb{R}^{n\times d} \\
隐藏层 & \mathbf{H} = \sigma(\mathbf{XW}_h + \mathbf{b}_h) \\
输出层 & \mathbf{\hat{Y}} = \phi(\mathbf{HW}_o + \mathbf{b}_o)
\end{array}
▌符号说明表:
符号 | 维度 | 物理意义 | 典型值域 |
---|---|---|---|
n | Scalar | 样本数量 | 10^2 ~ 10^6 |
d | Scalar | 输入特征维度 | 4(鸢尾花)~784(MNIST) |
W_h | R^{d×h} | 隐藏层权重矩阵 | 初始值范围[-0.1,0.1] |
σ | Function | 激活函数 | tanh/ReLU |
数据集:乳腺癌诊断(569样本,30个特征)
# 网络架构
model = nn.Sequential(
nn.Linear(30, 12),
nn.BatchNorm1d(12),
nn.LeakyReLU(0.1),
nn.Dropout(0.3),
nn.Linear(12, 1),
nn.Sigmoid()
)
# 训练曲线
"""
Epoch 100/100
Train AUC: 0.982 | Val AUC: 0.956
precision recall f1-score
malignant 0.96 0.92 0.94
benign 0.95 0.97 0.96
"""
# 数据预处理流程图
graph TD
A[原始收盘价] --> B[差分处理]
B --> C[滑动窗口采样]
C --> D[归一化到[-1,1]]
D --> E[3:1划分训练/测试集]
# 模型结构对比表
| 模型 | MAE(USD) | RMSE | 训练时间 |
|-----------------|----------|------|----------|
| ARIMA | 2.34 | 3.01 | 5s |
| SVR | 1.89 | 2.45 | 20s |
| 浅层神经网络 | 1.52 | 2.07 | 45s |
# 改进的LeNet架构
nn.Sequential(
nn.Conv2d(1, 6, 5), # 输入通道1,输出通道6
nn.AvgPool2d(2), # 2x2池化
nn.Sigmoid(),
nn.Flatten(), # 展平为向量
nn.Linear(6*12*12, 120),
nn.Linear(120, 2)
)
# 混淆矩阵热力图
"""
Pred_NG Pred_OK
Actual_NG 183 7
Actual_OK 9 201
"""
方法 | 实现方式 | 适用场景 | 效果评估 |
---|---|---|---|
L2正则化 | weight_decay=1e-4 | 小样本数据 | 验证loss↓15% |
Dropout | p=0.5 | 全连接层 | 准确率↑3% |
早停法 | patience=10 | 所有场景 | 防止过拟合核心 |
数据增强 | 旋转/平移/噪声 | 图像/信号数据 | 泛化能力↑20% |
\begin{cases}
\mathbf{H} = \sigma(\mathbf{XW} + \mathbf{b}) \\
\mathbf{W} \sim \mathcal{N}(0, 0.1) \quad \text{(随机初始化后冻结)} \\
仅训练输出层权重\mathbf{W}_o
\end{cases}
▌CIFAR-10实验结果:
Top-1 Acc: 72.3%(对比全训练78.5%)
训练时间缩短至1/4
# 弹簧振动微分方程约束
def physics_loss(y_pred, t):
k = 2.0 # 弹性系数
y_t = grad(y_pred, t) # 一阶导
y_tt = grad(y_t, t) # 二阶导
return torch.mean((y_tt + k*y_pred)**2) # 物理方程损失
# 总损失函数
total_loss = ce_loss + 0.1*physics_loss
graph TB
A[PyTorch训练] --> B[ONNX导出]
B --> C[TensorRT优化]
C --> D[FP16量化]
D --> E[嵌入式部署]
E --> F[Jetson Nano推理]
# 性能对比表
| 设备 | 功耗(W) | 时延(ms) | 吞吐量(FPS) |
|--------------|---------|----------|-------------|
| CPU i7-11800H| 45 | 12.3 | 81 |
| Jetson Nano | 5 | 28.7 | 34 |
| RK3399 | 3 | 41.2 | 24 |
# SHAP值特征重要性
shap_values = explainer.shap_values(X_test)
plt.figure(figsize=(10,6))
shap.summary_plot(shap_values, X_test, feature_names=iris.feature_names)
# 输出结果:
"""
花瓣宽度 (cm): 0.42 ← 最大贡献
花瓣长度 (cm): 0.31
萼片长度 (cm): 0.19
萼片宽度 (cm): 0.08
"""
《Learning representations by back-propagating errors》
《Neural Networks: Tricks of the Trade》
《Random Features for Large-Scale Kernel Machines》
快,让 我 们 一 起 去 点 赞 !!!!