cost function

0-1 loss

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

方差 quadratic loss

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

cross entropy

C=1n[ylna+(1y)ln(1a)]C = -\frac {1}{n} \sum [y\ln a+(1-y)\ln(1-a)] 其中y为期望输出,a为实际输出a=σ(wjxj)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)。

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

Cwj=1nxj(σ(wx)y)\frac {\partial C}{\partial w_j} = \frac {1}{n}\sum x_j(\sigma(wx)-y)

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

log-likelihood loss

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

以logistic regression举例

P(y=1x,θ)=hθ(x)P(y=0x,θ)=1hθ(x)P(yx,θ)=(hθ(x))y(1hθ(x))(1y)L(θ)=logi=1nP(yixi,θ)=i=1nlog(hθ(xi))yi(1hθ(xi))(1yi)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))=Yf(x)L(Y,f(x)) = |Y-f(x)|

参考佳文

交叉熵代价函数 Cross entropy

各种Loss Function的比较

Last updated