机器视觉4-损失函数与梯度计算
- 损失函数定义
- 公式及变量含义
- 整体理解
- 多类支撑向量机损失
- 正则项与超参数
- 什么是超参数
- 一、与模型参数的区别
- 二、常见的超参数
- 三、调参方法
- 什么是优化
- 一、参数优化的重要性
- 二、利用损失函数进行反馈
- 三、调整分类器参数的方法
- 优化的目标
- 一、最小化损失函数
- 二、提高模型的准确性
- 三、简化模型(正则化相关)
- 四、满足特定的约束条件
- 梯度下降算法,随机梯度下降算法以及小批梯度下降算法
- 基于梯度的优化算法
那么如何通过调整权重和偏置来优化决策边界?
损失函数定义
对示例样本,分类器1与分类器2的分类谁的效果更好?
如何定量衡量分类器的性能?确定一个函数来衡量即损失函数
这张图片展示了损失函数的一般定义,具体内容如下:
公式及变量含义
-
公式:
- ( L L L):表示数据集损失,它是数据集中所有样本损失的平均值。这个值用于衡量整个数据集上分类器的总体表现,是优化模型的目标,即通过调整模型参数(如线性分类器中的权重( W W W)等)来最小化这个损失值。
- ( N N N):表示数据集中样本的总数。例如,如果有一个包含( 1000 1000 1000)张图片的数据集,那么( N = 1000 N = 1000 N=1000)。
- ( i i i):是样本的索引,从( 1 1 1)到( N N N),用于遍历数据集中的每一个样本。
- ( x i x_i xi):表示数据集中第( i i i)张图片(或第( i i i)个样本)。这是输入到分类器中的数据,例如在图像分类任务中,( x i x_i xi)就是一张具体的图像。
- ( f ( x i , W ) f(x_i, W) f(xi,W)):为分类器对( x i x_i xi)的类别预测。这里的( W W W)表示分类器的参数(例如线性分类器中的权重向量等),( f f f)是根据输入样本( x i x_i xi)和参数( W W W)计算得到的预测类别结果。例如,对于一个多类别的图像分类任务,( f ( x i , W ) f(x_i, W) f(xi,W))可能是一个向量,其中每个元素表示样本( x i x_i xi)属于某个类别的概率或得分。
- ( y i y_i yi):为样本( i i i)真实类别标签(整数)。它是已知的、正确的样本类别信息,用于与分类器的预测结果进行比较,以计算损失。例如,在一个手写数字识别任务中,如果第( i i i)张图片是数字( 3 3 3),那么( y i = 3 y_i = 3 yi=3)。
- ( L i L_i Li):为第( i i i)个样本的损失当预测值。它是根据第( i i i)个样本的预测结果( f ( x i , W ) f(x_i, W) f(xi,W))和真实标签( y i y_i yi)计算得到的该样本的损失值。不同的任务和模型可能会使用不同的( L i L_i Li)计算方式,常见的有交叉熵损失、均方误差损失等。
整体理解
这个公式给出了损失函数的一般形式,即通过对数据集中每个样本的损失值( L i L_i Li)求平均,得到整个数据集的损失( L L L)。在机器学习模型的训练过程中,通常会使用优化算法(如梯度下降法等)来最小化这个损失函数( L L L),从而调整模型的参数( W W W),使得模型在训练数据上的预测结果尽可能接近真实标签,提高模型的准确性和泛化能力。例如,在线性分类器中,通过不断更新权重( W W W)和偏置等参数,使损失函数( L L L)逐渐减小,优化分类器的决策边界,以更好地对新的数据进行分类。
多类支撑向量机损失
对猫的损失:
对汽车的损失:
总的损失:
1.最大:无穷, 最小:0
2.w=0,b=0,L=类别数量-1
3.Li会大1
4.所有的数会放大相同的倍数
5.与4不同,这里的平方会引入本身的值,放大倍数不确定
正则项与超参数
上面图片说明W不一致时,损失都可能为0.
那么 对于上述问题答:不唯一,因为W2同样有L=0,应该如何在W,和W2之间做出选择? 那么就引入了一个系数,这个系数就叫正则项。
什么是超参数
超参数是在机器学习算法运行前需要人为设定的参数,它们不能通过训练数据来学习得到,而是需要通过经验、试错或特定的调参方法来确定。
超参数是在机器学习算法运行前需要人为设定的参数,它们不能通过训练数据来学习得到,而是需要通过经验、试错或特定的调参方法来确定。以下是关于超参数的详细介绍:
一、与模型参数的区别
- 模型参数:是通过训练数据和优化算法学习得到的参数,例如线性分类器中的权重( w w w)和偏置( b b b)。这些参数是模型的一部分,其值会在训练过程中不断调整,以最小化损失函数,使模型更好地拟合训练数据。
- 超参数:不是通过训练数据学习得到的,而是在训练开始前就需要设定的。超参数的不同取值会影响模型的训练过程和最终性能。
二、常见的超参数
- 学习率(Learning Rate):在使用梯度下降等优化算法时,学习率决定了每次参数更新的步长。如果学习率过大,可能会导致模型在最优值附近振荡,无法收敛;如果学习率过小,模型收敛速度会非常慢,训练时间过长。例如,在训练神经网络时,常见的学习率取值可能是0.001、0.01、0.1等,需要根据具体问题和数据进行调整。
- 迭代次数(Number of Epochs):指的是整个训练数据集被完整遍历的次数。更多的迭代次数可能会使模型在训练数据上的性能更好,但也可能导致过拟合。例如,设置迭代次数为10、50、100等,需要根据模型的收敛情况来确定合适的数值。
- 批量大小(Batch Size):在使用小批量梯度下降等方法时,批量大小是指每次用于计算梯度并更新参数的样本数量。较大的批量大小可以利用向量化计算提高计算效率,但可能会使梯度更新不够频繁,导致收敛变慢;较小的批量大小可以使梯度更新更频繁,但计算效率可能较低。常见的批量大小有32、64、128等。
- 正则化参数(Regularization Parameter):如L1正则化中的( λ \lambda λ)和L2正则化中的( λ \lambda λ),用于控制正则化项的强度,防止模型过拟合。较大的正则化参数会使模型的参数更趋向于0,使决策边界更平滑,但可能会导致欠拟合;较小的正则化参数对模型的约束较小。
- 神经网络的结构超参数:对于神经网络,还包括隐藏层的数量、每个隐藏层的神经元数量、激活函数的类型(如ReLU、Sigmoid等)等。这些超参数的选择会影响神经网络的复杂度和表达能力。
三、调参方法
- 网格搜索(Grid Search):为超参数设定一些可能的取值范围,然后在这些范围内生成所有可能的超参数组合,并对每个组合进行训练和评估,选择性能最好的超参数组合。这种方法比较简单,但计算量较大,尤其是当超参数较多时。
- 随机搜索(Random Search):与网格搜索类似,但不是遍历所有可能的组合,而是在超参数的取值范围内随机选取一些组合进行尝试。这种方法在某些情况下可以更高效地找到较好的超参数组合,尤其是当某些超参数对性能的影响不是均匀分布时。
- 贝叶斯优化(Bayesian Optimization):是一种更智能的调参方法,它根据已有的超参数组合及其对应的性能结果,建立一个概率模型(如高斯过程)来预测不同超参数组合的性能,并选择最有希望的超参数组合进行下一次尝试。这种方法可以更有效地探索超参数空间,减少不必要的尝试,但实现相对复杂。
超参数的选择对机器学习模型的性能有很大的影响,需要根据具体的问题、数据和模型进行仔细的调整和优化。
什么是优化
参数优化是机器学习的核心步骤之一,它利用损发函数的输出值作为反馈信号来调整分类器参数,以提升分类器对训练样本的预测性能。
这句话准确地概括了参数优化在机器学习中的重要性和基本原理:
一、参数优化的重要性
- 在机器学习中,模型(如分类器)通常包含一些参数(例如线性分类器中的权重( w w w)和偏置( b b b)),这些参数的取值直接影响模型对输入数据的处理和预测结果。通过参数优化,可以找到一组最优或较优的参数值,使模型能够更好地拟合训练数据,从而提高对新数据的预测性能。
二、利用损失函数进行反馈
损失函数L是一个与参数W有关的函数,优化的目标就是找到使损失函数L达到最优的那组参数W。
-
损失函数的作用:损失函数用于衡量模型的预测结果与真实标签之间的差异。对于每个训练样本( x i x_i xi),分类器会根据当前的参数( W W W)(这里( W W W)泛指模型的所有参数)得到一个预测值( f ( x i , W ) f(x_i, W) f(xi,W)),然后通过损失函数( L i ( f ( x i , W ) , y i ) L_i(f(x_i, W), y_i) Li(f(xi,W),yi))计算出该样本的损失值,其中( y i y_i yi)是样本( x i x_i xi)的真实类别标签。整个数据集的损失( L = 1 N ∑ i L i ( f ( x i , W ) , y i ) L=\frac{1}{N} \sum_{i} L_i(f(x_i, W), y_i) L=N1∑iLi(f(xi,W),yi))是所有样本损失的平均值。
-
反馈信号:损失函数的输出值(即损失( L L L))为参数优化提供了反馈信号。如果损失值较大,说明模型的预测结果与真实标签相差较大,需要调整参数来减小损失;反之,如果损失值较小,说明模型的性能较好,但可能还需要进一步微调参数以达到更好的效果。
那么最直接的方法就是将L/W的导数为0的状态。
三、调整分类器参数的方法
- 常见的参数优化方法是基于梯度的优化算法,如梯度下降法及其变种(随机梯度下降、小批量梯度下降等)。这些算法通过计算损失函数关于参数的梯度(即损失函数对每个参数的偏导数),来确定参数的更新方向和步长。例如,在梯度下降法中,参数( W W W)的更新公式为( W = W − α ∂ L ∂ W W = W - \alpha \frac{\partial L}{\partial W} W=W−α∂W∂L),其中( α \alpha α)是学习率,它控制着参数更新的步长。通过不断地根据梯度更新参数,使得损失函数逐渐减小,从而提升分类器对训练样本的预测性能。
总之,参数优化是机器学习中一个关键的环节,它通过利用损失函数的反馈信号,不断调整模型参数,使模型能够更好地学习数据的特征和规律,提高模型的准确性和泛化能力。
优化的目标
在机器学习中,参数优化的目标主要包括以下几个方面:
一、最小化损失函数
- 基本目标:最直接的目标是最小化损失函数( L L L)。如前面所介绍的( L = 1 N ∑ i L i ( f ( x i , W ) , y i ) ) L=\frac{1}{N} \sum_{i} L_i(f(x_i, W), y_i)) L=N1∑iLi(f(xi,W),yi)),通过调整模型参数( W W W),使得整个数据集上的平均损失尽可能小。这意味着模型的预测结果( f ( x i , W ) f(x_i, W) f(xi,W))与真实标签( y i y_i yi)之间的差异在总体上最小化,从而提高模型在训练数据上的拟合程度。
二、提高模型的准确性
- 对训练数据的准确性:优化后的模型应该能够对训练样本做出更准确的预测。例如,在图像分类任务中,经过参数优化后,分类器对于训练集中的图像能够更准确地判断其所属的类别,降低分类错误率。
- 对新数据的泛化能力:除了在训练数据上表现良好,更重要的是模型要具有良好的泛化能力,即对未见过的新数据也能做出准确的预测。这是因为模型的最终目的是应用于实际场景中处理新的输入数据,而不是仅仅记住训练数据。通过合理的参数优化,可以在一定程度上防止过拟合(模型在训练数据上表现很好,但在新数据上表现差),从而提高模型的泛化性能。
三、简化模型(正则化相关)
- 在一些情况下,优化的目标还包括使模型更加简单。通过在损失函数中加入正则化项(如L1正则化、L2正则化),并优化包含正则化项的损失函数,可以控制模型的复杂度。这有助于避免模型过于复杂而导致的过拟合问题,同时使模型更容易解释和理解。例如,在线性分类器中,正则化可以使权重向量( w w w)的某些元素趋近于0,从而简化模型的结构。
四、满足特定的约束条件
- 根据具体的应用场景和问题需求,可能还会有一些特定的约束条件需要满足。例如,在某些资源受限的环境中,可能要求模型的参数数量不能太多,或者模型的计算复杂度不能过高。在这种情况下,参数优化需要在满足这些约束条件的前提下,尽量提高模型的性能。
综上所述,参数优化的目标是通过调整模型参数,在最小化损失函数、提高模型准确性和泛化能力、简化模型以及满足特定约束条件等多个方面取得平衡,以获得一个性能良好、适用的机器学习模型。
梯度下降算法,随机梯度下降算法以及小批梯度下降算法
视频
基于梯度的优化算法
基于梯度的优化算法: 梯度是指一个向量,它指向函数在某一点处增加最快的方向。在机器学习和优化领域,基于梯度的方法被广泛应用于求解函数的最小值或最大值。这些方法通过计算函数在当前点处的梯度,并沿着梯度的反方向更新当前点的位置,以逐步接近函数的最小值或最大值。常见的基于梯度的方法包括梯度下降、共轭梯度等。
用一个直线来拟合这三个点,直线方程是y=wx+b,假设斜率w已知想要找到一个最合适的b。
判定直线方程好坏标准:三个点到直线的距离来衡量,然后将距离的写成一个最小二乘的方程,即损失函数
目标:找到解决b,让损失函数最小。将直线方程带入到损失函数中得到如下方程,损失函数是关于b的一个二次函数。其他系数可以计算出来。二次函数找最小的b值很容易
梯度下降算法:就是随便给出b的值经过迭代优化的方式找到最好的值
求出初始状态下的斜率的绝对值|dL/db|然后乘以一个常数 ε (epsilon),然后去更新b的值。
b= b - ε *(dL/db)。单个点的(dL/db)就是梯度值,需要计算出所有梯度然后取平均值g =
,ε就是学习率,人为设定,来控制梯度下降步长。
按照这个思路当点越来越多时需要计算出所有点的梯度,保存下来,内存开销大,然后取平均值,速度较慢。
改进:随机取值(类似于等比抽样)求梯度取平均,随机梯度下降算法。并非所有情况都有效。
为了让学习率 ε 自动变化,引入变量r,r时梯度大小随时间的积累量的变化率,用学习率 ε除以r,再来乘以梯度。
总结:
那么同理w的值也能使用同样的思路来找到一个合适的值
反向传播: 这个算法主要用于神经网络模型中的权重更新,以便最小化预测误差。在反向传播算法中,误差被反向传递回神经网络中,以便调整每个权重的值。这个算法使用链式法则来计算误差对于每个权重的影响,从而更新它们的值。
继续使用线性拟合的例子。
用最小二乘法表达损失函数,其中ygt是真实值,假设w=0.8,b=0.2。x=1.5得到y=1.4,但是此时真实值是0.8,则损失函数值为0.18。如何来调整w,b呢?
根据梯度下降算法计算损失函数L对于w和b的梯度值,即偏导数,然后再沿着梯度的反方向更新两个参数。
为了更容易计算损失函数L对于w,b的偏导,最好先计算一个中间量就是损失函数L对y的偏导这样L对w的偏导就可以写成L对y的偏导乘以y对w的偏导(即求到的链式法则)同时也可以计算出L对b的偏导,通过这种反向从后向前的方式得到参数梯度的解析式
这种沿着黄色箭头从后向前计算梯度值的方法就是方向传播算法
在深度学习框架中所有单元都有定义的向前传播和反向传播函数这样就可以;利用方向传播算法来更新亿万的网络参数
总结: