神经网络的训练——mnist手写数字识别数据集为例

深度学习笔记-3

数据集介绍

MNIST数据集是一个广泛使用的手写数字数据集,主要用于训练和测试机器学习算法。以下是MNIST数据集的一些主要特点:

  1. 数据规模:MNIST数据集包含60,000个训练样本和10,000个测试样本。
  2. 图像大小:每个样本是一个28x28像素的灰度图像。
  3. 类别:数据集中的图像代表0到9的十个数字,每个数字有大约60,000个训练样本和10,000个测试样本。
  4. 用途:MNIST数据集通常用于计算机视觉和机器学习领域,特别是在深度学习中,作为入门数据集来训练和评估模型。
  5. 易用性:由于其标准化和广泛接受的格式,MNIST数据集易于获取和使用,许多机器学习库和框架都提供了直接的加载支持。

MNIST数据集是机器学习和深度学习领域的经典数据集之一,对于初学者来说,它是一个很好的起点来了解和实践机器学习算法。随着技术的发展,尽管存在一些更复杂的数据集,但MNIST因其简单性和教育价值仍然被广泛使用。

损失函数

损失函数是深度学习模型训练过程中的核心组件,它衡量了模型预测值与实际值之间的差异,指导模型通过优化算法调整参数以最小化这种差异,从而提高模型的预测准确性。损失函数的选择直接影响模型的学习效果和泛化能力,是评价模型性能的关键指标。

均方误差损失函数

E = 1 2 ∑ k ( y k − t k ) 2 E=\frac{1}{2}\sum_{k}(y_{k}-t_{k})^{2} E=21k(yktk)2
这里, y k 是表示神经网络的输出, t k 表示监督数据, k 表示数据的维数。 \text{这里,}y_k\text{是表示神经网络的输出,}t_k\text{表示监督数据,}k\text{表示数据的维数。} 这里,yk是表示神经网络的输出,tk表示监督数据,k表示数据的维数。
均方误差函数通过预测值与真实值之差的平方衡量预测模型的准确程度,准确程度越高误差函数的值越小(趋近于0)

交叉熵误差损失函数

E = − ∑ k t k log ⁡ y k E=-\sum_kt_k\log {y_{k}} E=ktklogyk
这里, log ⁡ \log log表示以e为底数的自然对数( log ⁡ e ) 。 y k \log_{\mathrm{e}})。y_k loge)yk是神经网络的输出, t k t_k tk是正确解标签。并且, t k t_k tk中只有正确解标签的索引为1,其他均为0(one-hot表示)。
准确程度越高误差函数的值越小

mini-batch学习

Mini-batch学习是通过将整个训练数据集划分为多个较小的批次,每个批次包含一定数量的样本,比如可以将mnist训练数据集中的60,000个数据划分为600个mini-batch,对每个mini-batch中的数据使用神经网络进行预测,计算损失函数的大小以及模型的准确率,从而确定模型参数的调整方向,逐步更新模型的参数。

这种方法结合了批量学习和随机梯度下降的优点,既避免了批量学习中每次更新需要等待整个数据集处理完毕的低效性,也减少了随机梯度下降中由于单个样本引起的噪声和不稳定性。通过在每个mini-batch上计算损失函数的梯度并更新模型,mini-batch学习能够有效地平衡计算效率和收敛稳定性,提高了模型训练的效率和性能,同时允许模型在训练过程中更灵活地适应数据的局部特性,有助于防止过拟合,增强模型的泛化能力。

梯度下降法寻优

寻找最优参数(权重和偏置)时,要寻找使损失函数的值尽可能小的参数。为了找到使损失函数的值尽可能小的地方,需要计算损失函数对参数的导数(确切地讲是梯度),然后以这个导数为指引,逐步更新参数的值

导数与梯度

导数的含义:函数 f ( x ) f(x) f(x) x x x处的斜率就是 f ( x ) f(x) f(x) x x x处的导数
对于一个一元函数 f ( x ) f(x) f(x),它的导数计算方法如下式
d f ( x ) d x = lim ⁡ h → 0 f ( x + h ) − f ( x ) h \frac{\mathrm df(x)}{\mathrm dx}=\lim\limits_{h\to0}\frac{f(x+h)-f(x)}{h} dxdf(x)=h0limhf(x+h)f(x)
对于一个多元函数 f ( x 1 , x 2 , x 3 , x 4 , . . . ) f(x_1,x_2,x_3,x_4,...) f(x1,x2,x3,x4...),它对于每个自变量的偏导数 ∂ f ∂ x 1 \frac{\partial f}{\partial x_1} x1f ∂ f ∂ x 2 \frac{\partial f}{\partial x_2} x2f,…汇总所组成的向量,称为 f ( x 1 , x 2 , x 3 , x 4 , . . . ) f(x_1,x_2,x_3,x_4,...) f(x1,x2,x3,x4...)的梯度。

梯度的数值计算方法

多元函数梯度的数值计算通常涉及近似方法,因为直接计算梯度(即偏导数的向量)可能在某些情况下非常复杂或不切实际。以下是几种常用的数值方法来近似计算多元函数的梯度:

  1. **前向差分法:**在前向差分法中,我们通过在每个维度上增加一个小的增量 h h h来近似计算偏导数。具体来说,对于函数 f ( x 1 , x 2 , . . . , x n ) f(x_1,x_2,...,x_n) f(x1,x2,...,xn)的第 i i i个偏导数,可以使用以下公式:
    ∂ f ∂ x i ≈ f ( x 1 , . . . , x i + h , . . . , x n ) − f ( x 1 , . . . , x i , . . . , x n ) h \frac{\partial f}{\partial x_i}\approx\frac{f(x_1,...,x_i+h,...,x_n)-f(x_1,...,x_i,...,x_n)}{h} xifhf(x1,...,xi+h,...,xn)f(x1,...,xi,...,xn)
  2. **后向差分法:**与前向差分法类似,但增量是减去而不是加上。它计算偏导数的近似值如下:
    ∂ f ∂ x i ≈ f ( x 1 , . . . , x i , . . . , x n ) − f ( x 1 , . . . , x i − h , . . . , x n ) h \frac{\partial f}{\partial x_i}\approx\frac{f(x_1,...,x_i,...,x_n)-f(x_1,...,x_i-h,...,x_n)}{h} xifhf(x1,...,xi,...,xn)f(x1,...,xih,...,xn)
  3. **中心差分法:**中心差分法通过同时考虑前向和后向差分来减少截断误差,它使用以下公式:
    ∂ f ∂ x i ≈ f ( x 1 , . . . , x i + h , . . . , x n ) − f ( x 1 , . . . , x i − h , . . . , x n ) 2 h \frac{\partial f}{\partial x_{i}}\approx\frac{f(x_{1},...,x_{i}+h,...,x_{n})-f(x_{1},...,x_{i}-h,...,x_{n})}{2h} xif2hf(x1,...,xi+h,...,xn)f(x1,...,xih,...,xn)
  4. **复合差分法:**这种方法结合了多个点的差分来提高精度,例如使用三个点: x i , x i + h x_i,x_i+h xi,xi+h,和 x i − h x_i-h xih
  5. **有限差分法:**这是一种更一般的方法,可以用于计算任意阶数的导数,通过构建差分表来近似高阶导数。
神经网络的梯度

神经网络的梯度主要是指是指损失函数 L o s s Loss Loss关于权重参数 W W W的梯度
W = ( w 11 w 12 w 13 w 21 w 22 w 23 ) ∂ L ∂ W = ( ∂ L ∂ w 11 ∂ L ∂ w 12 ∂ L ∂ w 13 ∂ L ∂ w 21 ∂ L ∂ w 22 ∂ L ∂ w 23 ) \begin{gathered} \boldsymbol{W} =\left(\begin{array}{ccc}{{w_{11}}}&{{w_{12}}}&{{w_{13}}}\\{{w_{21}}}&{{w_{22}}}&{{w_{23}}}\end{array}\right) \\ \frac{\partial L}{\partial W} =\left(\begin{array}{ccc}{{\frac{\partial L}{\partial w_{11}}}}&{{\frac{\partial L}{\partial w_{12}}}}&{{\frac{\partial L}{\partial w_{13}}}}\\{{\frac{\partial L}{\partial w_{21}}}}&{{\frac{\partial L}{\partial w_{22}}}}&{{\frac{\partial L}{\partial w_{23}}}}\end{array}\right) \end{gathered} W=(w11w21w12w22w13w23)WL=(w11Lw21Lw12Lw22Lw13Lw23L)
其中 ∂ L ∂ w 11 \frac{\partial L}{\partial w_{11}} w11L等偏导数,表示 w 11 w_{11} w11变化一微小量时, L L L的变化量

梯度下降法是一种通过迭代方式最小化目标函数的优化算法,它首先计算目标函数相对于模型参数的梯度,然后使用一个称为学习率的超参数来调整参数,以确保每次更新都是朝着减少误差的方向进行。在每次迭代中,模型参数按照负梯度方向进行更新,目的是找到函数的局部或全局最小值。这个过程会一直重复,直到满足一定的停止条件,比如梯度的变化非常小或达到预设的迭代次数。梯度下降法的关键在于正确地设置学习率,以避免更新步长过小导致收敛速度慢,或过大导致错过最小值甚至算法发散。

神经网络的训练流程

如图,神经网络的训练流程是先将数据集划分为mini-batch,对于每个batch的数据计算损失函数对当前权重参数和偏置参数的梯度,使用梯度下降法优化参数,随后继续迭代运行直至达到预设的迭代次数。

持续更新内容与资料请关注公众号"逃离小星球",感谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逃离小星球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值