status
type
date
slug
summary
tags
category
password
icon
Total Videos
Link
Video Duration
分类(Classification)是怎么做的?
前面我们学习了回归(Regression)问题。现在我们来看看分类(Classification)问题。
分类问题可以用回归问题来表示,回归问题的本质是预测一个数值(标量),那么我们要把分类问题class类给表示为一个数值,将预测值与分类的做对比,才能用回归问题的方法来预测。但此方法也有缺点,即当class之间关系不够密切时,预测的值和class没有关系。
那要如何将class给表示为具体的值呢?
一种常用的方法是one-hot vector
Class as one-hot vector
将每一个class分别表示为不同的独热向量(one-hot vector),这种向量的特点是:
- 每个向量只有一个元素为1,其他元素均为0,因此独热向量具有稀疏性。
- 适合用于表示分类数据,每个维度对应一个类别,可以方便地进行分类任务。
- 独热向量可以避免数据之间的相对大小对模型产生影响,因为每个维度之间是相互独立的。
- 由于每个维度都是离散的,独热向量可以很好地处理分类任务,但不适合表示连续数值或文本数据。
以前回归问题的DNN,只是预测一个数值,现在的分类问题需要我们将输出设置为三个。具体来说是将乘上三个不同的weight然后加上三个不同的bias,以此输出三个。
classification输出的是一个向量,我们要想与one-hot vector的对比还需要通过softmax函数将转换one-hot vector的才能拿去与作对比。
Soft-max和Cross entropy
softmax函数的结构如上图,
通过e取指数,在除以全体e指的和,得到一个概率值。这里的输入值通常称为logit。对于二分类问题,我们通常不使用softmax,而是使用Sigmoid,这两个方法是等价的。
经过softmax转换的与代表class的之间的差距称为。这个Loss可以用MSE定义,但分类问题更常用的是Cross-entropy:
Minimizing cross-entropy又称为maximizing likelihood。Cross-entropy内置了softmax,所以很多时候在代码中看不到softmax。
下面我们从optimization的角度解释一下为什么Cross-entropy会比MSE在分类问题中效果更好。
MSE VS Cross-entropy
上图中,我们将设置为-1000以让趋近于0,从而排除这个参数的影响,Error surface图只有两个参数,从右上角到左小角,Loss逐渐减小。
可以看出,cross-entropy在Loss很大的地方(蓝点)依然有比较大的Gradient,从而推动loss降低。但MSE在Loss很大的地方比较平坦,Gradient很小,所以很难依靠Gradient来降低Loss,此时可能需要用adam这种optimization方法。
这说明Loss函数的定义都能影响的optimization问题。
- 作者:铃溪
- 链接:https://lingxi.mozzai.top/article/d40c47e7-c10f-44b0-adc0-187726bfccba
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章