logistic regression 和 softmax regression的损失函数
我们有logistic regression可以将实数域的输入映射为0到1的概率输出,能够有很好的意义。但是如果用平常的MSE(最小均方误差)就会有问题。我们来剖析这个问题:
logistic与MSE
现在有一个目标:输入0,输出1。
为了方便起见,我们现在只考虑有一个神经元
我们给定初始的权重w=0.6,b=0.9来看学习趋势,这里学习率 η=0.15,初始预测值为0.82
可以看到Cost一开始随着训练轮数的增加下降的还是蛮快的,之后平缓,符合人们的直觉。
我们再次改变权重令,w=2.0,b=2.0,初始预测值为0.98
可以看出一开始的Cost几乎是不下降的,也就是说学习得特别缓慢。为什么会出现这种情况呢,初始的权重不同为什么会导致学习速率的不同呢?我们来看logistic regression+MSE到底哪里有欠缺。
首先来看MSE的形式:
由于我们的简化,现在只有一个神经元则,变成:
其中
分别对
上式右边带入了y=0,x=1。
改变
logistic和cross-entropy
关于交叉熵的知识详见这里
进过研究,人们发现用交叉熵作为损失函数就会避免这种0学习速率的问题。
考虑上述模型,引入交叉熵之后,Cost为:
其中
我们知道sigmod函数的导数为:
所以:
类似的有
可以看出学习快慢取决于
w=0.6,b=0.9来看学习趋势,这里学习率 η=0.005
w=0.2,b=0.2
softmax 回归
为了精确运算一般都是把softmax计算层和回归层放在一起进行。采用log-likelihood
其中: