当前位置: 首页> 房产> 建材 > 神经网络通俗理解学习笔记(1)

神经网络通俗理解学习笔记(1)

时间:2025/7/12 15:29:21来源:https://blog.csdn.net/applewld/article/details/142137247 浏览次数:0次

神经网络通俗理解学习笔记(1)

    • 神经网络原理
    • 激活函数
    • 前向传播和反向传播
    • 多层感知机代码实现
      • 加载数据
      • 网络结构
      • 损失函数
      • 优化器
      • 训练
      • 测试
      • 保存
    • 回归问题
      • 一元线性回归
      • 多元线性回归
      • 多项式回归
    • 线性回归代码实现
      • 数据生成
      • 设置超参数
      • 初始化参数
      • 可视化
      • Pytorch模型实现
    • 分类问题
      • 数学表示
      • 损失函数
    • 多分类问题代码实现
      • 加载MINIST数据集
      • 数据加载器
      • 构建网络
      • 损失函数和优化器
      • 模型评估
      • 模型训练

神经网络原理

在这里插入图片描述
在这里插入图片描述
汇聚n个线性变换,最后做一个非线性变换。
在这里插入图片描述

神经网络本质上是很多个线性模型的模块化组合
输入层是样本本身,维度就是样本维度
输出层是样本类别标签
隐藏层是最重要的神经元,并不是层数越多维度越大泛化能力越好,会出现过拟合问题。

隐藏层层数和维度多了容易过拟合,少了模型比较弱,隐藏层层数和维度2个指标需要综合考量,都是重要的超参数。

激活函数

用于非线性变换,必须是可导的

为什么引入非线性?
在这里插入图片描述

线性组合无法表示复杂的非线性数据。
神经网络模型的本质其实是如何用线性模型去解决非线性问题。

怎么引入非线性?
通过激活函数。(就可以对空间进行扭曲变换)
线性空间的非线性,在高维非线性空间却线性可分。
在这里插入图片描述
在这里插入图片描述
sigmoid函数
输出值压缩到(0,1),常用于二分类问题,其他一般不用,容易导致梯度消失问题
在这里插入图片描述

Tanh函数
是sigmoid函数的改进版,输出值压缩到(-1,1),输出以0为中心,更快的收敛速度,适用于多分类,输入值较大的时候也容易导致梯度消失

在这里插入图片描述
在这里插入图片描述

Relu函数
多数情况下的第一选择,解决梯度消失问题,计算速度快,但当输入为负数时某些权重无法更新。

在这里插入图片描述
softmax函数
输入值映射到概率分布上
主要用在多分类问题
使得输出具有可解释性

在这里插入图片描述
激活函数用于给线性的矩阵运算非线性化
softmax作用是将输出转化为概率值,相当于归一化
损失衡量当前模型的好坏
反向传播是优化调整参数(权重w、截距b)

不同网路模型区别体现在:
网络模型结构、损失函数、动态求解损失函数过程、对问题(过拟合等)的解决方式

前向传播和反向传播

损失函数
在这里插入图片描述

在这里插入图片描述
均方误差

前向传播(本质传递数据和信息):
不断往前传计算损失
深度前馈网络
前馈神经网络

反向传播(本质传递误差、梯度/偏导数):
通过训练参数(w和b)使损失函数的值越来越小
损失倒查分解(偏导数的链式法则)
计算每层参数梯度

目的是找到这些参数的偏导数,然后以此为依据更新模型参数。

多层感知机代码实现

举初级阶段便于理解的神经网络代码实现的例子。

加载数据

在这里插入图片描述
先加载数据
在这里插入图片描述
由于直接全部拿去训练内存吃不消,所以批量进行训练,训练集需要设置shuffle为true,消除顺序影响,提升泛化能力。

网络结构

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

损失函数

根据分类问题或是回归问题确定
在这里插入图片描述
这里是分类问题,所以用交叉熵损失函数

优化器

在这里插入图片描述
优化器Adam

训练

在这里插入图片描述
在这里插入图片描述
在图片任务中,一般采用小批量策略读取数据和训练
外层循环表示训练10次,里面的循环表示从dataloader中循环读取数据,每次读取batchsize大小的批数据
在这里插入图片描述

测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

保存

在这里插入图片描述

回归问题

一元线性回归

在这里插入图片描述

在这里插入图片描述
用于对数据进行预测
找最优的拟合直线 转化为 最优化问题,反复迭代参数使得目标函数值最小

多元线性回归

X 变成矩阵的形式
在这里插入图片描述
在这里插入图片描述

多项式回归

在这里插入图片描述
把非线性问题转化为线性问题去求解

在这里插入图片描述
这个X可能是高维的

线性回归代码实现

本质上是一个神经元的神经网络

数据生成

在这里插入图片描述

tensor是张量的意思,一种多维数组,在机器学习领域,tensor通常用来表示训练数据、模型参数、输入数据等。
维度可以是一维、二维、n维
pytorch中的基本数据结构,具备良好的计算性能,可以使得GPU加速,大大提高计算效率。

设置超参数

在这里插入图片描述
学习率和最大迭代次数

初始化参数

用pytorch的randn函数初始化参数w
用zeros函数初始化参数b
randn函数会生成均值为0标准差为1的随机张量
zeros函数会生成全部元素都为0的张量

在这里插入图片描述
grad参数设为true 表示在反向传播时计算梯度

初始化方法:
1、常数 zeors
2、随机数 randn
3、预训练好的参数
具体使用哪种视问题而定

在这里插入图片描述
在这里插入图片描述

可视化

在这里插入图片描述

Pytorch模型实现

设置超参数以及前面的生成数据一样
在这里插入图片描述
在这里插入图片描述
为什么要清空梯度?

  • 避免梯度累加:在神经网络训练过程中,每次迭代都会计算梯度。如果不清空梯度,那么在下一次迭代时,新的梯度会与之前的梯度累加。这会导致梯度值非常大,从而使得模型参数更新过大,影响模型的收敛。
  • 确保每次迭代独立:清空梯度可以确保每次迭代都是独立的,每次更新模型参数都是基于当前批次的损失函数计算出的梯度,而不是之前批次的累积梯度。
  • 防止梯度爆炸:在某些情况下,如果梯度没有被清空,梯度可能会随着迭代次数的增加而指数级增长,导致所谓的梯度爆炸问题,这会使得模型参数更新变得不稳定。

分类问题

输出是离散的类别标签,而不是连续的值

在这里插入图片描述

把一个问题用数学模型表示,然后找到目标函数,用优化求解办法获得模型参数

数学表示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
softmax可以使所有类别的概率和等于1
可以将输入的特征值转化为概率值,方便决策
神经网络中一般用概率这种表示

损失函数

在这里插入图片描述
均方误差适合衡量回归预测结果与真实值的差距,但不能很好衡量分类结果与真实值之前的差距

在这里插入图片描述
在二分类中,当y为1时 后面项为0;当y为0时,前面项为0

对数运算的好处:

  • 单调性质
  • 结合性质 将多个乘转化为和的形式
  • 缩放性 可以把一个大数范围进行压缩

在这里插入图片描述
m样本数,n类别数, Yij 表示样本i的类别标号是j,p(Xij)表示预测的样本i属于类别j的概率
二分类问题上本质上和对数损失函数等价
多分类表示上略有区别,更适合神经网络模型

通常二分类用对数损失函数,多分类用交叉熵损失函数

多分类问题代码实现

在二分类中 可以用sigmoid函数
在多分类中 通常用softmax函数
在这里插入图片描述

神经网络的最后一层称为softmax层,这一层的输出是概率分布,表示输入数据属于每个类别的概率,为了计算这个概率,我们使用softmax函数

在训练神经网络时,通常使用交叉熵损失函数度量预测值和真实值的差距,对于多分类问题,交叉熵损失函数可以计算为
在这里插入图片描述
y是预测值,p是预测值
通过最小化交叉熵损失函数,可以训练模型参数。训练完之后,可以使用他进行多分类,为了做出预测,需要将输入数据输入到神经网络中,并根据输出的概率分布决定它属于哪个类别

使用softmax函数和交叉熵损失函数是一种多分类的常见方法。

加载MINIST数据集

在这里插入图片描述
可以使用torchvision中的数据加载器轻松访问这个数据集

数据加载器

pytorch中加载和预处理数据的工具
可以将数据分成若干批,每次送入一个批次的数据到神经网络中,可以减少内存的使用,使得训练更快

在这里插入图片描述
cmap显示灰度图

构建网络

在这里插入图片描述
定义模型
定义一个线性层
在这里插入图片描述
实例化模型

损失函数和优化器

在这里插入图片描述

模型评估

在这里插入图片描述
model.eval 设置模型为评估模式不会更新权重
torch.no_gard 上下文管理器 适用于不需要求梯度的情况

x.view(-1,input_size) -1 是pytorch中特殊符号表示这个数据维度由数据其他维度决定
实际上是将数据拉伸成一个二维矩阵,每一行对应一个样本,每一列对应特征
使输入数据的形状满足模型的要求

模型训练

在这里插入图片描述
在这里插入图片描述

关键字:神经网络通俗理解学习笔记(1)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: