损失函数和梯度下降

前提:
前向传播经过若干个神经元,再经过激活函数,最终得到结果,然后输出损失函数,根据损失函数再进行反向传播,及传递梯度,调整权重。
并不是根据激活偶函数输出直接返回梯度值,而是在计算损失函数的基础上进行反向传播梯度。更多的是按照小批量的处理,累计梯度求平均值,最后进行梯度下降。
损失函数与分类函数

  1. svm和折叶损失:举例:用一个例子演示公式是如何计算的。假设有3个分类,并且得到了分值 s=[13,-7,11] 。其中第一个类别是正确类别,即yi​=0 。同时假设Δ 是10(后面会详细介绍该超参数)。上面的公式是将所有不正确分类加起来,所以我们得到两个部分:
    在这里插入图片描述
    可以看到第一个部分结果是0,这是因为[-7-13+10]得到的是负数,经过max(0,−) 函数处理后得到0。这一对类别分数和标签的损失值是0,这是因为正确分类的得分13与错误分类的得分-7的差为20,高于边界值10。而SVM只关心差距至少要大于10,更大的差值还是算作损失值为0。第二个部分计算[11-13+10]得到8。虽然正确分类的得分比不正确分类的得分要高(13>11),但是比10的边界值还是小了,分差只有2,这就是为什么损失值等于8。简而言之,SVM的损失函数想要正确分类类别 yi​的分数比不正确类别分数高,而且至少要高Δ。如果不满足这点,就开始计算损失值。

  2. softmax分类器和交叉熵损失:
    SVM是最常用的两个分类器之一,而另一个就是Softmax分类器,它的损失函数与SVM的损失函数不同。对于学习过二元逻辑回归分类器的读者来说,Softmax分类器就可以理解为逻辑回归分类器面对多个分类的一般化归纳。SVM将输出f(xi​,W) 作为每个分类的评分(因为无定标,所以难以直接解释)。与SVM不同,Softmax的输出(归一化的分类概率)更加直观,并且从概率上可以解释,这一点后文会讨论。在Softmax分类器中,函数映射f(xi​;W)=Wxi​保持不变,但将这些评分值视为每个分类的未归一化的对数概率,并且将折叶损失(hinge loss)替换为交叉熵损失(cross-entropy loss)。公式如下:在这里插入图片描述

梯度下降:

  • 随机梯度下降:普通更新x += - learning_rate * dx,不考虑学习率和梯度的改变,例如越接近底部的话,步长越小,或者梯度降低。
    动量(Momentum)更新:
  • 在这里插入图片描述
v = mu * v - learning_rate * dx # 与速度融合
x += v # 与位置融合`
  • 物理学中,用变量v表示速度,表明参数在参数空间移动的方向即速率,而代价函数的负梯度表示参数在参数空间移动的力,根据牛顿定律,动量等于质量乘以速度,而在动量学习算法中,我们假设质量的单位为1,因此速度v就可以直接当做动量了,我们同时引入超参数,其取值在【0,1】范围之间,用于调节先前梯度(力)的衰减效果

AdaGrad(自适应梯度算法):
思想就是,在更新次数增多,用累加的梯度值作为学习率的分母,从而达到降低学习率的效果。
在这里插入图片描述

# 假设有梯度和参数向量x
cache += dx**2
x += - learning_rate * dx / (np.sqrt(cache) + eps)

从上式可以看出,AdaGrad使的参数在累积的梯度较小时(\ theta <1)就会放大学习率,使网络训练更加快速。在梯度的累积量较大时(\ theta> 1)就会缩小学习率。也就是将梯度进行累加,当迭代次数逐渐增多,后期的累加梯度就会变大,学习率的分母就会变大,从而达到降低学习率的效果。

RMSProp(均方根支柱):
思想:虽然AdaGrad在理论上有些较好的性质,但是在实践中表现的并不是很好,其根本原因就是随着训练周期的增长,学习率降低的很快。而RMSProp算法就在AdaGrad基础上引入了衰减因子,使当前梯度和以前累加梯度进行权重的分配,以至于降低以往累加梯度对当前梯度的影响。也是通过更改学习率达到自适应梯度下降的。

cache =  decay_rate * cache + (1 - decay_rate) * dx**2
x += - learning_rate * dx / (np.sqrt(cache) + eps)

在这里插入图片描述
Adam(自适应动量优化):
通过学习率和梯度的双重更新达到梯度下降。其中梯度更改使用动量法,学习率使用RMSProp

m = beta1*m + (1-beta1)*dx
v = beta2*v + (1-beta2)*(dx**2)
x += - learning_rate * m / (np.sqrt(v) + eps)

在这里插入图片描述
过程:

  1. 首先进行小批量的数据处理,获得梯度的均值
  2. 使用之前的动量与当前梯度进行不同权重的结合,得到新的梯度
  3. 使用之前的梯度与当前梯度不用权重的结合,作为分母,用于改变学习率

文章借鉴于:https://blog.csdn.net/weixin_42398658/article/details/84525917

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值