Autoencoder神经⽹络完成异常检测(1)
韩版风衣为了完成笔者的异常检测⽬标,在前期使⽤了传统的机器学习算法后,对“玩具数据集”进⾏异常检测,此处罗列了计算sklearn算法。笔者准备测试oneclass network 来使⽤神经⽹络实践。周迅大婚
⾃编码器autoencoder是⼀个BP神经⽹络,⽹络输⼊层和输出层是⼀样,中间层数可以有多层,中间层的节点个数⽐输出⼊层少,最简单的情况就是中间只有⼀个隐藏层。由于中间层的节点数较少,这样中间层相当于是对数据进⾏了压缩和抽象,实现⽆监督的⽅式学习数据的抽象特征。
在现实中只有正样本数据,没有负样本数据,或者说只关注学习正样本的规律,那么利⽤正样本训练⼀个⾃编码器,编码器就相当于单分类的模型,对全量数据进⾏预测时,通过⽐较输⼊层和输出层的相似度就可以判断记录是否属于正样本。
下⾯就是案例探索过程:
1、MNIST数据集划为训练、验证、测试
rolemodel
假惺惺的英文
2、定义评价指标函数rounded_accuracy
cucumber是什么意思指标需要⾃⼰定义,作为神经⽹络的训练指标。ics.binary_accuracy计算预测与⼆进制标签匹配的频率,适⽤于⼆分类。
龙骑士片尾曲
3、创建堆叠式的⾃动编码器2 stacked Autoencoders:stacked_encoder、stacked_decoder,3 hidden layers and 1 output layer。smartcard reader
flying fish>omg 美语
4、绘制学习曲线
5、在测试集上测试
6、绘制重建的图形,对⽐原始图像和重建后图像
可以看到重建后的图像基本和原始图像差不多,但是损失函数loss值较⼤。我们可以让训练模型更久⼀点,或者编码器和解码器更深。但是,现在我们将解码器层的权重与编码器层的权重绑定起来,这样就可以将模型中的权重数量减少⼀半,加快训练速度并降低过拟合的风险。
7、定义类DenTranspo复制权重commodore
8、再次训练,在decoder发现明显快很多