瞭解LR的同窗們都知道,LR採用了最小化交叉熵或者最大化似然估計函數來做爲Cost Function,那有個頗有意思的問題來了,爲何咱們不用更加簡單熟悉的最小化平方偏差函數(MSE)呢?html
我我的理解主要有三個緣由:算法
這裏着重討論下後邊兩條緣由。函數
假設對於LR咱們依舊採用線性迴歸的MSE做爲代價函數:post
$$J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2$$學習
其中優化
$$h_{\theta}(x)=\frac{1}{1+e^{-\theta^T x}}$$spa
這樣代價函數$J(\theta)$關於算法參數$\theta$會是非凸函數,存在多個局部解,咱們能夠形式化的表示爲下圖:3d
如上圖所示,$J(\theta)$很是複雜,這並非咱們想要的。咱們想要的代價函數是關於$\theta$的凸函數,這樣咱們就能夠輕鬆地根據梯度降低法等最優化手段去輕鬆地找到全局最優解了。htm
因此,咱們理想的代價函數應該是凸函數,以下圖所示:blog
所以,MSE對於LR並非一個理想的代價函數。那麼爲何交叉熵能夠呢?咱們先給出交叉熵的公式形式:
$$J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}\log{\hat{y}^{(i)}}+(1-y^{(i)})\log{(1-\hat{y}^{(i)})}]$$
即令每一個樣本屬於其真實標記的機率越大越好,能夠證實$J(\theta)$是關於$\theta$的高階連續可導的凸函數,所以能夠根據凸優化理論求的最優解。
note:最小化交叉熵也能夠理解爲最大化似然估計,即利用已知樣本分佈,找到最有可能致使這種分佈的參數值,即最優解$\theta^{*}$。
咱們簡單求解下MSE和交叉熵對應$w$的梯度,首先是MSE:
對於單樣本的Loss Function爲:
$$L_{MSE}=\frac{1}{2}(y-\hat{y})^{2}$$
$L_{MSE}$對於$w$的梯度爲:
$$\frac{\partial L_{MSE}}{\partial w}=(y-\hat{y})\sigma(w, b)h$$
其中$\sigma(w, b)$爲sigmoid函數:
$$\sigma(w, b)=\frac{1}{1+e^{-w^{T}x+b}}$$
而以交叉熵爲Loss Function:
$$L_{cross\_entropy}=-(y\log{\hat{y}}+(1-y)\log(1-\hat{y}))$$
則對應的梯度爲:
$$\frac{\partial L_{cross\_entropy}}{\partial w}=(\hat{y}-y)h$$
咱們對比二者的梯度絕對值能夠看出MSE和交叉熵兩種損失函數的梯度大小差別:
$$\frac{|\Delta_{MSE}|}{|\Delta_{cross\_entropy}|}=|\sigma^{'}(w, b)| \le 0.25$$
即MSE的梯度是交叉熵梯度的1/4。
note:
其實能夠從另一個角度理解爲何交叉熵函數相對MSE不易致使梯度彌散:當訓練結果接近真實值時會由於梯度算子極小,使得模型的收斂速度變得很是的緩慢。而因爲交叉熵損失函數爲對數函數,在接近上邊界的時候,其仍然能夠保持在高梯度狀態,所以模型的收斂速度不會受損失函數的影響。