Autoencoder算法(自编码器)
Autoencoder算法是一种常见的基于神经网络的无监督学习降维算法。
自编码器的作用是利用神经网络将高维数据转换成低维数据,与主成分分析(PCA)类似,但克服了PCA的线性限制。
Autoencoder包含两个主要部分:encoder (编码器)和decoder (解码器)。encoder的作用是压缩原始高维输入数据,decoder是重建原始高维输入数据。
其基本结构图如下所示,输入样本长度与输出结果长度相同,训练网络时的标签就是输入样本本身,即整个网络“输入=输出”。
当训练结束后,得到的最终结果就是四个参数矩阵W1、W2、W3、W4,此时再将原始样本依次与W1、W2相乘就得到了低维度的表示(图中的Code),从而实现高维数据的压缩,然后这个Code就可以作为其他处理的输入。
注意:下图只是Autoencoder模型的一个示意图,实际上中间有多少层、每层有多少个节点、最后用那一层的输出结果、网络是否对称都没有固定模式,比较确定的是Input和Output长度相同,且以Input作为标签进行训练,即网络训练的目标是使Output尽量与Input一致。
autoencoder.pngAutoencoder算法用于异常检测
异常检测(Anomaly detection)通常分为有监督和无监督两种情形。但大部分情况下都是无监督问题,实际中很难获取足够多足够丰富的异常样本,更多的是正常样本。通常认为异常样本和正常样本服从不同的分布,如果有准确识别正常样本的能力,则异常样本就能被间接识别。
用所有正常样本训练Autoencoder模型,如果新样本是正常样本,则经过模型计算的Output与样本(Input)差异很小,如果是异常样本,则模型输出与样本之间的差异就会很大,以此作为判断是否是异常样本的标志。(注:对于一个训练好的Autoencoder模型,即使新的输入样本是异常样本,其输出依然会比较接近正常样本,因此输入和输出之间会出现比较大的差异。)
anomaly detection.png
网友评论