自编码器Auto-Encoder

目录

  • 一. 自编码器
  • 二. 香草自编码器(vanilla autoencoder)
  • 三. 多层自编码器
  • 四. 卷积自编码器
  • 五. 稀疏自编码器
  • 六. 降噪自编码器

一. 自编码器

Auto-Encoder,中文叫作自编码器,是一种无监督式学习模型。它基于反向传播算法与最优化方法(如梯度下降法),利用输入数据X本身作为监督,来指导神经网络尝试学习一个映射关系,从而得到一个重构输出XR

在时间序列异常检测场景下,异常对于正常来说是少数,所以我们认为,如果使用自编码器重构出来的输出XR跟原始输出的差异超出一定阈值的话,原始时间序列即存在了异常。

神经网络就是一种特殊的自编码器,区别在于自编码器的输出和输入是相同的,是一个自监督的过程,通过训练自编码器,得到每一层中的权重参数,自然地我们就得到了输入x的不同表示(每一层代表一种),这些就是特征。自动编码器就是一种尽可能复现原数据的神经网络。
在这里插入图片描述
“自编码”是一种数据压缩算法,其中压缩和解压缩过程是有损的。自编码训练过程,不是无监督学习而是自监督学习。

自编码器是一种利用反向传播算法取得使输入值和输出值误差最小的特征。自编码器由两个部分组成:

  1. 编码器Encoder:将输入值进行特征提取,数据降维;
  2. 解码器Decoder:将特征还原为原始数据。

编码器的作用是把高维输入X编码成低维的隐变量h,从而强迫神经网络学习最有信息量的特征;
解码器的作用是把隐藏层的隐变量h还原到初始维度,最好的状态就是解码器的输出能完美地或者近似恢复出原来的输入,即XR≈X。
在这里插入图片描述

从图1应该已经看出,相比于原数据,重建数据变得模糊了,自编码器是一个有损自监督的过程,但是自编码器的目的不是求得损失函数最小的重建数据,而是求使得误差最小的特征,自编码器的用途主要有:

  1. 特征提取
  2. 数据降维
  3. 数据去噪

自编码器和PCA(主成分分析)有点相似,但是效果超越了PCA。PCA是通过求解特征向量进行降维,是一种线性降维方式,而自编码器是一种非线性降维。

tips:
自编码器只能压缩那些与训练数据类似的数据。
训练好的自编码器只适用于一种编码的数据集。
如果另外一种数据集采用了不同的编码,则这个自编码器不能起到很好的压缩效果。

训练自编码器,可以使输入通过编码器和解码器后,保留尽可能多的信息,但也可以训练自编码器来使新表征具有多种不同的属性。
不同类型的自编码器旨在实现不同类型的属性。

AE算法的优缺点:

优点:泛化性强,无监督不需要数据标注;
缺点:针对异常识别场景,训练数据需要为正常数据。

二. 香草自编码器(vanilla autoencoder)

在这种自编码器的最简单结构中,只有三个网络层,即只有一个隐藏层的神经网络。它的输入和输出是相同的,可通过使用Adam优化器和均方误差损失函数,来学习如何重构输入。

在这里,如果隐含层维数(64)小于输入维度(784),则称这个编码器是有损的。通过这个约束,来迫使神经网络来学习数据的压缩表征。

三. 多层自编码器

如果一个隐含层还不够,显然可以将自动编码器的隐含层数目进一步提高。
在这里,实现中使用了3个隐含层,而不是只有一个。任意一个隐含层都可以作为特征表征,但是为了使网络对称,我们使用了最中间的网络层。

四. 卷积自编码器

除了全连接层,自编码器也能应用到卷积层,原理是一样的,但是要使用3D矢量(如图像)而不是展平后的一维矢量。对输入图像进行下采样,以提供较小维度的潜在特征,来迫使自编码器从压缩后的数据进行学习。

五. 稀疏自编码器

一般用来学习特征,以便用于像分类这样的任务。稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单地充当恒等函数。以这种方式训练,执行附带稀疏惩罚的复现任务可以得到能学习有用特征的模型。

还有一种用来约束自动编码器重构的方法,是对其损失函数施加约束。比如,可以对损失函数添加一个正则化约束,这样能使自编码器学习到数据的稀疏表征。

要注意,在隐含层中,还加入了L1正则化,作为优化阶段中损失函数的惩罚项。与香草自编码器相比,这样操作后的数据表征更为稀疏。

六. 降噪自编码器

这里不是通过对损失函数施加惩罚项,而是通过改变损失函数的重构误差项来学习一些有用信息。

向训练数据加入噪声,并使自编码器学会去除这种噪声,来获得没有被噪声污染过的真实输入。因此,这就迫使编码器学习提取最重要的特征并学习输入数据中更加鲁棒的表征,这也是它的泛化能力比一般编码器强的原因。

这种结构可以通过梯度下降算法来训练。

参考文章:
https://www.cnblogs.com/LXP-Never/p/10921257.html
https://blog.csdn.net/zbzcDZF/article/details/86647125
https://zhuanlan.zhihu.com/p/133207206

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/130542.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kali linux安装redis

官网:Install Redis from Source | Redis wget https://download.redis.io/redis-stable.tar.gztar -xzvf redis-stable.tar.gz cd redis-stable make显示如下即可进入下一步 sudo make installredis-server 可以看到已经可以使用了。 但是由于第一次使用导致了re…

实施运维01

一.运维实施工程师所具备的知识 1.运维工程师,实施工程师是啥? 运维工程师负责服务的稳定性,确保服务无间断的为客户提供服务. 实施工程师负责工程的实施工作,负责现场培训,一般都要出差,哪里有项目就去…

STM32单片机入门学习(六)-光敏传感器控制LED

光敏传感器模块和LED接线 LED负极接B12,正极接VCC 光敏传感模块一DO端接B13,GND接GND,VCC接VCC,AO不接。 如图: 主程序代码:main.c #include "stm32f10x.h" #include "Delay.h" //delay函数所在头文件 #include …

【数据结构】算法效率的度量方法

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 🎏事后统计方法 🎏事前分析估算方法 🎏函数的渐进式增长 结语 在上篇文章中我们提到了算法的设计要求中我们要尽量满足时间效率高…

Visual Studio Code 安裝

一、Visual Studio Code 安裝 VS Code 下载地址:https://code.visualstudio.com/ windows系统的快速下载地址:https://vscode.cdn.azure.cn/stable/441438abd1ac652551dbe4d408dfcec8a499b8bf/VSCodeUserSetup-x64-1.75.1.exe macOS系统的快速下载地址…

LabVIEW使用ZigBee无线传感器开发住宅负载电力应用

LabVIEW使用ZigBee无线传感器开发住宅负载电力应用 长期以来,住宅客户的需求一直是电力行业的一部分。由于公用事业需要建设基础设施以满足即时和长期需求,因此公用事业账单既包含能源费用,其中衡量客户随时间消耗的总电量,也包含…

虹科方案 | 汽车CAN/LIN总线数据采集解决方案

全文导读:现代汽车配备了复杂的电子系统,CAN和LIN总线已成为这些系统之间实现通信的标准协议,为了开发和优化汽车的电子功能,汽车制造商和工程师需要可靠的数据采集解决方案。基于PCAN和PLIN设备,虹科提供了一种高效、…

人工智能辅导程序 Mr. Ranedeer AI Tutor

人工智能技术正在不断发展,并在各个领域发挥着越来越重要的作用。在教育领域,人工智能也得到了广泛的应用,其中包括人工智能辅导程序。 Mr. Ranedeer AI Tutor 是一个开源的人工智能辅导程序,使用 OpenAI 的 GPT-4 语言模型来提供…

参与现场问题解决总结(Kafka、Hbase)

一. 背景 Kafka和Hbase在现场应用广泛,现场问题也较多,本季度通过对现场问题就行跟踪和总结,同时结合一些调研,尝试提高难点问题的解决效率,从而提高客户和现场满意度。非难点问题(历史遇到过问题&#xf…

聊聊分布式架构06——[NIO入门]简单的Netty NIO示例

目录 Java NIO和Netty NIO比较 Java NIO: Netty: Netty NIO中的主要模块 Transport(传输层) Buffer(缓冲区) Codec(编解码器) Handler(处理器) Even…

vue2项目中使用element ui组件库的table,制作表格,改表格的背景颜色为透明的

el-table背景颜色变成透明_el-table背景透明_讲礼貌的博客-CSDN博客 之前是白色的,现在变透明了,背景颜色是蓝色