大纲
1.为什么需要目标函数
深度学习中参数是要不断调整的,其实学习的过程就是通过训练不断调整参数使模型更加能够适应去解决相应问题的过程。
2.目标函数相关概念
1.**损失函数(Loss Function )**是定义在单个样本上的,算的是一个样本的误差。(损失函数越小代表拟合得越好)
2**.代价函数(Cost Function )**是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
3.目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是Cost Function + 正则化项)。
就是目标函数是最终需要优化的函数,其中包括经验损失和结构损失。
obj=loss+Ω
经验损失(loss)就是传说中的损失函数或者代价函数。结构损失(Ω)就是正则项之类的来控制模型复杂程度的函数(比如过拟合)。
3.分类问题
1.分类问题
分类问题预测的是类别,模型的输出应该是概率分布,比如一个三分类问题的输出就是[0.2,0.7,0.1],就是每一种类别识别出来的概率,最后取最大的那个作为识别的结果。
2.分类问题的损失函数
one-hot编码
one-hot编码:就是把正整数变成向量表达,生成一个长度不小于正整数的向量,只有正整数的位置为1,其它位置都为0.
比如2–>one-hot–>[0,0,1]
分类问题的目标函数需要衡量目标类别与当前预测的差距
比如一个三分类问题,训练中模型的输出是[0.2,0.6,0.2],预测的是第一类(以0开始),但是实际上的真实类别应该是第二类,这时候就将这个真实类别用one-hot编码2–>one-hot–>[0,0,1],这个时候用one-hot编码之后的真实向量与预测向量进行损失值求解,就可以判断出模型的准确性,并进行进一步的优化。
分类问题损失值的求解方法
- 平方差损失
例:预测值:[0.2,0.7,0.1]
真实值:[0,0,1]
损失函数值:[(0.2-0)^2+(0.7-0) ^2+(0.1-1) ^2]0.5 = 0.65
乘以0.5的目的是抵消在之后求导中平方的2,这个损失值就很大,证明模型不好。 - 交叉熵损失(CrossEntropy Loss)
交叉熵比较麻烦,简单来说就是将损失值放大,在之后的博客中会单独讨论。
交叉熵损失就是分类问题使用的一种
4.回归问题
1.回归问题
回归问题预测的是一个值,模型的输出是一个实数值。
2.回归问题的损失函数
求损失值方法
- 预测值与真实值差距
- 平方差损失
- 绝对值损失
(注意,交叉熵损失只能用来处理分类问题)