机器学习(10)——神经网络

文章目录

  • [1. 神经网络基本原理](#1. 神经网络基本原理)
    • [1.1. 什么是神经网络](#1.1. 什么是神经网络)
    • [1.2. 核心思想](#1.2. 核心思想)
  • [2. 基础组件](#2. 基础组件)
  • [3. 前向传播(Forward Propagation)](#3. 前向传播(Forward Propagation))
  • [4. 反向传播(Backpropagation)](#4. 反向传播(Backpropagation))
  • [5. 激活函数对比](#5. 激活函数对比)
  • [6. 网络架构类型](#6. 网络架构类型)
  • [7. 优化策略](#7. 优化策略)
  • [8. Python示例(PyTorch)](#8. Python示例(PyTorch))
  • [9. 超参数调优](#9. 超参数调优)
  • [10. 应用场景](#10. 应用场景)
  • [11. 前沿方向](#11. 前沿方向)
  • [12. 总结](#12. 总结)

1. 神经网络基本原理

1.1. 什么是神经网络

神经网络(Neural Networks,简称NN)是一类模仿生物神经系统的数学模型,用于处理和解决各种类型的任务,如分类、回归、模式识别等。神经网络属于机器学习领域的一个重要分支,特别是在深度学习(Deep Learning)中起到了核心作用。

1.2. 核心思想

神经网络是一种受生物神经元启发的多层非线性模型,通过堆叠可学习的权重层和激活函数,实现对复杂数据的表示与预测。

其核心能力来自:

  • 层次化特征提取:浅层捕捉局部/低级特征(如边缘),深层组合为高级语义(如物体)。

  • 端到端学习:通过梯度反向传播自动优化所有参数。

2. 基础组件

组件 作用 常见实现
神经元(Neuron) 计算加权输入+偏置,通过激活函数输出。 z = w T x + b ,   a = σ ( z ) z = w^T x + b, \, a = \sigma(z) z=wTx+b,a=σ(z)
权重(Weights) 连接神经元,决定特征重要性。 矩阵 W ∈ R m × n W \in \mathbb{R}^{m \times n} W∈Rm×n
激活函数 引入非线性,使网络能拟合任意函数。 ReLU, Sigmoid, Tanh, Softmax
损失函数 量化预测与真实值的差距,指导参数更新。 MSE(回归), Cross-Entropy(分类)
优化器 调整权重更新的方向和步长。 SGD, Adam, RMSprop

3. 前向传播(Forward Propagation)

数据从输入层逐层传递至输出层:
输入层 → h 1 = σ ( W 1 x + b 1 ) \text{输入层} \rightarrow \mathbf{h}_1 = \sigma(W_1 \mathbf{x} + \mathbf{b}_1) 输入层→h1=σ(W1x+b1)

隐藏层 → h l = σ ( W l h l − 1 + b l ) \text{隐藏层} \rightarrow \mathbf{h}l = \sigma(W_l \mathbf{h}{l-1} + \mathbf{b}_l) 隐藏层→hl=σ(Wlhl−1+bl)

输出层 → y ^ = f ( W L h L − 1 + b L ) \text{输出层} \rightarrow \hat{\mathbf{y}} = f(W_L \mathbf{h}_{L-1} + \mathbf{b}_L) 输出层→y^=f(WLhL−1+bL)

  • σ \sigma σ:激活函数(如ReLU)。

  • f f f:输出层激活函数(如Softmax用于多分类)

4. 反向传播(Backpropagation)

通过链式法则计算损失对每层权重的梯度,从输出层回溯至输入层:
∂ L ∂ W l = ∂ L ∂ h l ⋅ ∂ h l ∂ W l \frac{\partial \mathcal{L}}{\partial W_l} = \frac{\partial \mathcal{L}}{\partial \mathbf{h}_l} \cdot \frac{\partial \mathbf{h}_l}{\partial W_l} ∂Wl∂L=∂hl∂L⋅∂Wl∂hl

  • 关键步骤:
    *
    1. 计算输出层误差 δ L = ∇ y ^ L ⊙ f ′ ( z L ) \delta_L = \nabla_{\hat{y}} \mathcal{L} \odot f'(\mathbf{z}_L) δL=∇y^L⊙f′(zL)。
      1. 反向传播误差: δ l = ( W l + 1 T δ l + 1 ) ⊙ σ ′ ( z l ) \delta_l = (W_{l+1}^T \delta_{l+1}) \odot \sigma'(\mathbf{z}_l) δl=(Wl+1Tδl+1)⊙σ′(zl)。
      1. 计算梯度: ∇ W l L = δ l h l − 1 T \nabla_{W_l} \mathcal{L} = \delta_l \mathbf{h}_{l-1}^T ∇WlL=δlhl−1T。

5. 激活函数对比

函数 公式 优点 缺点
Sigmoid 1 1 + e − x \frac{1}{1 + e^{-x}} 1+e−x1 输出在(0,1),适合概率 梯度消失,非零中心化
Tanh e x − e − x e x + e − x \frac{e^x - e^{-x}}{e^x + e^{-x}} ex+e−xex−e−x 零中心化,梯度更强 仍存在梯度消失
ReLU max ⁡ ( 0 , x ) \max(0, x) max(0,x) 计算快,缓解梯度消失 神经元"死亡"问题
LeakyReLU max ⁡ ( α x , x ) \max(\alpha x,x) max(αx,x) 解决ReLU死亡问题( α = 0.01 \alpha=0.01 α=0.01) 需调参
Softmax e z i ∑ j e z j \frac{e^{z_i}}{\sum_j e^{z_j}} ∑jezjezi 多分类输出概率归一化 仅用于输出层

6. 网络架构类型

类型 结构特点 应用场景
全连接网络(FCN) 每层神经元与下一层全连接 小规模结构化数据(如表格数据)
卷积网络(CNN) 局部连接+权重共享,捕捉空间特征 图像、视频处理
循环网络(RNN) 时序递归结构,处理序列依赖 自然语言、时间序列预测
Transformer 自注意力机制,并行处理长序列 大语言模型(LLM)、多模态任务

7. 优化策略

  • 参数初始化:

    • Xavier初始化: W ∼ N W \sim \mathcal{N} W∼N(0, 2 n i n + n o u t ) \sqrt{\frac{2}{{n_{in}} + n_{out}}}) nin+nout2 )
    • He初始化(ReLU适用): 2 n i n \sqrt{\frac{2}{n_{in}}} nin2
  • 正则化:

    • L2正则化:损失函数中加入 λ ∥ W ∥ 2 \lambda \|W\|^2 λ∥W∥2
    • Dropout:训练时随机屏蔽神经元(比例通常0.2~0.5)
  • 批归一化(BatchNorm):

    • 对每层输入归一化: x ^ = x − μ σ 2 + ϵ \hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} x^=σ2+ϵ x−μ,加速训练。

8. Python示例(PyTorch)

python 复制代码
import torch
import torch.nn as nn
import torch.optim as optim

# 定义网络
class MLP(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim):
        super().__init__()
        self.layers = nn.Sequential(
            nn.Linear(input_dim, hidden_dim),
            nn.ReLU(),
            nn.Linear(hidden_dim, output_dim),
            nn.Softmax(dim=1)
        )
    
    def forward(self, x):
        return self.layers(x)

# 训练流程
model = MLP(input_dim=784, hidden_dim=128, output_dim=10)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

for epoch in range(10):
    optimizer.zero_grad()
    outputs = model(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()

9. 超参数调优

  • 学习率(lr):尝试对数尺度(如0.1, 0.01, 0.001)。

  • 批大小(batch_size):通常32~256,内存允许下越大越稳定。

  • 网络深度/宽度:根据任务复杂度调整(如ResNet可达1000层)。

10. 应用场景

  • 计算机视觉:图像分类(CNN)、目标检测(YOLO)。

  • 自然语言处理:机器翻译(Transformer)、情感分析(RNN)。

  • 强化学习:游戏AI(AlphaGo)、机器人控制。

11. 前沿方向

  • 自监督学习:利用无标签数据预训练(如对比学习)。

  • 神经架构搜索(NAS):自动化设计网络结构。

  • 可解释性:可视化注意力机制(如Grad-CAM)。

12. 总结

神经网络通过层次化非线性变换实现强大的函数拟合能力,其成功依赖于:

  • 架构设计(如CNN处理图像、Transformer处理文本)。

  • 优化技术(如Adam、Dropout)。

  • 大规模数据与算力支撑(GPU/TPU)。

相关推荐
乌旭22 分钟前
量子计算与GPU的异构加速:基于CUDA Quantum的混合编程实践
人工智能·pytorch·分布式·深度学习·ai·gpu算力·量子计算
deephub1 小时前
CLIMB自举框架:基于语义聚类的迭代数据混合优化及其在LLM预训练中的应用
人工智能·深度学习·大语言模型·聚类
思通数科AI全行业智能NLP系统3 小时前
AI视频技术赋能幼儿园安全——教师离岗报警系统的智慧守护
大数据·人工智能·安全·目标检测·目标跟踪·自然语言处理·ocr
struggle20253 小时前
deepseek-cli开源的强大命令行界面,用于与 DeepSeek 的 AI 模型进行交互
人工智能·开源·自动化·交互·deepseek
ocr_sinosecu14 小时前
OCR定制识别:解锁文字识别的无限可能
人工智能·机器学习·ocr
奋斗者1号5 小时前
分类数据处理全解析:从独热编码到高维特征优化
人工智能·机器学习·分类
契合qht53_shine5 小时前
深度学习 视觉处理(CNN) day_02
人工智能·深度学习·cnn
学渣676565 小时前
【10分钟读论文】Power Transmission Line Inspections电力视觉水文
机器学习
就叫飞六吧5 小时前
如何判断你的PyTorch是GPU版还是CPU版?
人工智能·pytorch·python
zsffuture5 小时前
opencv 读取3G大图失败,又不想重新编译opencv ,可以如下操作
人工智能·opencv·webpack