当前位置: 首页 > news >正文

Day 17:神经网络入门(MLP、激活函数、反向传播、优化器)

Day 17:神经网络入门(MLP、激活函数、反向传播、优化器)

📋 目录

  1. 神经网络概述
  2. 感知机与多层感知机(MLP)
  3. 激活函数详解
  4. 前向传播与反向传播
  5. 优化器与学习率
  6. 过拟合与正则化

第一部分:神经网络概述

1.1 什么是神经网络?

人工神经网络(ANN)是受生物神经系统启发而设计的计算模型,由大量相互连接的神经元组成。

生物神经元 vs 人工神经元

生物神经元人工神经元
树突(接收信号)输入x i x_ixi
细胞体(处理)加权和 + 激活函数
轴突(输出)输出y yy
突触(连接强度)权重w i w_iwi

1.2 神经网络的发展历程

时间里程碑贡献者
1958年感知机Rosenblatt
1986年反向传播算法Rumelhart, Hinton
2006年深度学习Hinton
2012年AlexNetKrizhevsky
2017年TransformerVaswani

1.3 为什么需要神经网络?

传统机器学习 vs 神经网络

特性传统ML神经网络
特征工程需要手动构造自动学习特征
非线性需核技巧天然非线性
大数据性能饱和随数据增长
可解释性较好较差

第二部分:感知机与多层感知机(MLP)

2.1 单层感知机

结构:输入层 → 输出层(无隐藏层)

数学形式
y = sign ( w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b ) y = \text{sign}(w_1x_1 + w_2x_2 + \dots + w_nx_n + b)y=sign(w1x1+w2x2++wnxn+b)

局限性:只能解决线性可分问题(如XOR问题无法解决)

2.2 多层感知机(MLP)

结构:输入层 → 隐藏层 → 输出层

输入层 隐藏层 输出层 x₁ ────→ h₁ ────→ y₁ x₂ ────→ h₂ x₃ ────→ h₃ ...

数学形式

h = f ( W ( 1 ) x + b ( 1 ) ) h = f(W^{(1)}x + b^{(1)})h=f(W(1)x+b(1))

y = g ( W ( 2 ) h + b ( 2 ) ) y = g(W^{(2)}h + b^{(2)})y=g(W(2)h+b(2))

其中f ffg gg是激活函数。

2.3 MLP的表示能力

万能近似定理:一个具有足够神经元的单隐藏层MLP可以逼近任意连续函数。


第三部分:激活函数详解

3.1 为什么需要激活函数?

没有激活函数:多层线性变换等价于单层线性变换

W 2 ( W 1 x + b 1 ) + b 2 = W x + b W_2(W_1x+b_1)+b_2 = Wx+bW2(W1x+b1)+b2=Wx+b

有了激活函数:引入非线性,可以学习复杂模式

3.2 常用激活函数对比

函数公式导数优点缺点
Sigmoidσ ( x ) = 1 1 + e − x \sigma(x) = \cfrac{1}{1+e^{-x}}σ(x)=1+ex1σ ( x ) ( 1 − σ ( x ) ) \sigma(x)(1 - \sigma(x))σ(x)(1σ(x))平滑,输出[0,1]梯度消失,非零中心
Tanhtanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x) = \cfrac{e^x - e^{-x}}{e^x + e^{-x}}tanh(x)=ex+exexex1 − tanh ⁡ 2 ( x ) 1 - \tanh^2(x)1tanh2(x)输出[-1,1],零中心梯度消失
ReLUReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x)0或1计算快,缓解梯度消失神经元死亡
Leaky ReLUmax ⁡ ( 0.01 x , x ) \max(0.01x, x)max(0.01x,x)0.01或1解决神经元死亡参数固定
Softmaxe x i ∑ e x j \cfrac{e^{x_i}}{\sum e^{x_j}}exjexi特殊输出概率多分类专用

3.3 激活函数选择指南

层类型推荐激活原因
隐藏层ReLU计算快,缓解梯度消失
隐藏层(备选)Leaky ReLU, ELU解决神经元死亡
输出层(二分类)Sigmoid输出概率
输出层(多分类)Softmax输出概率分布
输出层(回归)Linear输出连续值

3.4 Sigmoid和Tanh的梯度消失问题

# ReLU vs Sigmoid 梯度对比# Sigmoid在|x|>3时梯度接近0# ReLU在x>0时梯度=1,x<0时梯度=0

第四部分:前向传播与反向传播

4.1 前向传播(Forward Propagation)

过程:输入 → 逐层计算 → 输出

# 单层前向传播defforward_pass(X,W,b,activation):z=np.dot(X,W)+b a=activation(z)returna

损失函数:衡量预测与真实值的差距

任务损失函数公式
回归MSE$ L = \frac{1}{n}\sum(y - \hat{y})^2 $
二分类二元交叉熵$ L = -[y\log\hat{y} + (1 - y)\log(1 - \hat{y})] $
多分类分类交叉熵$ L = -\sum y_i\log\hat{y}_i $

4.2 反向传播(Backpropagation)

核心思想:利用链式法则计算损失函数对每个参数的梯度。

链式法则
$ \frac{\partial L}{\partial w} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial z} \cdot \frac{\partial z}{\partial w} $

步骤

  1. 计算输出层误差δ L \delta_LδL
  2. 逐层反向传播误差δ l = δ l + 1 ⋅ W l + 1 T ⊙ σ ′ ( z l ) \delta_l = \delta_{l+1} \cdot W_{l+1}^T \odot \sigma'(z_l)δl=δl+1Wl+1Tσ(zl)
  3. 计算梯度∂ L ∂ W l = a l − 1 T δ l \frac{\partial L}{\partial W_l} = a_{l-1}^T \delta_lWlL=al1Tδl
  4. 更新参数W l : = W l − α ∂ L ∂ W l W_l := W_l - \alpha \frac{\partial L}{\partial W_l}Wl:=WlαWlL

4.3 反向传播示例(手算)

# 简化示例:单隐藏层网络# 输入: x = [x1, x2]# 隐藏层: h = σ(W1·x + b1)# 输出: y = σ(W2·h + b2)# 损失: L = (y - y_true)²# 梯度计算:# dL/dW2 = dL/dy * dy/dz2 * dz2/dW2# dL/dW1 = dL/dy * dy/dz2 * dz2/dh * dh/dz1 * dz1/dW1

第五部分:优化器与学习率

5.1 梯度下降变体

优化器特点更新公式
BGD使用全部样本$ \theta := \theta - \alpha \nabla J(\theta) $
SGD每次一个样本快但不稳定
Mini-batch每次一个batch速度和稳定性平衡

5.2 自适应优化器

优化器核心思想特点
Momentum加入惯性加速收敛,减少震荡
RMSprop自适应学习率适合非平稳目标
AdamMomentum + RMSprop最常用,默认选择
AdamWAdam + 权重衰减更好的正则化

5.3 Adam优化器详解

Adam (Adaptive Moment Estimation)

  • 一阶矩估计(均值):$ m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t $
  • 二阶矩估计(未中心化方差):$ v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 $
  • 偏差校正后更新:$ \theta_{t+1} = \theta_t - \alpha \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} $

推荐配置:

  • $ \alpha = 0.001 $(学习率)
  • $ \beta_1 = 0.9 $
  • $ \beta_2 = 0.999 $
  • $ \epsilon = 10^{-8} $

5.4 学习率调度

学习率衰减策略

# 1. 阶梯衰减# 2. 指数衰减# 3. 余弦退火# 4. 循环学习率

第六部分:过拟合与正则化

6.1 神经网络的过拟合

原因

  • 模型参数远多于样本数
  • 训练时间过长
  • 网络结构过复杂

6.2 正则化方法

方法原理效果
L1/L2正则化权重大小惩罚防止权重过大
Dropout随机丢弃神经元集成效果
早停验证集监控防止过度训练
Batch Normalization层间标准化稳定训练
数据增强增加训练样本提高泛化

6.3 Dropout详解

原理:训练时以概率p pp随机丢弃神经元

效果

  • 防止神经元共适应
  • 相当于训练多个子网络的集成
  • Dropout比率通常取 0.2-0.5

6.4 Early Stopping

fromsklearn.neural_networkimportMLPClassifier# 使用早停mlp=MLPClassifier(hidden_layer_sizes=(100,50),early_stopping=True,validation_fraction=0.1,n_iter_no_change=10)
http://www.jsqmd.com/news/717692/

相关文章:

  • ARM Fast Models与MxScript开发指南
  • ZGC 2.0内存回收失效真相(JDK 25.0.1 HotFix未公开的Region扫描缺陷解析)
  • 腾讯与香港科大联手:让AI智能体像人类一样主动探索未知世界
  • OpenClaw协议霸权——从 MCP 标准到意图封建化的政治经济学(第十八篇)
  • AI写作革命:24维法医文体学精准复刻作者风格
  • 【GPR回归预测】基于matlab双向长短期记忆神经网络结合高斯过程回归(BiLSTM-GPR)的多变量回归预测 (多输入单输出)【含Matlab源码 15399期】
  • 你的车辆推荐模型为什么不准?从kNN实战聊聊特征工程里的‘归一化’陷阱
  • 核能监管文档多模态AI检索系统开发与优化
  • 为什么不同院校对AI率容忍度不同:高校AI率标准差异深度解读
  • 香港大学等九所顶尖高校联手攻克脑机接口难题:无需重新训练
  • ESP32C3的I2S音频输出引脚不够用?巧用PCM5102A的BCK/FS/DATA三线模式节省GPIO
  • 5分钟学会:用本地免费工具搞定视频字幕提取,保护隐私还能支持87种语言
  • RexUniNLU参数详解:schema版本管理、热更新机制与灰度发布实践
  • Stable Diffusion WebUI部署后,别急着画图!先做好这5个关键设置(Windows 10版)
  • Semantic Kernel:构建AI原生应用的语义编程框架详解
  • 嘎嘎降AI和PaperRR哪个术语保护更好:2026年学术场景实测对比
  • oasysdb:嵌入式向量数据库的设计哲学与RAG应用实战
  • Memstate MCP Server:为AI智能体构建版本化、结构化的记忆系统
  • 德克萨斯大学和新加坡国立大学研究者发现一个令人深思的计算盲区
  • ImageGlass:重新定义Windows图像浏览效率的90+格式全能解决方案
  • Graphormer分子建模实战:结合AlphaFold2结构预测做多模态联合推理
  • Java 25 FFI原生互操作秘钥(内部泄露版):绕过MethodHandle生成、直连LLVM IR的实验性API首次公开
  • C++27 ranges扩展深度解析(ISO/IEC TS 25879-2027草案实测解读)
  • BRAINIAC SaaS Blueprint:结构化操作系统,从想法到规模化增长
  • Astrolabe视频预测:强化学习与蒸馏技术的创新融合
  • Python导包踩坑实录:为什么你的PaddleOCR死活import不进来?
  • Keras模型检查点技术详解与最佳实践
  • VS Code + MCP = 下一代AI原生开发环境?手把手配置本地Ollama/Mistral/DeepSeek双模态MCP Server的4个关键转折点
  • iPad远程控制测试测量仪器的RDP方案与实践
  • 保姆级教程:手把手为嵌入式Linux移植NAU8810音频Codec驱动(基于ASoC框架)