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

Pytorch:神经网络基础

目录

一、什么是神经网络

二、神经网络的构成

三、激活函数

四、模型参数计算

五、神经网络的优缺点

六、损失函数

七、网络优化方法

八、学习率优化方法

九、正则化方法


📚 重点及目标

1、知道什么是神经网络

2、知道常见的激活函数

3、了解常见的参数初始化方法

4、能够完成神经网络模型的搭建

5、知道神经网络模型的参数的计算方法

一、什么是神经网络

人工神经网络( Artificial Neural Network, 简写为ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的计算模型。

如下图所示:

二、神经网络的构成

1、神经网络构成

输入层,隐藏层和输出层。

2、隐藏层的特点

✅同一层的神经元之间没有连接

✅第 N 层的每个神经元和第 N-1层 的所有神经元相连(这就是full connected的含义),这就是全连接神经网络

✅全连接神经网络接收的样本数据是二维的,数据在每一层之间需要以二维的形式传递 第N-1层神经元的输出就是第N层神经元的输入

✅每个连接都有一个权重值(w系数和b系数)

3、构建神经网络示意图如下:

三、激活函数

1、激活函数的作用

激活函数用于对每层的输出数据进行变换, 进而为整个网络注入了非线性因素。此时, 神经网络就可以拟合各种曲线。

2、常见的激活函数

(1)Sigmod

(2)Tanh

(3)ReLU

(4)SoftMax

3、各种激活函数的选择方法

对于隐藏层:

1、优先选择ReLU激活函数

2、如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。

3、如果你使用了ReLU, 需要注意一下Dead ReLU问题, 避免出现0梯度从而导致过多的神经元死亡。

4、少用使用sigmoid激活函数,可以尝试使用tanh激活函数

对于输出层:

1、二分类问题选择sigmoid激活函数

2、多分类问题选择softmax激活函数

3、回归问题选择identity激活函数

4、参数初始化

激活函数的选择:

根据激活函数的类型选择对应的初始化方法

Sigmoid/Tanh:Xavier 初始化 ReLU/Leaky ReLU:kaiming 初始化

网络的深度

浅层网络:随机初始化即可

深层网络:需要考虑方差平衡,如 Xavier 或 kaiming 初始化

四、模型参数计算

🧩 神经网络的输入数据是为[batch_size, in_features]的张量经过网络处理后获取了[batch_size, out_features]的输出张量。

🧩模型参数的计算: 以第一个隐层为例:

该隐层有3个神经元,每个神经元的参数为:4个(w1,w2,w3,b1),所以一共用3x4=12个参数。 输入数据和网络权重是两个不同的事儿!理解这一点十分重要,要分得清。

五、神经网络的优缺点

1.优点

🔥 精度⾼,性能优于其他的机器学习⽅法,甚⾄在某些领域超过了⼈类 可以近似任意的⾮线

性函数 近年来在学界和业界受到了热捧,有⼤量的框架和库可供调。

2.缺点

🚫 ⿊箱,很难解释模型是怎么⼯作的 训练时间⻓,需要⼤量的计算⼒ ⽹络结构复杂,需要调

整超参数 ⼩数据集上表现不佳,容易发⽣过拟合。

六、损失函数

1、什么是损失函数?

在深度学习中, 损失函数是用来衡量模型参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异。

2、在多分类任务损失函数

在多分类任务通常使用softmax将logits转换为概率的形式,所以多分类的交叉熵损失也叫做softmax损失,它的计算方法是:

其中: y是样本x属于某一个类别的真实概率

而f(x)是样本属于某一类别的预测分数

S是softmax激活函数,将属于某一类别的预测分数转换成概率

L用来衡量真实值y和预测值f(x)之间差异性的损失结果

3、二分类损失函数

在处理二分类任务时,我们不再使用softmax激活函数,而是使用sigmoid激活函数,那损失函数也相应的进行调整,使用二分类的交叉熵损失函数:

其中: y是样本x属于某一个类别的真实概率 而y^是样本属于某一类别的预测概率 L用来衡量真实值y与预测值y^之间差异性的损失结果。 在pytorch中实现时使用nn.BCELoss() ,如下所示:

4、回归任务的损失函数

Mean Squared Loss/ Quadratic Loss(MSE loss)也被称为L2 loss,或欧氏距离,它以误差的平方和的均值作为距离 损失函数公式:

曲线如下图所示:

特点是: L2 loss也常常作为正则项。 当预测值与目标值相差很大时, 梯度容易爆炸。

Smooth L1说的是光滑之后的L1。损失函数公式:

如下图所示:

其中:𝑥=f(x)−y 为真实值和预测值的差值。 从上图中可以看出,

该函数实际上就是一个分段函数 在[-1,1]之间实际上就是L2损失,这样解决了L1的不光滑问题

在[-1,1]区间外,实际上就是L1损失,这样就解决了离群点梯度爆炸的问题。

七、网络优化方法

1、梯度下降

梯度下降法是一种寻找使损失函数最小化的方法。从数学角度来看,梯度的方向是函数增长速度最快的方向,那么梯度的反方向就是函数减少最快的方向,所以有:

其中,η是学习率,如果学习率太小,那么每次训练之后得到的效果都太小,增大训练的时间成本。如果,学习率太大,那就有可能直接跳过最优解,进入无限的训练中。解决的方法就是,学习率也需要随着训练的进行而变化。

在进行模型训练时,有三个基础的概念:

Epoch: 使用全部数据对模型进行一次完整训练,训练轮次

Batch_size: 使用训练集中的小部分样本对模型权重进行以此反向传播的参数更新,每次训练每批次样本数量

Iteration: 使用一个 Batch 数据对模型进行一次参数更新的过程

假设数据集有 50000 个训练样本,现在选择 Batch Size = 256 对模型进行训练。

每个 Epoch 要训练的图片数量:50000

训练集具有的 Batch 个数:50000/256+1=196

每个 Epoch 具有的 Iteration 个数:196

10个 Epoch 具有的 Iteration 个数:1960

2、梯度下降优化的方法

梯度下降优化算法中,可能会碰到以下情况: 碰到平缓区域,梯度值较小,

参数优化变慢 碰到 “鞍点” ,梯度为 0,参数无法优化

碰到局部最小值,参数不是最优

对于这些问题, 出现了一些对梯度下降算法的优化方法,例如:Momentum、AdaGrad、RMSprop、Adam 等

总结:

- **简单任务和较小的模型**:SGD 或 Momentum

- **复杂任务或有大量数据**:Adam 是最常用的选择,因其在大部分任务上都表现优秀

- **需要处理稀疏数据或文本数据**:Adagrad 或 RMSProp

八、学习率优化方法

1、等间隔学习率衰减

2、指定间隔学习率衰减

3、按指数学习率衰减

九、正则化方法

在设计机器学习算法时希望在新样本上的泛化能力强。许多机器学习算法都采用相关的策略来减小测试误差,这些策略被统称为正则化。 神经网络强大的表示能力经常遇到过拟合,所以需要使用不同形式的正则化策略。 目前在深度学习中使用较多的策略有范数惩罚,DropOut,特殊的网络层等。

1、Dropout

在神经网络中模型参数较多,在数据量不足的情况下,很容易过拟合。Dropout(随机失活)是一个简单有效的正则化方法。

2、BN:批量归一化在视觉领域使用较多。

对数据标准化,再对数据重构(缩放+平移)

http://www.jsqmd.com/news/714737/

相关文章:

  • 半导体供应链展会哪家靠谱?提升品牌曝光,拓展客户渠道 - 品牌2026
  • 全球半导体论坛怎么选?从资源对接看论坛实力 - 品牌2026
  • 深圳超鸿再生资源:工厂酒楼设备回收哪个公司好 - LYL仔仔
  • 魔兽世界字体合并补全工具:终极字体融合解决方案,让游戏告别乱码烦恼
  • C++27原子操作性能瓶颈诊断指南(含perf + llvm-mca深度追踪模板):从虚假共享到内存重排序的5层根因定位法
  • Win11Debloat:Windows 11系统优化与隐私保护技术解决方案
  • fre:ac音频转换器:从零开始打造你的专业音乐库
  • 从Outline到Shadow:Unity UGUI特效组件全对比,手把手教你选对那个‘边’
  • 【含最新安装包】OpenClaw 保姆级实操教学,零基础一键部署即开即用
  • 气体检测仪(一氧化碳、二氧化硫、多参数)选购指南:专业厂家、售后与品牌解析 - 品牌推荐大师
  • 机器学习超参数调优:方法与实战技巧
  • 2026年国内行星搅拌机制造企业盘点 精细化搅拌设备选型方向指引 - 深度智识库
  • **MLX-4bit 量化版独立评测:KyleHessling1/Qwopus-GLM-18B-Healed-MLX-4bit**
  • AgentCorral:可视化集中管理Claude Code配置,告别JSON碎片化
  • 在Ubuntu 20.04上编译OnnxRuntime C++库,我踩过的那些坑(附完整配置流程)
  • 揭秘西门子、博世、华为HiCar联合提交的C++27协程提案附件B:37个真实产线故障案例中,86%源于await_suspend异常传播缺失
  • 如何高效保护键盘输入:iwck一键锁定键盘解决方案
  • AI Agent通信协议全景解读:MCP、ACP、A2A、ANP
  • AI原生应用框架lobu:快速构建与部署大语言模型应用
  • 告别调试烦恼:用C# Winform为欧姆龙PLC快速打造一个专属通讯调试助手
  • OBS虚拟背景插件终极指南:3步实现AI智能抠像的完整教程
  • 【含最新安装包】OpenClaw v2.6.6 安装指南|办公自动化神器
  • 5步掌握SD-PPP:Photoshop AI插件深度集成方案
  • Wan2.2-TI2V-5B终极部署指南:如何在本地运行720P高清AI视频生成
  • LangChain4j工作流编排深度解析:构建企业级AI智能体的5大核心模式
  • 春联生成模型-中文-base入门指南:避免‘福如东海’类固定搭配的创意突破技巧
  • 企业级开源项目管理平台:OpenProject深度应用与集成指南
  • 告别卡顿!STM32F407驱动ILI9341屏幕,用DMA+LVGL实现丝滑UI(RT-Thread实战)
  • LibreHardwareMonitor:终极硬件监控解决方案,让你的电脑健康一目了然
  • MediaFire批量下载工具:一键下载整个文件夹的终极指南