可视化展示神经网络是如何将分类正确率提升的

主旨

这篇从可视化的角度形象说明神经网络到底如何提升分类正确率,不会涉及数学推导和模型原理,目的在于帮助读者建立神经网络对数据处理的形象化概念。

备注

这篇最初发表于我的知乎专栏:程序员深度学习笔记,结合知乎发表后到现在这两天的思考,在原文基础上有删改,并加入了更多的插图。

这篇文章的数据和程序涉及到我目前进行的工作,因此无法提供参考代码和数据。

问题背景

N个64维向量,其标签分为两类,记为类别1和类别2,类别1以红色表示,类别2以蓝色表示。

使用PCA技术,将64维向量的3个最强主成分抽取出来,绘图得到如下结果
《可视化展示神经网络是如何将分类正确率提升的》

从中可以看出两点特征,

  1. 除了一个维度的坐标范围是[4,8.5],其余两个维度坐标范围都在1e-15及以下,说明原始数据的主成分集中在一维,分类难度大
  2. 红色和蓝色混杂分布,不易区分

其中第一点可以进一步图形化说明,将PCA降维之后强度最强的一个维度的分布画出来,如下所示。这里为了避免红色和蓝色点重叠,将红色点的纵坐标向上移动一个微小距离,将蓝色点的纵坐标向下移动一个微小距离。
《可视化展示神经网络是如何将分类正确率提升的》
从上面的一维分布图来看,红色和蓝色存在大量的交叉区域,仅仅依靠PCA找到的最强的一个维度,不可能得到性能较好的分类器。

神经网络是怎么解决这个问题的

由于涉及到实际工作中的数据、程序,这里略过神经网络设计和训练方法细节,只考虑神经网络的全连接输出层。全连接层的输入是形状(N,64)的tensor,输出是(N,2)的tensor。这里(N,64)的tensor可以视为神经网络将64维数据经过复杂运算之后投射到另一个64维空间的效果,将其画出来图形如下
《可视化展示神经网络是如何将分类正确率提升的》
对比原始数据的分布,上图可以看出两点

  1. 3个维度的取值范围接近,说明神经网络将此前集中在1维的数据成功的扩展到3维空间,数据点之间的距离加大,分类面可以更好的将这两类数据分开
  2. 红色数据的集中度明显提升,这样分类的难度就会大幅下降,分类精度提升

虽然以上图这个角度,肉眼看红蓝两色在一些区域还有重叠,但考虑到这是3D图,通过旋转等手段可以看到这些点只是在视觉的投影方向重叠,其本身在3维空间并没有重叠。同时,3个维度的取值范围都很大,神经网络已经可以在这些点之间生成灵活的分类面,实现高精度(Precision和Recall都达到99%)的分类器

总结

本文通过原始数据和经过训练的神经网络运算得到的输出层数据可视化对比,说明了神经网络是如何将原始数据投射到另一个空间,实现高准确率分类。
同时,这种可视化也是一种理解和检验神经网络性能的方法,通过将输入和输出数据可视化可以看出神经网络的性能以及可能的问题。

    原文作者:wangyao_bupt
    原文地址: https://blog.csdn.net/wangyao_bupt/article/details/71023469
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞