【深度学习】GoogLeNet系列解读 —— Inception v3

版权声明:本文为博主原创文章,请尊重原创,转载请注明原文地址和作者信息! https://blog.csdn.net/zzc15806/article/details/83474661

目录

GoogLeNet系列解读

Inception v1

Inception v2

Inception v3

Inception v4


Inception v3

Inception v3整体上采用了Inception v2的网络结构,并在优化算法、正则化等方面做了改进,总结如下:

1. 优化算法使用RMSProp替代SGD。

2. 使用Label Smoothing Regularization(LSR)方法。LSR是一种通过在输出y中加噪声,实现对模型进行约束,降低模型过拟合的方法。进行模型训练时,通常真是标签q(k/x)采用one-hot的形式,而模型的输出一般为softmax归一后的概率分布p(k/x),

p(k/x)=\frac{exp(z_k)}{\sum_i^{i=K}exp(z_i))}

损失函数为,

H(q,p)=- \sum_{k=1}^{K}log({p(k)q(k)})

训练的目的是使p(k/x)的分布尽可能接近q(k/x),但是这种方法很容易产生过拟合。举个例子,假设分类器需要区分“我们都喜欢玩耍”和“我们都喜欢学习”两句话。假设“玩耍”出现80次,“学习”出现20次,因为标签采用one-hot的形式,随着次数的增加,模型会逐渐倾向于“玩耍”这句话的搭配,使这个搭配的预测概率逐渐趋向于100%,而“学习”这个搭配会逐渐被忽略。

为了解决这个问题,作者以权重加入某一概率分布到原始标签中构成新的标签,形式如下:

q'(y/x)=(1-\alpha )q(y/x)+\alpha u(y)

其中,\alpha \in [0,1]。论文中作者使用了均匀分布,

q'(y/x)=(1-\alpha )q(y/x)+\frac{\alpha}{K}

这种方式可以防止把模型预测值过分集中在给率较大的类别上,会对小概率类别增加更多的关注。

此时,损失函数变为,

H(q',p)=- \sum_{k=1}^{K}log({p(k)q'(k)})=( 1-\alpha )H(q,p)+\alpha H(u,p)

从损失函数可以看出,LSR相当于使用了两个loss。当u服从均匀分布时,H(u,p)为常数,能够衡量预测分布p和均匀分布的不相似程度,起到了正则化的作用。

3. 将第一个7x7卷积层分解为两个3x3卷积层。

4. 辅助分类器(auxiliary classifier)的全连接层也进行了batch-normalization操作。

Inception v3相比于Inception v2有了较大的提升,实验结果如下:

猜你喜欢

转载自blog.csdn.net/zzc15806/article/details/83474661