sigmoid/逻辑回归要用交叉熵/最大似然的原理

为什么选择交叉熵


结论:在使用sigmoid作为激活函数的时候,cross entropy相比于平方损失函数,具有收敛速度快,更容易获得全局最优的特点;使用softmax作为激活函数,log-likelihood作为损失函数,不存在收敛慢的缺点。
对于损失函数的收敛特性,我们期望是当误差越大的时候,收敛(学习)速度应该越快。

对于一个神经元/逻辑回归,可以表示为:
z = w x + v , y = σ ( z ) z = wx + v , y = \sigma (z) z=wx+v,y=σ(z)
对于平方损失函数: C o s t = C = ( a − y ) 2 2 Cost = C = \frac{(a-y)^2}{2} Cost=C=2(ay)2其中, a 代表真值。
对W求偏导: ∂ C ∂ w = ( a − y ) σ ′ ( x ) x \frac{\partial C}{\partial w} = (a-y)\sigma^{'}(x)x wC=(ay)σ(x)x
对于最大似然,或者说转化为交叉熵损失函数,
代价函数: C = − ( a l n y + ( 1 − a ) l n ( 1 − y ) ) C = -(alny + (1-a)ln(1-y)) C=(alny+(1a)ln(1y))
对W求偏导: ∂ C ∂ w = ( a − y ) x \frac{\partial C}{\partial w} = (a-y)x wC=(ay)x
对比两个损失函数的导数,我们发现,两者相差了一个 [公式] 。其中sigmoid函数的导数最大为1/4(当x=0)并且当x增大时迅速减小,x减小是也是迅速减小靠近0。
sigmoid/逻辑回归要用交叉熵/最大似然的原理_第1张图片
这说明了平方损失函数的学习相比交叉熵损失慢很多。接下来重要的一个点:对于平方损失函数,当预测值和真值背离很远时,比如真值是1,预测值是0.05, 按照我们的期望,这时候算出来的梯度应该要很大才对。但是,这时候 σ ( x ) ′ = σ ( x ) ( 1 − σ ( x ) ) \sigma (x)^{'} = \sigma (x)(1-\sigma(x)) σ(x)=σ(x)(1σ(x))的值非常小,导致反向传播的梯度非常小,而且,这时,继续减小预测值,梯度会越小。而交叉熵的梯度不会出现这个问题,背离越多,梯度越大,更新越大,对模型产生更多的更新。

你可能感兴趣的:(深度学习,机器学习)