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

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

文章目录

  • 1. 神经网络基本原理
    • 1.1. 什么是神经网络
    • 1.2. 核心思想
  • 2. 基础组件
  • 3. 前向传播(Forward Propagation)
  • 4. 反向传播(Backpropagation)
  • 5. 激活函数对比
  • 6. 网络架构类型
  • 7. 优化策略
  • 8. Python示例(PyTorch)
  • 9. 超参数调优
  • 10. 应用场景
  • 11. 前沿方向
  • 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} WRm×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=σ(Wlhl1+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(WLhL1+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} WlL=hlLWlhl

  • 关键步骤:
      1. 计算输出层误差 δ L = ∇ y ^ L ⊙ f ′ ( z L ) \delta_L = \nabla_{\hat{y}} \mathcal{L} \odot f'(\mathbf{z}_L) δL=y^Lf(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=δlhl1T

5. 激活函数对比

函数公式优点缺点
Sigmoid 1 1 + e − x \frac{1}{1 + e^{-x}} 1+ex1输出在(0,1),适合概率梯度消失,非零中心化
Tanh e x − e − x e x + e − x \frac{e^x - e^{-x}}{e^x + e^{-x}} ex+exexex零中心化,梯度更强仍存在梯度消失
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} WN(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 λW2
    • Dropout:训练时随机屏蔽神经元(比例通常0.2~0.5)
  • 批归一化(BatchNorm):

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

8. Python示例(PyTorch)

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)。

相关文章:

  • 代码随想录算法训练营第五十九天 | 1.ford算法精讲 卡码网94.城市间货物运输
  • 用python借用飞书机器人群发布定期内容
  • Eclipse 插件开发 3 菜单栏
  • 2025.04.26-饿了么春招笔试题-第一题
  • c++ package_task
  • 【Hive入门】Hive分桶表深度解析:从哈希分桶到Join优化的完整指南
  • Ubuntu编译opencv源码
  • SpringBoot实现的后端开发
  • 【计算机视觉】CV实战项目 -深度解析PaddleSegSharp:基于PaddleSeg的.NET图像分割解决方案
  • 数值数据处理的黄金法则:构建高质量机器学习模型的基石‌
  • per-task affinity 是什么?
  • 思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)
  • 配置文件的四级分类
  • 在Mybatis中为什么要同时指定扫描mapper接口和 mapper.xml 文件,理论单独扫描 xml 文件就可以啊
  • 数字IC后端实现教程之InnovusICC2添加Tie High/Low cell脚本
  • 4月25日日记(补)
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-前端美化滚动条问题
  • 桌面端开发技术栈选型:开启高效开发之旅
  • Eigen库编译
  • BT152-ASEMI机器人率器件专用BT152
  • 庆祝中华全国总工会成立100周年暨全国劳动模范和先进工作者表彰大会隆重举行,习近平发表重要讲话
  • 全球前瞻|王毅赴巴西出席金砖外长会,加拿大迎来“几十年来最重要大选”
  • 加总理:目前没有针对加拿大人的“活跃威胁”
  • 因高颜值走红的女通缉犯出狱后当主播自称“改邪归正”,账号已被封
  • 西北大学党委副书记吕建荣调任西安财经大学党委书记
  • 南方医科大学原副校长宁习洲主动投案,接受审查调查