# cost function

## 0-1 loss

$$
L(Y,f(x)) =\
\begin{cases}
1, & Y \neq f(x) \\
0, & Y = f(x) \\
\end{cases}
$$

## 方差 quadratic loss

$$C = \frac {1}{2}(y-a)^2$$\
其中 $$a = \sigma(wx+b)$$ 若用梯度下降来更新w，则w的偏导： $$\frac {\partial C}{\partial w} = (y-a) \sigma^′(wx) x$$ 因为sigmoid函数的性质，导致$$\sigma^′(wx)$$在z取大部分值时会很小(曲线的两端)，会导致w更新很慢。

## cross entropy

$$C = -\frac {1}{n} \sum \[y\ln a+(1-y)\ln(1-a)]$$\
其中y为期望输出，a为实际输出$$a= \sigma(\sum w\_j x\_j)$$。y的值为{0,1}，所以而a只是接近于{0,1}，所以不要换y与a的位置，因为ln0没有意义。

与方差代价函数一样，交叉熵代价函数同样有两个性质：

* 非负性。（所以我们的目标就是最小化代价函数）
* 当真实输出a与期望输出y接近的时候，代价函数接近于0.(比如y=0，a～0；y=1，a\~1时，代价函数都接近0)。

另外，它可以克服方差代价函数更新权重过慢的问题。

$$
\frac {\partial C}{\partial w\_j} =  \frac {1}{n}\sum x\_j(\sigma(wx)-y)
$$

可以看到，导数中没有$$\sigma^′(wx)$$这一项，权重的更新是受σ(z)−y这一项影响，即受误差的影响。所以当误差大的时候，权重更新就快，当误差小的时候，权重的更新就慢。这是一个很好的性质。

## log-likelihood loss

对数似然函数也常用来作为softmax回归的代价函数，深度学习中普遍的做法是将softmax作为最后一层，此时常用的是代价函数是log-likelihood cost。\
其实这两者是一致的，logistic回归用的就是sigmoid函数，softmax回归是logistic回归的多类别推广。log-likelihood代价函数在二类别时就可以化简为交叉熵代价函数的形式。

### 以logistic regression举例

$$
P(y=1|x,\theta) = h\_\theta(x) \\
P(y=0|x,\theta) = 1-h\_\theta(x) \\
P(y|x,\theta) = (h\_\theta(x))^y(1-h\_\theta(x))^{(1-y)} \\
L(\theta) = -\log \prod\_{i=1}^n P(y^{i}|x^{i},\theta) = - \sum\_{i=1}^n \log (h\_\theta(x^{i}))^{y^{i}}(1-h\_\theta(x^{i}))^{(1-y^{i})}
$$

这个就是最小化 cross entropy 。

## absolute loss

$$L(Y,f(x)) = |Y-f(x)|$$

### 参考佳文

[交叉熵代价函数](http://blog.csdn.net/u012162613/article/details/44239919)\
[Cross entropy](https://en.wikipedia.org/wiki/Cross_entropy)

[各种Loss Function的比较](https://www.jianshu.com/p/ac26866e81bc)
