深度学习小白自学笔记

本文详细阐述了回归模型的构建,包括优化器的选择与作用,如梯度下降法、动量优化和自适应学习率优化器。介绍了常用的损失函数及其在不同场景的应用,并讨论了Batch、Epoch和BatchSize在训练过程中的关键作用,以及GD、SGD和mini-batchSGD的区别。
摘要由CSDN通过智能技术生成

一、回归模型的建立

1、优化器的作用

优化器是机器学习和深度学习中的一个重要组件,用于调整模型的参数以最小化损失函数。优化器的目标是通过迭代更新模型的参数,使得模型在训练数据上能够更好地拟合,并在测试数据上具有较好的泛化能力。

常见的优化器包括:

  1. 梯度下降法(Gradient Descent):梯度下降法是最基本的优化算法,通过计算损失函数对参数的梯度来更新参数。常见的梯度下降法包括批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-batch Gradient Descent)。

  2. 动量优化器(Momentum)动量优化器在梯度下降法的基础上引入了动量项,用于加速收敛并减少震荡。动量优化器通过累积之前梯度的指数加权平均来更新参数。

  3. 自适应学习率优化器(Adaptive Learning Rate):自适应学习率优化器根据参数的梯度情况自动调整学习率。常见的自适应学习率优化器包括AdaGrad、RMSprop和Adam。

  4. 学习率衰减(Learning Rate Decay):学习率衰减是一种在训练过程中逐渐减小学习率的策略,可以帮助模型更好地收敛。常见的学习率衰减方法有固定衰减、指数衰减和余弦退火等。

  5. 正则化优化器(Regularization):正则化优化器通过在损失函数中引入正则化项,限制模型的复杂度,防止过拟合。常见的正则化优化器有L1正则化和L2正则化。

2、简单的回归模型

简单的回归模型包括

数据data:训练集(train)、验证集(val)、测试集(test)一般输入是文件地址,或者数据内容, 输出是一个 存储了数据X,Y的数据结构。

模型model:初始化定义模型,输入X, 输出预测值。

超参数hyperPara:除模型外的超参 一般包含: 学习率,优化器, 损失函数等

损失函数(Loss Function)是机器学习中的一个重要概念,用于衡量模型预测结果与真实值之间的差异程度。它是优化算法的核心,通过最小化损失函数来调整模型的参数,使得模型能够更好地拟合训练数据。

常见的损失函数有以下几种:

  1. 均方误差(Mean Squared Error,MSE):计算预测值与真实值之间的平方差的平均值。适用于回归问题。

  2. 交叉熵损失(Cross Entropy Loss):用于分类问题,特别是二分类或多分类问题。常见的交叉熵损失函数有二分类交叉熵损失(Binary Cross Entropy Loss)和多分类交叉熵损失(Categorical Cross Entropy Loss)。

  3. 对数损失(Log Loss):常用于逻辑回归问题,衡量模型对样本分类的准确性。

  4. Hinge损失:常用于支持向量机(SVM)中,用于处理二分类问题。

  5. KL散度(Kullback-Leibler Divergence):用于衡量两个概率分布之间的差异。

  6. Huber损失:结合了均方误差和绝对误差,对异常值具有一定的鲁棒性。

3、回归模型整体框架

dataset:

init

getitem

getitem 方法接收一个参数,即索引,它可以是整数、切片或任何其他可以用于索引访问序列的类型。在方法内部,根据索引类型执行相应的操作,并返回对应的元素。

len

model:

init                

forward                模型的前向过程

training data:取一batch的x,根据模型求出对应y,计算loss=(y^ -y), 根据Loss对参数的导数来更新模型参数(梯度下降算法),继续给batch的x,重复上述过程,记录下来每个时刻的模型,最后取最小loss值的模型作为训练所得模型。

val data:给一个x代入当前模型,求Loss以判断模型效果

二、回归模型代码解析

1、csv(Comma-Separated Values)文件是什么?
它是一种文件格式,一般也被叫做逗号分隔值文件,可以使用 Excel 软件或者文本文档打开 。
其中数据字段用半角逗号间隔(也可以使用其它字符),使用 Excel 打开时,逗号会被转换为分隔符。
csv 文件是以纯文本形式存储了表格数据,并且在兼容各个操作系统。

使用 csv.reader() 读取 csv 文件内容。

2、

Epoch(时期):
当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一次>epoch。(也就是说,所有训练样本在神经网络中都 进行了一次正向传播 和一次反向传播 )

再通俗一点,一个Epoch就是将所有训练样本训练一次的过程。

然而,当一个Epoch的样本(也就是所有的训练样本)数量可能太过庞大(对于计算机而言),就需要把它分成多个小块,也就是就是分成多个Batch 来进行训练。**

Batch(批 / 一批样本):
将整个训练样本分成若干个Batch。

Batch_Size(批大小):
每批样本的大小。

Iteration(一次迭代):
训练一个Batch就是一次Iteration(这个概念跟程序语言中的迭代器相似)

为什么要使用多于一个epoch?
在神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次。但请记住,我们使用的是有限的数据集,并且我们使用一个迭代过程即梯度下降来优化学习过程。如下图所示。因此仅仅更新一次或者说使用一个epoch是不够的。

随着epoch数量增加,神经网络中的权重的更新次数也在增加,曲线从欠拟合变得过拟合

那么,到底多少个epoch最合适,这个问题没有正确答案,对于不同的数据集,答案都不相同。

Batch Size
直观的理解:
Batch Size定义:一次训练所选取的样本数。

Batch Size的大小影响模型的优化程度和速度。同时其直接影响到GPU内存的使用情况,假如GPU内存不大,该数值最好设置小一点。

为什么要提出Batch Size?
在没有使用Batch Size之前,这意味着网络在训练时,是一次把所有的数据(整个数据库)输入网络中,然后计算它们的梯度进行反向传播,由于在计算梯度时使用了整个数据库,所以计算得到的梯度方向更为准确。但在这情况下,计算得到不同梯度值差别巨大,难以使用一个全局的学习率,所以这时一般使用Rprop这种基于梯度符号的训练算法,单独进行梯度更新。

在小样本数的数据库中,不使用Batch Size是可行的,而且效果也很好。但是一旦是大型的数据库,一次性把所有数据输进网络,肯定会引起内存的爆炸。所以就提出Batch Size的概念。

Batch Size合适的优点:
1、通过并行化提高内存的利用率。就是尽量让你的GPU满载运行,提高训练速度。

2、单个epoch的迭代次数减少了,参数的调整也慢了,假如要达到相同的识别精度,需要更多的epoch。

3、适当Batch Size使得梯度下降方向更加准确。

Batch Size从小到大的变化对网络影响
1、没有Batch Size,梯度准确,只适用于小样本数据库

2、Batch Size=1,梯度变来变去,非常不准确,网络很难收敛。

3、Batch Size增大,梯度变准确,

4、Batch Size增大,梯度已经非常准确,再增加Batch Size也没有用

注意:Batch Size增大了,要到达相同的准确度,必须要增大epoch。

GD(Gradient Descent):就是没有利用Batch Size,用基于整个数据库得到梯度,梯度准确,但数据量大时,计算非常耗时,同时神经网络常是非凸的,网络最终可能收敛到初始点附近的局部最优点。

SGD(Stochastic Gradient Descent):就是Batch Size=1,每次计算一个样本,梯度不准确,所以学习率要降低。

mini-batch SGD:就是选着合适Batch Size的SGD算法,mini-batch利用噪声梯度,一定程度上缓解了GD算法直接掉进初始点附近的局部最优值。同时梯度准确了,学习率要加大。

使用mini-batch梯度下降法时,一次遍历训练集,能让你做m/batch_size个梯度下降。

3、

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值