成绩函数、目标函数、代价函数和损失函数
成绩函数(score function
)、目标函数(objective function
)、代价函数(cost function
)和损失函数(loss function
)这四个术语经常出现在机器学习和深度学习的各类算法中
目标函数、代价函数和损失函数
目标函数指的是最优化经验风险和结构风险的函数(最大值/最小值优化)。经验风险指的是针对训练数据的损失值,在深度学习中指的是数据损失(data loss
);结构风险指的是针对模型复杂度的损失值,在深度学习中指的是正则化损失(regularization loss
)。
损失函数和代价函数指的是最小值优化函数,Andrew Ng
在机器学习课程Logistic Regression Cost Function - deeplearning.ai | Coursera中给出一个解释如下:
损失函数用于评判单个训练数据计算结果的好坏
代价函数用于评判整个训练数据计算结果的好坏
目标函数可以看成损失函数或代价函数的泛化形式,在深度学习中,获取最优的分类结果需要最小化损失函数或者代价函数值
关联
理清每个术语的概念以及联系,以分类算法为例,假设有一组训练数据\(X\),大小为\(m\times n\),\(m\)表示数据个数,\(n\)表示单个数据维数。\(X\)中的每个数据都有一个类别,保存为\(Y\),大小为\(m\times 1\)
想要实现一个算法\(F\),输入\(X\)中的数据就能够输出\(Y\)中相对应的类别,并且希望能够进一步泛化,输入和\(X\)相同类型的数据也能够输出正确的类别
通常实现方法是设置一个函数\(S\),输入数据后输出一组评分,每个评分表示属于某一个标签的可能性,选取最大的评分值作为输入数据所属类别
\(S\)就是成绩函数,又称为评分函数,其目的是原始数据到类别的映射
那么怎么来计算\(S\)的好坏呢?可以设置另一个函数\(O\),用来计算\(S\)输出的评分值和正确类别(将类别数值化)之间的差距
\(O\)就是目标函数,其目的是量化预测分类结果和真实结果之间的的距离
函数\(O\)的结果越小,表明函数\(S\)的结果越好,也就是分类效果越好
目标函数的计算包括两部分,一是针对计算结果的评判,二是针对算法复杂度的评判
针对计算结果的评判,就是数据损失,表示损失函数或者代价函数;针对算法复杂度的评判,就是正则化损失
\[ O(\theta) = L(\theta)+\Omega(\theta) =\frac{1}{N} \sum_{j=1}^{N}loss(y_{j},f(x_{j}))+\lambda R(W) \]