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

【深度学习笔记】2 浅层神经网络

浅层神经网络是指 隐藏层较少(通常为0-2层) 的神经网络,是深度学习发展早期的经典结构。与之相对的是“深层神经网络”(Deep Neural Network,DNN),后者通常包含多个隐藏层(如10层、100层甚至更多)。


1. 典型结构

浅层神经网络主要包括以下两种形式:

  1. 无隐藏层:仅输入层直接连接输出层(本质是线性模型或广义线性模型)。

    • 例如:逻辑回归(Logistic Regression)、感知机(Perceptron)。
    • 数学形式:输出 = f(W·X + b),其中 f 是激活函数(如Sigmoid)。
  2. 单隐藏层:输入层 → 1个隐藏层 → 输出层。

    • 例如:单隐层前馈网络(Single Hidden Layer Feedforward Network)。
    • 数学形式:
      隐藏层输出 H = f1(W1·X + b1)  
      最终输出 Y = f2(W2·H + b2)
      
      • f1f2 为激活函数(如ReLU、Sigmoid)。

2. 核心特点

  • 表达能力有限
    浅层网络可以逼近任意连续函数(根据通用近似定理,Universal Approximation Theorem),但需要大量隐藏层神经元,且难以高效学习复杂特征。
  • 训练简单
    参数较少,计算量小,不易过拟合,适合小规模数据集。
  • 可解释性较强
    权重和特征的关系相对直接(深层网络的抽象特征难以解释)。

3. 与深层神经网络的对比

特性浅层神经网络深层神经网络
隐藏层数0-2层≥3层(通常远多于3层)
特征抽象能力只能学习简单特征通过多层堆叠学习层次化特征
数据需求小规模数据即可训练需要大规模数据避免过拟合
计算复杂度高(依赖GPU等硬件加速)
典型应用线性可分问题、简单分类/回归图像识别、自然语言处理等复杂任务

4. 经典浅层神经网络示例

(1) 感知机(Perceptron)
  • 结构:输入层 → 输出层(无隐藏层)。
  • 激活函数:阶跃函数(Step Function)。
  • 局限:只能解决线性可分问题(如AND、OR运算),无法处理XOR等非线性问题。
(2) 单隐层前馈网络
  • 结构:输入层 → 1个隐藏层(含多个神经元)→ 输出层。
  • 激活函数:Sigmoid、Tanh、ReLU等。
  • 能力:可拟合任意连续函数(但需要足够多的隐藏神经元)。

5. 为什么需要深层网络?

尽管浅层网络理论上是“万能近似器”,但在实践中存在以下问题:

  • 效率低下
    学习复杂函数需要指数级增长的神经元数量(例如用浅层网络拟合图像特征会极其低效)。
  • 特征泛化差
    深层网络通过分层抽象(如边缘→纹理→物体部件→整体物体),能更高效地捕捉数据的层次化结构。

关键结论
浅层网络适合简单任务或计算资源受限的场景,而深层网络在复杂任务(如计算机视觉、自然语言处理)中表现更优。


6. 代码示例(单隐层网络)

以下是一个用PyTorch实现的单隐藏层神经网络(二分类任务):

import torch
import torch.nn as nnclass ShallowNN(nn.Module):def __init__(self, input_size, hidden_size):super().__init__()self.layer1 = nn.Linear(input_size, hidden_size)  # 隐藏层self.output = nn.Linear(hidden_size, 1)           # 输出层self.activation = nn.ReLU()                       # 激活函数def forward(self, x):x = self.activation(self.layer1(x))  # 隐藏层计算x = torch.sigmoid(self.output(x))    # 输出层Sigmoidreturn x# 示例:输入特征维度=10,隐藏层神经元=50
model = ShallowNN(input_size=10, hidden_size=50)

总结

  • 浅层神经网络:结构简单,隐藏层≤2层,适合解决线性或简单非线性问题。
  • 深层神经网络:通过多层非线性变换学习高级特征,适合复杂任务。
  • 选择依据:根据任务复杂度、数据量和计算资源权衡。
http://www.lryc.cn/news/588366.html

相关文章:

  • Dubbo 学习笔记
  • python接口自动化 - 使用requests库发送http请求
  • Datawhale AI夏令营——用户新增预测挑战赛
  • Docker入门指南(超详细)
  • 华为OD 消消乐游戏
  • LLaMA.cpp HTTP 服务参数: --pooling 嵌入模型 池化类型详解
  • 【时时三省】(C语言基础)用数组名作函数参数
  • 75、【OS】【Nuttx】【启动】caller-saved 和 callee-saved 示例
  • 数电汇总——logisim的辛酸史
  • 【Python进阶】深度复制——deepcopy
  • stm32-Modbus主机移植程序理解以及实战
  • JSCPC 2025 江苏省赛
  • 制造业实战:数字化集采如何保障千种备件“不断供、不积压”?
  • Java从入门到精通!第五天(面向对象(二))
  • 《解锁音频处理新姿势:探索Librosa的无限可能》
  • HarmonyOS应用无响应(AppFreeze)深度解析:从检测原理到问题定位
  • ISO-IEC-IEEE 42010架构规范
  • 016 进程控制 —— 进程创建
  • ShenYu实战、问题记录
  • Spring Boot 自带的 JavaMail 集成
  • 文心一言 4.5 开源深度剖析:中文霸主登场,开源引擎重塑大模型生态
  • 分布式光伏并网中出现的电能质量问题,如何监测与治理?
  • 时序预测 | Pytorch实现CNN-LSTM-KAN电力负荷时间序列预测模型
  • MongoDB从入门到精通
  • [Nagios Core] 事件调度 | 检查执行 | 插件与进程
  • 【Linux】Linux 操作系统 - 28 , 进程间通信(四) -- IPC 资源的管理方式_信号量_临界区等基本概念介绍
  • Excel常用快捷键与功能整理
  • 《恋与深空》中黑白羽毛是谁的代表物?
  • 【前端】【分析】前端功能库二次封装:组件与 Hook 方式的区别与好处分析
  • 体验RAG GitHub/wow-rag