成本函数与MSE的区别及公式差异疑问
嘿,作为刚入门机器学习和统计学的新手,有这个疑问太正常啦!我来帮你把这俩公式的关系掰扯清楚~
先明确两个公式的具体形式
你提到的斯坦福Coursera课程里的成本函数公式是:
$$J(\theta) = \frac{1}{2m}\sum_{i=1}^m \left(h_\theta(x^{(i)}) - y{(i)}\right)2$$
而常见的均方误差(MSE)公式是:
$$MSE = \frac{1}{m}\sum_{i=1}^m \left(h_\theta(x^{(i)}) - y{(i)}\right)2$$
二者本质等价,只是系数不同
核心结论:这两个公式本质是同一个东西的缩放版本,完全等价于优化目标。
为什么这么说?因为我们使用成本函数的目的是找到让预测值和真实值差距最小的模型参数$\theta$。当你给成本函数乘以一个正的常数(这里是1/2),并不会改变函数的最小值点——也就是说,能最小化$J(\theta)$的$\theta$,和能最小化MSE的$\theta$是完全一样的。唯一的区别是函数的具体数值差了1/2倍,但这对模型优化没有任何影响。
为什么Coursera课程里要加1/2这个系数?
这纯粹是为了简化后续的求导计算!
当我们用梯度下降法优化参数$\theta$时,需要对成本函数求导。如果用Coursera的公式,求导后:
$$\frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m}\sum_{i=1}^m \left(h_\theta(x^{(i)}) - y{(i)}\right)x_j{(i)}$$
平方项的导数是2倍的$(h_\theta(x)-y)$,刚好和分母的2抵消,得到的导数表达式非常简洁,没有多余的系数,方便后续的梯度下降迭代计算。
而如果直接用标准MSE求导,结果会是:
$$\frac{\partial MSE}{\partial \theta_j} = \frac{2}{m}\sum_{i=1}^m \left(h_\theta(x^{(i)}) - y{(i)}\right)x_j{(i)}$$
多了一个2的系数,虽然不影响最终的参数更新(可以把这个系数合并到学习率$\alpha$里),但计算起来不如前者清爽。Andrew Ng在课程里选择1/(2m)的版本,完全是为了教学和计算的便利性。
成本函数的“标准公式”是什么?
其实没有绝对唯一的“标准”成本函数——成本函数的核心是衡量模型预测与真实值的误差,只要能实现这个目的的函数都可以作为成本函数。
MSE是回归任务中最常用的成本函数之一,而Coursera课程里的那个公式,就是MSE的一个“简化计算版”,本质上还是MSE。你可以把它看作是MSE的一种变体,专门为梯度下降的计算优化过。
内容的提问来源于stack exchange,提问作者rajd216

