1、训练堆叠自编码器进行图像分类的原理及流程
基于神经网络的训练堆叠自编码器进行图像分类的原理和流程如下:
-
堆叠自编码器(Stacked Autoencoder)是一种无监督学习算法,由多个自编码器(Autoencoder)堆叠在一起构成。每个自编码器由一个编码器和一个解码器组成,用于学习数据的有效表示。
-
在图像分类任务中,首先将输入图像通过编码器部分提取特征,然后通过解码器将提取的特征重构为原始图像。通过重复此过程多次,可以逐渐提高模型对数据的表示能力。
-
堆叠自编码器的训练过程包括以下步骤:
- 输入图像经过第一个编码器得到第一层的特征表示;
- 将第一层的特征表示输入到第二个编码器中,再经过解码器重构为原始图像,得到第二层的特征表示;
- 重复上述步骤直到所有的编码器和解码器都被训练完成。
-
训练堆叠自编码器的目标是最小化重构误差,即原始图像与重构图像之间的差异。通过反向传播算法来更新网络参数,使得重构误差最小化。
-
训练完成后,可以将堆叠自编码器的编码器部分作为特征提取器,将提取的特征输入到分类器中进行图像分类任务。
总的来说,基于神经网络的训练堆叠自编码器进行图像分类的流程是通过无监督学习训练多个自编码器,逐步从原始输入中提取特征,最终将提取的特征输入到分类器中进行图像分类任务。
2、 训练堆叠自编码器进行图像分类说明
说明1
具有多个隐含层的神经网络可用于处理复杂数据(例如图像)的分类问题。
每个层都可以学习不同抽象级别的特征。一种有效训练具有多个层的神经网络的方法是一次训练一个层。可以为每个所需的隐含层训练一种称为自编码器的特殊类型的网络。
说明2
训练具有两个隐含层的神经网络以对图像中的数字进行分类。首先,使用自编码器以无监督方式单独训练各隐含层。然后训练最终 softmax 层,并将这些层连接在一起形成堆叠网络,该网络最后以有监督方式进行训练。
3、数据集
说明
使用合成数据进行训练和测试。通过对使用不同字体创建的数字图像应用随机仿射变换来生成合成图像。
每个数字图像为 28×28 像素,共有 5000 个训练样本。可以加载训练数据,并查看其中一些图像。
图像的标签存储在一个 10×5000 矩阵中,其中每列都有一个元素为 1,指示该数字所属的类,该列中的所有其他元素为 0。请注意,如果第十个元素是 1,则数字图像是零。
1)加载训练数据到内存
代码
[xTrainImages,tTrain] = digitTrainCellArrayData;
2)展示训练图片
代码
clf
figure(1)
for i = 1:25
subplot(5,5,i);
imshow(xTrainImages{i});
end
试图效果
4、训练第一个自编码器
说明
在不使用标签的情况下基于训练数据训练稀疏自编码器
自编码器是一种神经网络,该网络会尝试在其输出端复制其输入。因此,其输入的大小将与其输出的大小相同。当隐藏层中的神经元数量小于输入的大小时,自编码器将学习输入的压缩表示。神经网络在训练前具有随机初始化的权重。因此,每次训练的结果都不同。
1)显式设置随机数生成器种子
代码
rng('default')
2)设置自编码器的隐含层的大小。
说明:对于要训练的自编码器,最好使隐含层的大小小于输入大小。
代码
hiddenSize1 = 100;
3)训练的自编码器的类型是稀疏自编码器
说明:该自编码器使用正则项来学习第一层中的稀疏表示。可以设置各种参数来控制这些正则项的影响:
L2WeightRegularization 控制 L2 正则项对网络权重(而不是偏置)的影响。这通常应该非常小。
SparsityRegularization </