深度学习与神经元模型
一个简单的神经元模型包括输入、权重、激活函数和输出。
-
输入就像神经元 树突 接收到的信号,
-
权重则像是调整信号强度的小调节器,
-
激活函数决定是否产生输出,
-
而输出则是传递给其他神经元的信号
在深度学习中,模型训练通常需要进行多次迭代,而不是单次完成。深度学习模型的训练本质上是一个优化问题,目标是最小化损失函数。梯度下降算法通过计算损失函数相对于模型参数的梯度来更新参数。由于每次参数更新只能基于一个数据批次来计算梯度,因此需要多次迭代,每次处理一个新的数据批次,以确保模型在整个数据集上都能得到优化。
损失函数
损失函数(Loss Function),也称为代价函数(Cost Function),是用来衡量模型预测输出与真实值之间差距的一个函数。它提供了一种量化的方法,来评价模型在训练集上的表现。
1.衡量误差:损失函数的值越小,说明模型的预测结果越接近真实值;损失函数的值越大,说明模型的预测结果和真实值差距越大。
2.优化目标:模型训练的目标是通过调整模型参数,最小化损失函数的值。
举例:
1.均方误差(MSE):常用于回归任务,计算预测值和真实值之间差的平方和的平均值。
2.交叉熵损失(Cross-Entropy Loss):常用于分类任务,评估预测的概率分布与真实分布之间的差异。
梯度下降算法
梯度下降算法(Gradient De’scent)是一种优化算法,用于通过迭代地调整模型参数来最小化损失函数。它通过计算损失函数关于模型参数的梯度,指明了损失函数值减少的方向,从而逐步调整参数,使损失函数值逐步减小。
最小值处斜率为0,偏导为0
斜率为负时,应该向右调整;斜率为正时,应该向左调整
1.计算梯度:在每次迭代中,计算损失函数关于模型当前参数的梯度,梯度表示了损失函数在参数空间中的变化率和方向。
2.更新参数:根据梯度值,按一定步长(学习率)更新模型参数,更新公式为:
新模型参数=模型参数-学习率*梯度
其他:
批量梯度下降(Batch Gradient Descent):在整个训练集上计算梯度更新参数。
随机梯度下降(Stochastic Gradient Descent, SGD):在每个训练样本上单独计算梯度更新参数。
小批量梯度下降(Mini-batch Gradient Descent):在一个小批次的训练样本上计算梯度更新参数,兼具批量和随机梯度下降的优点。
模型训练过程中,损失函数提供了模型性能的度量标准,而梯度下降算法通过不断调整模型参数来最小化损失函数。训练过程中,模型参数会在多次迭代中逐步调整,每次处理一个新的数据批次,直到在整个数据集上都能得到较优的结果。这种迭代优化过程是深度学习模型训练的核心。
Batch Normalization (BatchNorm)
Batch Normalization(批量归一化)是一种用于加速神经网络训练并提高其稳定性的方法。它通过在每个小批量(batch)中对输入数据进行标准化,使得每一层的输入保持均值为0、标准差为1的分布。
作用:
1.稳定训练过程:通过规范化输入数据,减少了不同批次数据的分布差异,使训练更加稳定。
2.加速训练速度:因为数据标准化后,梯度下降过程中的步长更均匀,从而加快了收敛速度。
3.减少依赖初始权重:减轻了模型对权重初始化的敏感性,使得训练结果更加鲁棒。
原理:
1.计算批量均值和方差:对每个小批量的数据计算均值和方差。
2.标准化数据:利用计算得到的均值和方差,将数据标准化。
3.缩放和平移:引入两个可学习的参数(缩放因子gamma和偏移因子beta),对标准化后的数据进行线性变换,以恢复模型的表达能力。
Dropout
Dropout是一种防止神经网络过拟合的技术,通过在训练过程中随机丢弃(置零)一部分神经元来实现。这种方法在训练过程中有效减少了模型对某些特定神经元的依赖,从而增强了模型的泛化能力。
作用:
1.防止过拟合:通过随机丢弃神经元,使得模型不能过于依赖某些特定的神经元,从而增强了模型的泛化能力。
2.简化网络结构:在训练过程中,随机丢弃部分神经元,相当于训练了多个不同的子网络,并在测试时进行集成。
原理:
1.训练过程中随机丢弃神经元:在每次训练迭代中,按照一定的概率(称为dropout rate,通常为0.5)随机丢弃部分神经元。
2.测试时不丢弃:在测试过程中,使用完整的网络,但对所有神经元的输出乘以dropout rate,以抵消训练和测试时网络规模的差异。在测试期间,Dropout不再随机丢弃任何神经元,所有神经元都被激活。为了保持训练和测试期间输出的一致性,测试时不进行额外的缩放,因为训练期间已经通过对未丢弃神经元的缩放处理来实现一致性。因此,在测试期间,直接使用所有神经元的输出进行推理,而不进行任何额外的缩放操作。