大佬教程收集整理的这篇文章主要介绍了CS231n Lecture 3 损失函数和优化,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
损失函数告诉我们目前的分类器的表现有多好
整个数据的损失是每组数据的损失之和的平均值
@H_49_12@multiclass SVM loss 多分类SVM损失函数sj 是其他类别的分数,syi是正确的类的分数
这里的1代表一个阈值,当正确的分数比不正确的大于一个阈值时,代表本次预测的损失函数正确的的确比不正确的要表现得好。
在这里的损失函数只是代表错误造成的损失是多少,因此并不在乎sj和syi具体的值是多少。因此,无论对Li进行如何的线性移动,对结果都不会造成影响。
然后,当损失函数变为 Li = ∑j ≠ yi@H_167_22@max (0,sj−syi+1)2 时,会发现错误会被放大,越离谱的错误会被放的越大。在合页损失函数中,我们并不关心微小的错误。使用何种损失函数代表我们关心什么类型的错误,损失函数的意义在于告诉算法出现了什么类型的错误。平方形式会对错误更关心,不论是微小的还是很大的。
之前的损失函数旨在告诉我们模型应该和训练数据拟合,但事实上,更应该关心的是模型应该和测试数据拟合。
为了防止出现过拟合的现象,因此要加入一个正则项防止模型过拟合(奥卡姆剃刀),相当于一种软性惩罚。λ是超参数,regularization strength 采用L2 regularization 会让W的每个维度都相对平均。
有几种简单的正则项例子 采用L2 regularization 会让W的每个维度都相对平均。
SVM对于Scores的使用仅仅是求出损失函数。而softmax会将分数换算成概率分布。
对于softmax损失函数,区间是0到正无穷大。
当某个分数值发生微小改动时,相对于SVM可能不会发生变化,softmax损失函数必定会发生改变。
(frac{d f(X)}{d x}=lim _{h rightarrow 0} frac{f(x+h)-f(X)}{h})
对每个维度的W加入很小的步长,通过对损失函数的增量除以步长,即是数值梯度。
为了让损失函数最小化,所以要找到数值梯度最小(负数)的位置。
要求的是损失函数减少的方向,损失函数减小的方向,只和W有关。所以要找到一个合适的W让损失函数最小。
但是,使用数值梯度太慢、需要的算力太多了,因此我们可以使用微积分来解决这个问题。
由数学公式推导,可以明白,梯度的方向正是loss函数增大的方向,因此,loss函数减小得最快的方向,就是梯度的反方向。
因此,我们会这样来优化W
while True: weights_grad = evaluate_gradient(loss_fun, data, weights) weights += - step_size * weights_grad
这里的step_size是步长,又叫学习率,是一个超参数。
由于在实际应用中,我们的数据量N会特别大,可能会有百万千万的数据量。如果一个一个去算梯度来优化的话,会特别慢。
因此,我们采用随机梯度下降法,使用minibatch(大概32,64,128个数据)
每次使用minibatch的数据来训练模型并优化W值
以上是大佬教程为你收集整理的CS231n Lecture 3 损失函数和优化全部内容,希望文章能够帮你解决CS231n Lecture 3 损失函数和优化所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。