机器学习:交互式代码在Tensorflow中的主成分分析网络

woshigzp 2018-06-06

从主成分分析池化层的自然扩展可以从层中创建一个完整的神经网络。我想知道这是否可能,以及它在MNIST数据上的表现是好是坏。

主成分分析(PCA)池化层

机器学习:交互式代码在Tensorflow中的主成分分析网络

对于任何不熟悉PCAP的人,请先阅读本文。其基本思想是,将诸如Max或 Mean pooling操作之类的层合在一起,执行维度减少,不仅可以节省计算能力,还可以作为一个正则化器。PCA是一种降维方法,它将相关变量转换成一组称为主成分的线性不相关变量的值集合。我们可以利用这个操作来做一个类似于max/mean pooling的工作。

神经网络由大部分池化层组成

机器学习:交互式代码在Tensorflow中的主成分分析网络

在执行分类时只有一个由汇聚层组成的网络是没有意义的。

数据集/网络架构

机器学习:交互式代码在Tensorflow中的主成分分析网络

蓝色矩形 →PCAP或最大池化层

绿色矩形 →卷积层增加通道大小+ 全局平均池操作

网络本身非常简单,只有四个池化层和一个卷积层来增加通道大小。但是,为了匹配维度,我们将每个图像下采样到16 * 16维度。因此,

[Batch Size,16,16,1] → [Batch Size,8,8,1] → [Batch Size,4,4,1] →

[Batch Size,2,2,1] → [Batch Size,1,1,1] → [Batch Size,1,1,10] →

[Batch Size,10]

我们可以像任何其他网络一样使用soft max层进行分类。

结果:主成分网络

机器学习:交互式代码在Tensorflow中的主成分分析网络

如上所述,训练的精度在18%上停滞不前,这是可怕的LOL。但是我怀疑网络从一开始就没有足够的学习能力,这是它能做的最好的。但是我想看看每个PCAP层是如何改变图像的。

机器学习:交互式代码在Tensorflow中的主成分分析网络

输入为7时生成的图像

机器学习:交互式代码在Tensorflow中的主成分分析网络

输入为2时生成的图像

机器学习:交互式代码在Tensorflow中的主成分分析网络

输入为1时生成的图像

左上图像 →原始输入

右上图像 →第一层

左下图像 →第二层

右下图像 →第四层后

我们可以观察到的一个明显的模式是变亮。例如,如果第二层中左上像素为白色,则该像素将在下一层中变为黑色。目前,我不能100%确定为什么会发生这种情况,但有了更多的研究,我希望知道原因。

结果:最大池化网络

机器学习:交互式代码在Tensorflow中的主成分分析网络

如上所述,当我们用最大池化操作替换所有PCAP层时,我们可以观察到训练图像的精度停滞在14%左右,证实了网络从一开始就没有足够的学习能力。

机器学习:交互式代码在Tensorflow中的主成分分析网络

输入为7时生成的图像

机器学习:交互式代码在Tensorflow中的主成分分析网络

输入为2时生成的图像

机器学习:交互式代码在Tensorflow中的主成分分析网络

输入为1时生成的图像

左上图像 →原始输入

右上图像 →第一层

左下图像 →第二层

右下图像 →第四层后

与PCAP相比,使用最大池化,我们可以清楚地看到具有最高强度的像素移动到下一层。这是预料之中的,因为这是最大池化的功能。

交互式代码

机器学习:交互式代码在Tensorflow中的主成分分析网络

相关推荐