程序笔记   发布时间:2022-07-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了CS231n Lecture 3 损失函数和优化大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

lecture 3 损失函数和优化

损失函数告诉我们目前的分类器的表现有多好

整个数据的损失是每组数据的损失之和的平均值

[L=frac{1}{N} sum_{i=1}^{N} L_{i}  ]

@H_49_12@multiclass SVM loss 多分类SVM损失函数

[begin{aligneD} L_{i} &=sum_{j neq y_{i}}left{Begin{array}{ll}0 & text { if } s_{y_{i}} geq s_{j}+1 \ s_{j}-s_{y_{i}}+1 & text { otherwise }end{array}right.\ &=sum_{j neq y_{i}} max left(0, s_{j}-s_{y_{i}}+1right) end{aligneD} ]

sj 是其他类别的分数,syi是正确的类的分数

这里的1代表一个阈值,当正确的分数比不正确的大于一个阈值时,代表本次预测的损失函数正确的的确比不正确的要表现得好。

在这里的损失函数只是代表错误造成的损失是多少,因此并不在乎sjsyi具体的值是多少。因此,无论对Li进行如何的线性移动,对结果都不会造成影响。

然后,当损失函数变为 Li = ∑j ≠ yi@H_167_22@max (0,sjsyi+1)2 时,会发现错误会被放大,越离谱的错误会被放的越大。在合页损失函数中,我们并不关心微小的错误。使用何种损失函数代表我们关心什么类型的错误,损失函数的意义在于告诉算法出现了什么类型的错误。平方形式会对错误更关心,不论是微小的还是很大的。

正则项 Regularization

[L(W)=frac{1}{N} sum_{i=1}^{N} L_{i}left(fleft(x_{i}, Wright), y_{i}right)+lambda R(W)]

之前的损失函数旨在告诉我们模型应该和训练数据拟合,但事实上,更应该关心的是模型应该和测试数据拟合。

为了防止出现过拟合的现象,因此要加入一个正则项防止模型过拟合(奥卡姆剃刀),相当于一种软性惩罚。λ是超参数,regularization strength 采用L2 regularization 会让W的每个维度都相对平均。

有几种简单的正则项例子 采用L2 regularization 会让W的每个维度都相对平均。

[begin{array}{l} underline{mathrm{L} 2 text { regularization: }} R(W)=sum_{k} sum_{l} W_{k, l}^{2} \ mathrm{~L} 1 text { regularization: } R(W)=sum_{k} sum_{l}left|W_{k, l}right| \ text { Elastic net }(mathrm{L} 1+mathrm{L} 2): R(W)=sum_{k} sum_{l} beta W_{k, l}^{2}+left|W_{k, l}right| end{array}]

Softmax Classifier

SVM对于Scores的使用仅仅是求出损失函数。而softmax会将分数换算成概率分布。

[Pleft(Y=k mid X=x_{i}right)=frac{e^{s_{k}}}{sum_{j} e^{s_{j}}} ]

[L_{i}=-log left(frac{e^{s y_{i}}}{sum_{j} e^{s_{j}}}right)  ]

对于softmax损失函数,区间是0到正无穷大。

当某个分数值发生微小改动时,相对于SVM可能不会发生变化,softmax损失函数必定会发生改变。

优化 Optimization

(frac{d f(X)}{d x}=lim _{h rightarrow 0} frac{f(x+h)-f(X)}{h})

对每个维度的W加入很小的步长,通过对损失函数的增量除以步长,即是数值梯度。

为了让损失函数最小化,所以要找到数值梯度最小(负数)的位置。

要求的是损失函数减少的方向,损失函数减小的方向,只和W有关。所以要找到一个合适的W让损失函数最小。

但是,使用数值梯度太慢、需要的算力太多了,因此我们可以使用微积分来解决这个问题。

[frac{d f(X)}{d x}=lim _{h rightarrow 0} frac{f(x+h)-f(X)}{h} ]

由数学公式推导,可以明白,梯度的方向正是loss函数增大的方向,因此,loss函数减小得最快的方向,就是梯度的反方向。

因此,我们会这样来优化W

while True:  weights_grad = evaluate_gradient(loss_fun, data, weights)  weights += - step_size * weights_grad

这里的step_size是步长,又叫学习率,是一个超参数。

随机梯度下降法 Stochastic Gradient Descent (SGD)

由于在实际应用中,我们的数据量N会特别大,可能会有百万千万的数据量。如果一个一个去算梯度来优化的话,会特别慢。

因此,我们采用随机梯度下降法,使用minibatch(大概32,64,128个数据)

每次使用minibatch的数据来训练模型并优化W值

大佬总结

以上是大佬教程为你收集整理的CS231n Lecture 3 损失函数和优化全部内容,希望文章能够帮你解决CS231n Lecture 3 损失函数和优化所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。