斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时7
课时7 线性分类器损失函数与最优化(下)
我们为什么要最大化对数概率而非直接最大化概率?
你在做逻辑斯蒂回归时,如果你只是想要最大化概率,那你使用log是无意义的。因为log函数是单调函数,最大化概率和最大化对数概率是等价的。
Softmax vs. SVM
我们调整其中的评分,使值上下浮动,对于SVM而言,分类正确率可能不会改变。因为测试样例中的边界是由一个大数决定的,SVM对于那种误分类评分低的样例不是很在意。但是对Softmax而言,任何一个测试样例都能提升分类器的性能。SVM具有附加的稳定性,一旦样例满足边界条件,这个样例点就不会影响损失函数,而Softmax则要将所有样例点都纳入考量。SVM分类器对一小搓接近于分类边界的样例较为敏感,对于离边界很远的样例点不敏感;而softmax是一个基于所有数据的函数。
正则化损失只作用于权重并不作用于数据
实际操作过程中,当你想要给神经网咯建立一个新模型时,你需要求解损失值,然后求解梯度值,然后你还要进行梯度值的检查,确保你的微积分求解是正确的。
因为要找出损失值的最小值,而梯度值为负值时才会不断向下找最小值。
步长也叫作学习速率,是最需要关注的重要参数
我们拥有完整的数据集,但是在实际操作的时候我们只是从训练集取样出一批用来估算损失函数的梯度。从而我就有了初始的更新方向,然后我们再把这个过程一次又一次的重复,来确定找到损失函数最低的W。因为只是用来训练集的一个很小的子集,所以得出的梯度很有可能就是一个噪声。这是取样算梯度的缺点,但是使用一个小子集来计算可以提高运算速度,也就是让我们可以计算更多的次数来估算梯度从而得出最低的损失函数。
一般来说,当我们在讨论神经网络的优化时,会在损失函数中看到很多的波动,大家可以把损失函数想象成一个大盆地,盆地的最低点就是我们要找的最小值。在这个盆型图像中,会有很多小坑。当你的函数优化到这个坑里面时,你有可能把这个小坑的最小值当做损失函数的最小值。但是其实在这个坑外面还有更小的函数值。所以这就是一个合适的学习速率的重要性。
如果把线性分类器一开始放在没有经过训练的图片上时,我们的分类器没办法解决像素的问题。人们习惯于做的是计算图片不同的特征,然后计算不同特征的描述,最终人通过统计总结来理解这张图片是什么东西。
HOG/SIFT特征
他会使用图片中,不同物体之间边缘的方向来做分类,在图片中这些边缘有不同的方向,我们把不同方向上的边缘用直方图做一个总结统计一下这张图片上不同方向的边缘都有多少,然后通过这个边缘数量的统计来得出图片中有什么东西。