交叉熵损失函数(Cross Entropy Loss function )
我们从一道面试题目中引入相关概念。
定义两个模型。
1.1分类错误率(Classification Error)作为损失函数
第一种损失函数:分类错误率。就只是简单将错误的个数比上所有的个数,这样就会损失掉一些比较深层次的信息,就好比如在这个例子中两个模型的损失函数的值都相同,但是模型Ⅱ要优于模型Ⅰ
1.2均方误差(Mean Sqared Error)作为损失函数
如上有明显区分模型Ⅰ和模型Ⅱ的能力,但是我们暂时不会使用MSE作为分类的损失函数,这点我们下面会有讲。
1.3交叉熵损失函数(Cross Entropy Loss Function)作为损失函数
(一) 二分类的情况,也就是我们只要区分“是”或者“不是”:
(二) 多分类的情况,我们要区分是“哪一类”,但是其实本质上和二分类没区别,可以理解为二分类的拓展:
我们再来看下上述的两个模型在交叉熵损失函数上的表现如何:
由此,交叉熵损失函数也有甄别模型相对好坏的能力
由之前的知识和二三题做个小总结:
为了解决第四题,我们还需回顾下线性回归的实现。
step1.定义线性模型: \(\hat{y} = w^Tx\)
step2.定义loss function:
则有:
\[L(w,b) = \frac{1}{m} \Sigma_{i=1}^{m}loss = \frac{1}{m} \Sigma_{i=1}^{m}(\hat{y}^{(i)} - y^{(i)})^2 = \frac{1}{m} \Sigma_{i=1}^{m}(w^Tx^{(i)}+b - y^{(i)})^2 \]step3.使用SGD(mini-batch gradient descent)使我们的损失函数\(L(w,b)\)最小化,并且得到此时的\(w*,b* = \arg max_{w,b}L(w,b)\)
\[(w,b)←(w,b)−\frac{η}{|B|}∑_{i∈B}∂_{(w,b)}l_{(i)}(w,b). \]其中\(|B|\)指的是批量的大小,学习率\(η\),直到\(∂_{(w,b)}\)收敛得到我们的超参数\(w,b\)
第四题 为什么我们使用交叉熵而不用MSE呢?
在吴恩达老师的机器学习的 逻辑回归 的一课中有讲到:
在我们将Hypothesis Function \(h_\theta (x) = \theta^{T}x + b\) 替换成\(h_\theta (x) = \frac{1}{1+\exp{\theta^{T}x}}\)之后,我们得到的损失函数的图像极有可能是长成这个样子的:
这个时候就要改变我们策略,稍稍修改下\(J(\theta)\),\(J(\theta) = \frac{1}{m}\Sigma_{i=1}^{m}Cost(h_\theta (x^{(i)}) , x^{(i)})\)
文章还在编辑,如果有遗漏或者错,劳烦指正,谢谢