Dropout正则化、重叠池化(overlapping)、裁剪翻转与PCA颜色扰动等数据增强策略,可以提高模型的泛化能力。
图像分类根据标签的不同,大致可分为二分类任务、多分类任务、多标签分类任务。
二分类
数据集有两个类别,每张图片是两个类别中的一个,标签为0或1。比如,训练一个图像分类器,判断一张输入图片是否为鸟。
二分类的损失函数的计算方式如公式1所示,其中
h
θ
(
x
)
h_\theta(x)
hθ(x)是sigmoid激活函数。激活函数是将数值变换到(0,1)之间,图展示了sigmoid函数,是递增的函数,当x等于0的时候,sigmoid函数的值为0.5,,随着x的增大,函数趋近1,随着x的减小,函数趋近0
L(
θ
\theta
θ)=-y
log
(
\log(
log(
h
θ
(
x
)
h_\theta(x)
hθ(x)
)
)
)-(1-y)
log
(
1
−
\log(1-
log(1−
h
θ
(
x
)
h_\theta(x)
hθ(x)
)
)
)
h
θ
(
x
)
h_\theta(x)
hθ(x)=
1
1
+
e
−
θ
T
x
\frac{1}{1+e^-{\theta^Tx}}
1+e−θTx1
多分类
数据集有C个类别,每张图片是个C类别中的一个,每张图片只有一个标签。比如,判断图片中的一个物体是鸟、人、狗、猫。
sigmoid的函数主要是在二分类中,而多分类的网络一般用softmax作为最后一层,输出为预测结果(每个的概率值),然后计算交叉熵损失,公式如4所示。
二分类和多分类的情况是限定了一张图片一个类别。
多标签分类
数据集有个c类别,每张图片可有多个标签,标签是来源于c个类别。比如:图片有多个物体,判断这些物体是鸟、人、狗、猫等。
二分类和多分类的情况是限定了一张图片一个类别。事实上,类别下面会有更细致的分类,图片里也会有多个物体,一张图片对应多个标签(一个标签表示一个物体),并且每张图片的标签数量是不固定的。当我们把标签看成相互独立,可以把多标签问题看成对每个标签的二分类。网络框架的最后一层是sigmoid激活函数,然后计算二分类的交叉熵损失,公式如5所示。