classification输出的表示
从regression引入:
在Regression中,输入为x,model的输出为y,目标输出为label y。
若将classification当作regression看待,输入为x,model输出为y,目标输出为 label y class
但model输出为数字,而目标输出为class,因此需要将class转化为数字
若用序号表示不同的class,例如上图中,有序号1与序号2更近的关系,序号1与序号3更远的关系,若class之间并不存在特定关系,则为class编号不可行。
为解决上述问题,我们可以将class用one-hot vector来表示,label y为几个class,则为几维向量。例如下图中,label y为三维向量:
解决label y从class转化为数字这个问题后,还需要将model输出的y从一个数字转化为向量。
在regression中,只能得到一个输出y,如上图所示。
可以将output一个数值的方法重复多次即可输出多个数值,如下图所示:
将a1、a2、a3乘上不同的weight再加上bias得到y1;再将a1、a2、a3乘上另外不同的weight再加上另外一个bias得到y2;最后将a1、a2、a3乘上另外不同的weight再加上另外一个bias得到y3.
y1、y2、y3组成向量后作为classification中model的输出值
Classification中Loss的计算
label y中每一个值为0或1,而model输出的y中的值为任意值,需要用softmax函数进行normalizey中的任意值,即将任意值挪到0和1之间,以计算y与label y的相似度。
Soft-max(Logit)
exp(yi) :exp是exponential,exp(yi)是指对yi取指数
将不同的y取指数后相加得到summation,再用每一个yi除以summation得到不同的yi’
Soft-max不仅可以normalize y中的任意值,而且经计算发现,Soft-max还可放大这些值之间的大小差距
Loss的计算方式不变,但y与label y之间的差距e有两种计算方式
(1)Mean Square Error(MSE)
这是Regression中常见的e的计算方式
(2)Cross-entropy
在Classification中,我们更常用Cross-entropy
更常用Cross- entropy的原因
输入x,输出的y1、y2、y3。假设目标输出为[1,0,0]T。
将y3固定为-1000,因此y3在Soft-max之后会趋近于0,和目标值接近,对结果影响则会很小。结果主要由y1和y2影响。
假设y1与y2在范围(-10,10)之间,可作出两种方法下的error surface二维图:
(上图中,红色部分表示Loss大,蓝色部分表示Loss小)
若一开始的地方在左上角,即Loss大的位置,则要往Loss小的右下角行进:
在MSE方法中:Loss都很大,处于平坦位置,无法用gradient descent来往Loss小的方向走,即便learning rate增大,training仍然困难。
在Cross-entropy方法中:坡度是变化的,可通过gradient向右下行进。
Loss function的不同会影响training的难度