结论:损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function)。
Loss function 损失函数是定义在单个样本上,算的是一个样本的误差。
Cost function 代价函数是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
Object function 目标函数定义为:Cost function+正则化项
for example
上面三个图的函数分别为f1(x) f2(x) f3(x)。用这三个函数来分别拟合Price,Price的真实值记为Y。
给定x,三个函数都会输出一个f(X),这个输出的f(X)与真实值Y可能是相同的,也可能是不同的,为了表示拟合的好坏,我们用一个函数来度量拟合的程度:损失函数。
L(Y,f(X))=(Y-f(X))2,这个函数是损失函数(loss function),或者叫代价函数(cost function)。损失函数越小,拟合函数越好。
那是不是目标函数需要让cost function越小越好呢?肯定不是
加入一个新的概念:风险函数(risk function)。风险函数是损失函数的期望,因为我们输入输出的(X,Y)遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。
f(X)关于训练集的平均损失称为经验风险(empirical risk),即,所以我们的目标就是最小化,称为经验风险最小化。
那么是最右面的f3(x)的经验风险函数最小了,因为它的拟合度是最高的,但是f3(x)的函数过于复杂化(过拟合)。我们不仅要让经验风险最小化,还要让结构风险最小化。定义一个
函数J(f)结构风险,专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization),常用的有L1,L2范数。
所以我们最后优化的函数:,即最优化经验风险和结构风险,这个函数为目标函数。
结合上面的例子来说:f1(x)的结构风险最小(因为模型比较简单),但是经验风险太大;f3(x)的经验风险最小(对数据拟合效果好),但是结构风险太大;综合考虑f2(x)最适合用来
预测未知数据集。
在Ng的课程中,给出如下解释:
The loss function computes the error for a single training example.
The cost function is the average of the function of the entire training set.
loss function 是单个样例的损失/误差;而cost function是对数据集整体的误差描述,是对数据的误差取平均得到的。