计算机视觉笔记1
损失函数
1.定义:在深度学习中,损失函数是用来衡量一组参数的质量的函数,衡量的方式是比较网络输出和真实输出的差异。
2.命名:损失函数=价值函数=目标函数=误差函数
(1)损失函数并不使用测试数据来衡量网络的性能。
(2)损失函数用来指导训练过程,使得网络的参数向损失降低的方向改变。
特性
- 最小值为0,当网络的输出和真实输出一致
- 当输出和真实输出越不一致时值越大
- 理想情况->convex 凸函数
- 实际上->not convex 非凸函数
–需要根据输出的变化而平滑的变化
----需要可导(SGD优化)
----需要容易求导
前提
为了使得误差向后传递backpropagation工作:
1)损失函数为每一个独立训练样本的损失的均值
2)损失函数为网络输出的函数
常用的损失函数
1.不同的任务类型需要不同的损失函数:
-------回归(Regression):网络输出一个连续的数值
--------------例如:预测一栋房屋的价值
--------------损失函数:绝对值误差,平方差
--------分类(Classifification):网络的输出为一个类别,从预定义的一组类别中的一个
---------------实例:判断邮件是否是垃圾邮件。
---------------损失函数:hinge loss,Cross-entropy loss
绝对误差函数Absolute value, L1-norm
- 常质感的损失函数
1)得到的解会比较稀疏Sparser
=======在高维任务中表现比较好
=======预测速度快
2)对outliers不敏感
方差函数Square error Euclidean loss
- 常用的损失函数
1)比绝对误差函数得到的结果更精准
2)对大的误差输出更敏感
3)对outliers很敏感
分类
- 我们期望得到的最终结果是每一个输入对应一个输出类别
1)网络的输出包含了对每一个类别的预测值
====如果有K个类别,网络的输出为K个值
如何设计损失函数?
- 将真实的唯一输出编码为i一个向量->独热编码 One -hot encoding
- 非概率的解释-> hinge loss
- 概率解释:将输出转换为概率函数-> Softmax
1)概率的值范围为0.0 到 1.0
2)属于所有类别的概率之和为1.0
独热编码
- 将一个类别标签转换为一个向量(每一个元素的值为1或者0)
1)向量的元素个数为总的类别的数量K
2)1对应于正确的类别,其他都为0
一般而言cross-entropy loss 比方差函数square error loss在分裂的情形下要好:
1)方差函数对误差的输出惩罚非常大
2)如果使用softmax激活函数,加上方差函数作为损失函数,梯度包含y(1-y),但输出接近0.0或者0.1的时候,梯度值非常小,网络的训练会比较慢
Muti-Lable 分类 not Muti-Class分类
- 输出属于多个类别中的一个或者多个类
1)例如一幅包含猫咪的图像可以同时属于“猫”,“哺乳动物”,“宠物” - 对于每一个输出独立使用sigmoid激活函数,不使用softmax
正则化 Regularization
- 避免过拟合
问题
如何证明逻辑回归的损失函数既有全局最优解
- 证明思路:
1)证明Logistic Regression 的loss function 是 Convex(凸函数)的
======= 在满足一阶可导下:f(x2)>=f(x1)+df/dx(x2-x1)