损失函数和成本函数

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


逻辑回归

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 函数

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

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

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

最简单的损失函数定义方式为均方平方差损失:

平方差很好理解,预测值与真实值直接相减,为了避免得到负数取绝对值或者平方,再做平均就是均方平方差。

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

损失函数一般使用:

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

逻辑回归参数迭代推导

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 层,有:

for i in range(L),有:

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

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

定义 损失函数 为:

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

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

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


常见损失函数

  1. 铰链损失(Hinge Loss):主要用于支持向量机(SVM) 中; $\ell(y) = \max(0, 1-t \cdot y)$
  2. 交叉熵损失 (Cross Entropy Loss,Softmax Loss ):用于Logistic 回归与Softmax 分类中;
  3. 平方和损失(Square Loss):主要是普通最小二乘法( Ordinary Least Square,OLS)中;
  4. 指数损失(Exponential Loss) :主要用于Adaboost 集成学习算法中,详见 Adaboost与指数损失
  5. 其他损失(如0-1损失,绝对值损失)

参考文献: