2021—2022学年第一学期寒假学习记录18
2022.01.18,今天是服务外包竞赛:随便拿个奖队的项目进行的第十八天,今天根据项目要求继续学习matlab数字图像处理
实验结果及分析:
对于只有一个隐层的Autoencoder的权重可视化,以及准确率,如5.1到5.3所示。总的实验结果和参数详见表1.
5.1 AutoEncoder
这是最原始的Autoencoder,在训练时没有引入稀疏项和白噪声。这个Autonecoder只有一个隐层。图9所示是该隐层的权值。隐层节点一共有196个。训练的具体参数可查后面的表1.
准确度:0.915
W可视化:
图9 Autoencoder权值可视化
结果分析:
从图中可以依稀的看出数字0到9,这是由于这是Autoencoder的第一层。Autoencoder虽然是神经网络。但是可以看成是线性的模型,又由于这是第一层的权值(总共也就一层),所以对数据的抽象程度不高,所以从权值中基本上能够看出0到9的数字。这一点在稀疏Autoencoder中表现的更加明显。
5.2 Sparse AutoEncoder
Sparse Autoencoder在Autoencoder的基础上引入了稀疏项,起到压缩信息的作用。具体说就是将输入数据用尽量少的神经节点来表示。这样就会尽量的保留有用的信息而剔除无用的信息。如果从空间的角度来理解就是将原始数据投射到由隐层节点个数个向量张成的一个低维度空间里面,同时要求投射到低维空间后数据尽量沿隐层节点的基向量,也就是权值向量分布。这样带来的好处就是能提高下一步分类的准确度。
准确度:0.9276
W可视化:
图10 Sparse Autoencoder权值可视化
结果分析:
从图中可以看出,相对于图9(原始Autoencoder),图10 的数字信息更加明显,而且少了不少的“噪声”。原因正如上面所说,引入稀疏项之后,原始数据每次激活的神经元的数量较之前少了很多。因此,一些繁杂的信息,比如图9里面的“噪声”,就被去掉了,只留下了真正有用的信息。因此,图10显得比较清晰。而且从实验结果上可以看出以Sparse Autoencoder为基础的分类器的分类精度确实比基本的Autoencoder的分类精度高。
5.3 Denoise AutoEncoder
这里的Denoise Autoencoder 跟 Autoencoder的训练程序参数设置基本相同,唯一不同的是Denoise Autoencoder在训练的时候加入了噪声。加入噪声的目的是为了模拟可能出现的遮挡,模糊,等情况,从而使训练出来的分类器更加健壮。
准确度:0.9194
W可视化:
图11 Denoise Autoencoder权值可视化
结果分析
由于与Autoencoder相比,只有训练样本不一样,因为在训练时加入噪声。加噪声的规则是:每一个像素点以0.3的概率变为0。所以,图11和图9大体上是一致的,由于训练数据不一样,所以体现到权值上就有一些差别。而且从训练结果上看,加入噪声后使得分类器精度有一定的提升。
5.4 实验结果汇总及分析
在表1中,n表示Autoencoder 的层数,AccRate表示以Autoencoder为基础的softmax分类器的准确度,λ1表示Autoencoder的权重衰减项系数,β为Autoencoder的稀疏项系数,ρ为Autoencoder的稀疏性参数,λ2为softmax的权重衰减项系数。
Denoise Autoencoder的像素值变为0的概率都是0.3,表1中的Autoencoder的隐层节点数都是196个。
5.1~5.3用到的Autoencoder的具体训练参数如表1所示:
表1 Autoencoder详细训练参数及准确率
|
n |
AccRate |
λ1 |
β |
ρ |
λ2 |
AutoEncoder |
1 |
0.915 |
0.0002 |
0 |
0 |
0.0003 |
Denoise AutoEncoder |
1 |
0.9194 |
0.0002 |
0 |
0 |
0.0003 |
Sparse AutoEncoder |
1 |
0.9276 |
0.0002 |
2 |
0.015 |
0.0003 |
在训练一层的分类器的时候,通过控制变量法,改变Autoencoder的训练参数,训练出不同的Autoencoder。通过这种办法可以得到不同参数大小对Autoencoder的影响。在表2中,隐层节点都是300个,训练Autoencoder时,最大迭代次数也都是400次,其余参数如下表所示:
表2 Autoencoder参数对结果的影响
|
n |
AccRate |
λ1 |
β |
ρ |
λ2 |
AutoEncoder |
1 |
0.9154 |
0.0003 |
3 |
0.01 |
0.0003 |
AutoEncoder |
1 |
0.8031 |
0.0003 |
3 |
0.001 |
0.0003 |
AutoEncoder |
1 |
0.9285 |
0.0002 |
3 |
0.01 |
0.0003 |
AutoEncoder |
1 |
0.9218 |
0.0003 |
2 |
0.01 |
0.0003 |
实验结果分析:
- 稀疏性参数ρ和稀疏项系数β是用来控制隐层的节点的平均激活程度的,ρ越低平均激活程度越低,一般情况下ρ取0.05左右。在表2的第2行当ρ取到0.001的时候,可能由于值过小导致信息丢失太多导致不能够恢复出原信号,因此使得准确率大大的降低;
- 降低λ1后使得准确率有所上升。权重衰减项的目的是减小权值的幅度,这样在一定程度上能够防止出现过大的权重项,从而出现过拟合现象,因此适当的减小λ1可以使分类器的准确率提高,而在调节λ1的时候还要考虑权重的总的个数,也不能设的过小;
- 对比表1和表2,表2 的准确率相比表1来说要高一些,而表1和表2有一个区别就是:隐层节点数表1的都是196个,表二的都是300个。这个对分类准确率也有很大的影响。
综上,训练Autoencoder要考虑的参数有λ1,β,ρ还有隐层节点的数量。通过表1和表2得出的经验就是:稀疏性参数ρ和稀疏项系数β要适当的小一些但是不能过于的小,ρ就在0.01左右,而β就在2左右,权重衰减系数不能太大就设置在0.0002左右。隐层节点数量从结果上看300个要比196个要好一些,由于输入节点数量就是784个,所以,隐层节点数也不能设置的太小。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!