第三讲-损失函数和优化-课时7--损失函数
SVM有点忘记了,记不得score怎么计算的。该复习一下统计学习方法和林轩田的课了。
-----------------------------------------------------------------------------------------
SVM也是线性分类而已,损失函数是hinge loss,之所以那么复杂的推导来推到去,只是因为:
hinge loss不是处处可导,不能用梯度下降,可参看
https://www.zhihu.com/question/265751466/answer/302448091
而SVM使用对偶形式之后是一个凸优化问题,前人研究的很透彻,求解更快速。
-----------------------------------------------------------------------------------------
下图为多分类损失函数求和项中的一项,横坐标是Syi,纵坐标是损失函数。Sj是定值。
实施类别的预测值要比其余类别的预测值高,而且要高出一个安全距离。下图选择了固定距离为1,这个固定距离并不重要,没有影响。
当权重初始化为很小的值时,那么对于一个数据,所有类别的分数都几乎为0,损失函数为C-1,C为类别数。可以作为debug策略。
如果error measure中加上j=yi的那一项,那么Li会增加1。正是因为我们不使j=yi,才能让Li的最小值变为0,以便与理解。
###################################################
L1正则就是Lasso回归
L2正则就是岭回归
不同点:L1可以让一部分特征的系数缩小到0,权重矩阵变成稀疏矩阵,从而间接实现特征选择。所以L1适用于特征之间有关联的情况。
L2让所有特征的系数都缩小,但是不会减为0,它会使优化求解稳定快速。所以L2适用于特征之间没有关联的情况
L1和L2的结合
L1和L2的优点可以结合起来,这就是Elastic Net
L1和L2的具体解释可以参考https://blog.****.net/jinping_shi/article/details/52433975,讲解的非常生动,很详细。
######################################################################################
假设x = [1,1,1,1].T , w1= [1,0,0,0].T , w2 = [0.25,0.25,0.25,0.25].T
使用w1或者w2所得到的预测分数事实上是一样的,但是
L2约束会更喜欢w2,因为w2的模长更小。
L2模型的参数是各个位置都小,而L1是几个位置为0。
L2依赖于所有特征,当数据中含有噪声时(某个特征的值记录错误了),L2的鲁棒性更强.
L2具有正则化的原因是L2之后的参数变小了,参数下模型就简单,当x发生变化时,预测分数变化不会很大(预测分数=参数*x)
####################################################################
二分类的损失函数为
其中yi是0或者1,预测值也是数字。
二分类的代价函数可以改为:
####################################################
多分类的代价函数
Li = -sum( Y * log(Y_hat) ) #这里的Y和Y_hat都是长度为C的向量,C为类别数。
此时y和h(x)均为编码向量
Li的范围为0 - +inf
Li若为0,则在softmax之前的向量为一个值为无穷大,其余均为无穷小。
与SVM一样,当最初权重初始为0,分数全为0,
##########################################
多标签其实就是二分类啊!只不过是多个标签同时进行分类,就是sigmoid!
假如每个物体有4个标签,则代价函数如下
多标签分类神经网络其实完全可以使用多个分类器分别去做,但是假如是自动驾驶问题中的图片多标签这种问题,各个标签的初级特征是基本相同的,使用一个神经网络可以共享这些特征,这样的一个multi-task网络会比四个分别去做的效果更好。
multi-task时,每个任务的数据量要接近(实际中,训练数据的有些标签是不知道的,此时相当于对于这个任务来说,这样的数据无法使用。)。这样的话,对于每一类标签的有效数据集,其余标签的有效数据集都可以为那一类标签的二分类问题提供帮助。
只有网络足够大,multi-task网络一定比多个单独任务的网络做得好。
####迁移学习中,提取学习到的参数需要是在更大的数据集上训练得到的,才能发挥作用。