老齐教室

cost function 笔记

Cost Function,翻译为:代价函数、成本函数

与之同样的词语:损失函数(Loss function)

有资料认为二者不同。通常可以认为是一回事。维基百科:

In mathematical optimization, statistics, decision theory and machine learning, a loss function or cost function is a function that maps an event or values of one or more variables onto a real number intuitively representing some “cost” associated with the event. An optimization problem seeks to minimize a loss function.

损失函数用于衡量预测值与实际值的偏离程度,如果预测是完全精确的,则损失函数值为0;如果损失函数值不为0,则其表示的是预测的错误有多糟糕。使得损失函数值最小的那些待求参数值,就是“最优”的参数值。

常用的损失函数:

(1)0-1损失函数:可用于分类问题,即该函数用于衡量分类错误的数量,但由于此损失函数是非凸(non-convex)的,因此在做最优化计算时,难以求解,所以,正因为如此,0-1损失函数不是那么“实用”(如果这句话有误,请指正)。
(2)平方损失函数(Square Loss):常用于线性回归(Linear Regression)。
(3)对数损失(Log Loss)函数:常用于其模型输出每一类概率的分类器(classifier),例如逻辑回归。
(4)Hinge损失函数:常用于SVM(Support Vector Machine,支持向量机,一种机器学习算法)。中文名叫“合页损失函数”,因为hinge有“合页”之意。这个翻译虽然直白,但是你会发现,99%的文章都不会用它的中文名来称呼它,而是用“Hinge损失”之类的说法。

假设有训练样本$(x, y)$,模型为 $h$, 参数为 $\theta$ 。$h(\theta)=\theta^Tx$ ($\theta^T$ 表示 $\theta$ 的转置)。

任何能够衡量模型预测出来的值 $h(\theta)$ 与真实值 $y$ 之间的差异的函数都可以叫做代价函数,记作:$C(\theta)$。

如果有多个样本,则可以将所有代价函数的取值求均值,记作:$J(\theta)$

  • 选择代价函数时,最好挑选对参数$\theta$ 可微的函数(全微分存在,偏导数一定存在)
  • 对于每种算法来说,代价函数不是唯一的;
  • 代价函数是参数 $\theta$ 的函数;
  • 总的代价函数 $J(\theta)$ 可以用来评价模型的好坏,代价函数的值越小说明模型和参数越符合训练样本$(x, y)$ ;
  • $J(\theta)$ 是一个标量;

训练过程,就是不断选择参数的过程,即优化参数θ的过程,最常用的方法是梯度下降,这里的梯度就是代价函数$J(\theta)$ 对 $\theta_1, \theta_2, \cdots, \theta_n$ 的偏导数。

一个好的代价函数需要满足两个最基本的要求:能够评价模型的准确性,对参数 $\theta$ 可微。

在线性回归中,最常用的是均方误差(Mean squared error),即:

$$J(\theta_0, \theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(\hat y^{(i)}-y^{i})^2=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2$$

  • $m$:训练样本的个数
  • $h_{\theta}(x)$:用参数$\theta$ 和 $x$ 预测出来的值
  • $y$:原训练样本中的标签
  • 上角标 $(i)$:第$i$个样本。

在逻辑回归中,最常用的是损失函数是交叉熵(Cross Entropy)(或者说是对数损失函数(Log Loss))。

在信息理论中,熵用于衡量某种事件的“不可预测性”,而交叉熵=事件的真实分布+不可预测性,所以交叉熵可以用于度量两个概率分布(真实分布&预测分布)之间的差异性,即:交叉熵损失函数(对数损失函数)可以衡量一个模型对真实值带来的额外噪音,通过最小化交叉熵损失函数(对数损失函数),我们就可以最大化分类器(模型)的精度。

交叉熵是对「出乎意料」(译者注:原文使用suprise)的度量。神经元的目标是去计算函数x→y=y(x)。但是我们让它取而代之计算函数x→a=a(x)。假设我们把a当作y等于1的概率,1−a是y等于0的概率。那么,交叉熵衡量的是我们在知道y的真实值时的平均「出乎意料」程度。当输出是我们期望的值,我们的「出乎意料」程度比较低;当输出不是我们期望的,我们的「出乎意料」程度就比较高。

在1948年,克劳德·艾尔伍德·香农将热力学的熵,引入到信息论,因此它又被称为香农熵(Shannon Entropy),它是香农信息量(Shannon Information Content, SIC)的期望。香农信息量用来度量不确定性的大小:一个事件的香农信息量等于0,表示该事件的发生不会给我们提供任何新的信息,例如确定性的事件,发生的概率是1,发生了也不会引起任何惊讶;当不可能事件发生时,香农信息量为无穷大,这表示给我们提供了无穷多的新信息,并且使我们无限的惊讶。

$J(\theta)=-\frac 1 m [\sum_{i=1}^m(y^{(i)}logh_{\theta}(x^{(i)})+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]$

从单页样本角度,理解如此定义Logistic的代价函数的理由:

$C(\theta)=ylogh_\theta(x)+(1-y)log(1-h_{\theta}(x))$

上述表达式等价于:

$$C(\theta)=\begin{cases}-log(h_{\theta}(x), y=1\-log(1-h_{\theta}(x)), y=0\end{cases}$$

其中:$h_{\theta}(x)=\frac{1}{1+e^{-\theta^Tx}}$

参阅:https://zhuanlan.zhihu.com/p/28415991

以下链接,从概率的角度解释为什么选择Sigmoid函数作为Logistic回归的函数:

https://zhuanlan.zhihu.com/p/55321901

logistic回归值表示所属类的后验概率,无论是二分类还是多分类,分类结果都是后验概率最大所对应的类。

参考资料

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

关注微信公众号,读文章、听课程,提升技能