在第三节我们已经介绍了
简单网络的自编码学习
知道了自编码学习其实就是学习到了输入数据的隐含特征,通过新的特征来表征原始数据,本节将介绍如何使用这些隐含特征进行模式分类;
还是以前面的三层自编码网络:
抽象一下如下:
其中学习到的权值系数W1与W1’是不一样的,我们把W1叫做编码权值,W1’叫做译码权值,原始数据在编码权值下的新数据Y就可以视为学习到了新维度下的数据,这在第三节也说过。那么如果我们用自编码学习并计算出到Y,再把Y用于分类,就可以构成神经网络的分类器了,网络深了就是深度网络的分类器了,当然后面接分类器可以是常用的分类器,比如SVM,贝叶斯,logistics,等等,也可以在接一个神经网络分类器。本实验为了比较我们在Y后面接SVM分类器看看,那么在上面一步完成后我们的分类器就变成下面这样子:
这里我们以手写体实验,所以输入固定了为784维。至于隐含层为多少是可以设计的k。
Ok理论分析到此,我们来看看上节介绍的工具箱如何实现吧
。
首先是三层自编码网络的实现,假设k=100吧,那么我们网络结构是不是[784,100,784],像第三节做的那样,只不过第三节没有权值的稀疏性,而在这里我们要加入稀疏性了与一些去噪功能了。
Ok找到在工具箱DeepLearnToolbox\tests\test_example_SAE.m文件
把要说明的拿出来:
function test_example_SAE
load mnist_uint8;
choose_num_train = 10000;
choose_num_test= 200;