损失函数和成本函数

文章目录
  1. 1. 逻辑回归
  2. 2. Softmax 回归
  3. 3. SVM
  4. 4. 神经网络

损失函数针对的是单个样本,代价函数或者成本函数针对的是全体样本。


逻辑回归

Logistic 回归是一个用于二分分类的算法。

Logistic 回归中使用的参数如下:

  • 输入的特征向量:$x \in R^{n_x}$,其中 ${n_x}$ 是特征数量;
  • 用于训练的标签:$y \in 0,1$
  • 权重:$w \in R^{n_x}$
  • 偏置: $b \in R$
  • 输出:$\hat{y} = \sigma(w^Tx+b)$
  • Sigmoid 函数
    $$s = \sigma(w^Tx+b) = \sigma(z) = \frac{1}{1+e^{-z}}$$

为将 wTx+b 约束在 [0, 1] 间,引入 Sigmoid 函数。从下图可看出,Sigmoid 函数的值域为 [0, 1]。

Logistic 回归可以看作是一个非常小的神经网络。下图是一个典型例子:

损失函数(loss function)用于衡量预测结果与真实值之间的误差。

最简单的损失函数定义方式为均方平方差损失:
$$L(\hat{y},y) = \frac{1}{2}(\hat{y}-y)^2$$
平方差很好理解,预测值与真实值直接相减,为了避免得到负数取绝对值或者平方,再做平均就是均方平方差。

但 Logistic 回归中我们并不倾向于使用这样的损失函数,因为之后讨论的优化问题会变成非凸的,最后会得到很多个局部最优解,梯度下降法可能找不到全局最优值。

损失函数一般使用:
$$L(\hat{y},y) = -(y\log\hat{y})-(1-y)\log(1-\hat{y})$$

损失函数是在单个训练样本中定义的,它衡量了在单个训练样本上的表现。而代价函数(cost function,或者称作成本函数)衡量的是在全体训练样本上的表现,即衡量参数 w 和 b 的效果。

$$J(w,b) = \frac{1}{m}\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)})$$

逻辑回归参数迭代推导

http://blog.csdn.net/oldbai001/article/details/49872433
http://blog.csdn.net/programmer_wei/article/details/52072939


Softmax 回归

二分类问题,神经网络输出层通常只有一个神经元,表示预测输出 $\hat y$是正类的概率 P(y = 1|x),$\hat y$ > 0.5 则判断为正类,反之判断为负类。

对于多分类问题,用 C 表示种类个数,则神经网络输出层,也就是第 L 层的单元数量 $n^{[L]} = C$。每个神经元的输出依次对应属于该类的概率,即 $P(y = c|x), c = 0, 1, .., C-1$。有一种 Logistic 回归的一般形式,叫做Softmax 回归,可以处理多分类问题。

对于 Softmax 回归模型的输出层,即第 L 层,有:

$$Z^{[L]} = W^{[L]}a^{[L-1]} + b^{[L]}$$

for i in range(L),有:

$$a^{[L]}_i = \frac{e^{Z^{[L]}_i}}{\sum^C_{i=1}e^{Z^{[L]}_i}}$$

为输出层每个神经元的输出,对应属于该类的概率,满足:

$$\sum^C_{i=1}a^{[L]}_i = 1$$

一个直观的计算例子如下:

定义 损失函数 为:

$$L(\hat y, y) = -\sum^C_{j=1}y_jlog\hat y_j$$

当 i 为样本真实类别,则有:

$$y_j = 0, j \ne i$$

因此,损失函数可以简化为:

$$L(\hat y, y) = -y_ilog\hat y_i = log \hat y_i$$

所有 m 个样本的 成本函数 为:

$$J = \frac{1}{m}\sum^m_{i=1}L(\hat y, y)$$


SVM


神经网络