损失函数
我们通过比较分类结果的分数和实际上模型的标签的差距,可以了解分类的效果,从而实现对其的优化。
可以通过构造损失函数来量化分类的结果,可以用 梯度下降的方法,求得 损失函数 对每一个权重的偏导数,而后进行学习(学习率:学习步长:偏导数*学习步长+原来权重 = 现在的权重),最终达到一个损失函数的最小值。
####### 损失函数
Define a loss function that quantifies( v. 量化,为…定量,确定数量 ) our unhappiness with the scores across the training data.
(定义一个损失函数,其通过训练数据用分数去量化我们的不喜欢的东西)
####### SVM (支持向量机) Multiclass(多级,多类)
Given an example (Xi,Yi) where Xi is the image and where Yi is the (integer 整数) label, and using the shorthand for the scores vector(向量): s = f( Xi, W)
铰链损失函数(又称合页损失函数)
Hinge Loss 是机器学习领域中的一种损失函数,可用于“最大间隔(max-margin)”分类,其最著名的应用是作为SVM的目标函数。
SVM 损失函数 支持向量机(直接百度 划走~)
这里的 1 其实是大有深意的,但我们不表(我也不会)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8GnbNuY-1648442258888)(http://81.70.241.204/usr/uploads/2021/08/3258702668.png)]
这样的话,说白了就是 铰链函数,只会对输入图像后,距离正确得分在 1 以内,或者大于正确得分时,对参数进行惩罚(矫正)。
FAQ(Frequently Asked Questions)
- What happens to loss if car scores change a bit?
答:不会影响,因为他们距离汽车的得分都是较远的,所以不会产生影响。 - What is the min/max possible loss?
答:损失函数的返回值(结果)是一个很大很大的数,也可以是 0 0~正无穷
3. At initialization(n.初始化,代码中init_xxx等初始化代码的由来) W is small so all s ≈ 0 . What is the loss?
答:先看 s 是什么:
s 是输入图像之后,经过各个参数和偏置计算后的得分,因为一开始 w 都是随机的,或者是很小的数,经过随意的计算过后,应该得到的是一些随意的结果,所以得分,匹配度很低 ==> s ≈ 0
那么,一开始的按照 SVM loss 的定义 j != yi , 此时损失函数的结果 Li 就是 分类中不是正确照片的个数。 在这里就是 2 - What if the sum was over all classes? (including j = yi)
答: 如果不设置 k != yi 的条件,那么 函数的结果就是 在损失函数的基础上,加了一个 1 的常数。 - What if we used mean instead of sum?
答: 当我们使用 平均数 去代替 和 时,只是把最终损失函数的结果 除以 3 并不会改变损失函数的相对大小。
所以我们既不需要考虑平均,也不需要考虑正确的情况,因为他们并不会改变我们的损失函数的相对大小,损失函数的结果是 1000 还是 10 它只是一种度量,我们通过减小损失函数的值,以求获得更加合适,更为精确的 参数和偏置,在相同的计算方式下,我们只需要关注 前后多次用损失函数对偏置求导后进行学习后的结果的变化! - What if we used : 改变损失函数的形式,从一次变为二次。
答 : 平方损失函数,会进一步的放大得分大于正确图像的图像,增加此类的 惩罚力度。 比如说 在青蛙图片中的结果。
代码实例:
def L_i_vectorized(x, y