我们并不惊讶测试集获得的第一个模型性能不佳。正如在介绍中所说,图像分类是计算机要解决的一个困难问题。我们的数据集太小,没有足够的变化,以致我们的算法不能在更广泛的应用程序中学习能够泛化的特征。 为了至少解决部分的问题,让我们应用一些图像增强技术。这涉及对训练图像应用随机变换,从而增强它们的变化。人类将能够识别皮卡丘,无论其方向如何(颠倒,倾斜到一侧等),我们希望我们的模型能达到相同的效果。因此,我对我们的训练数据集采用以下范围的变换(图22):(1)随机旋转高达40度;(2)随机水平移位高达20%的图像宽度;(3)随机垂直移位高达20%图像高度;(3)随机放大高达20%;(4)在垂直轴上取倒影;(5)在0.2弧度范围内的剪切变换。
图22:通过在图像增强流程获得的图像,某只妙蛙种子精灵。 我将这个流程应用到训练集中的所有精灵,为每个精灵生成10个新图像。这样,我们的训练集扩展到27,270张图像。但是,这就足够了吗?至少训练30 epoch后(这次时间花的稍长,总共超过10分钟),我获得了以下结果(图23)。
图23.第二个模型的训练集的表现。 等一下,我们模型的性能下降了吗?这个图像增强的东西不能改善我的模型?这有可能,但是,让我们不要根据我们训练集的表现就做假设。整体性能的下降是由于我们训练集变化的增加,如果能在验证集上取得更好的表现(图24),这或许是个好消息。
图24.第二个模型的验证集表现。 在这里,有了!图像增强实际上有助于提高模型表现。其中,准确率提高了14个百分点,达39%。我们可以继续尝试获得一个更好的模型,处理模型超参数或尝试网络架构,但我们就到此为止吧。 仔细观察分类 我想提醒你注意一些事情。预测精度较高的属性有:火(61%)、水和毒(每种 54%)、草(47%)、电(46%)。具有更高召回率的属性(参见框1)是:恶(92%)、火(74%)、水(55%)、一般(49%)、草(42%)。 毫不奇怪,三种主要属性(火、水和草)在这两个指标中位列前五。这些属性对颜色具有非常强的亲和力,这是从图像中容易获得的信息。他们的类型也丰富,有很多训练样例供模型学习。 现在让我们看看一些被正确和错误归类的精灵宝可梦(分别图25和26)。
图25:被正确归类的精灵宝可梦。顶行:杰尼龟(左)、皮卡丘(中)、Weepingbell(右)。底行:火焰鸟(左)、班基拉斯(中)、脱壳忍者(右)。
图26.被错误分类的精灵宝可梦。顶行:豪李(左)、菊石神(中)、洛奇亚(右)。底行:沙奈朵(左)、饭匙蛇(中)、水伊布(右)。 即使在这个小样本中,我们也可以看到,颜色在整体分类中起着重要的作用。例如,没被正确分类的精灵宝可梦中,Machoke有很大可能被归为毒药类,可能是由于其外表是紫色的。同样,Seviper被归类为黑暗类,可能是由于他的外表是深色。 为什么是这样?好吧,我们可能永远不知道!使用深层神经网络进行分类的缺点之一是该模型是一种「黑匣子」。有很多研究正在试图弄清楚网络在图像中搜索什么。(我建议你在互联网上搜索「Deep Dream」,会看到一些非常漂亮的图片。) 现在,我们可以看到针对一些精灵宝可梦,第一层被激活的情况,并试图弄清楚每个内核正在寻找的东西是什么。但是随着我们越来越深入了解网络,这个挑战变得越来越困难(图27)。
图27:三个第一代初始状态的第一层激活(部分)。 结论 (责任编辑:本港台直播) |