一文弄懂自编码器 -- Autoencoders

1. 引言

近年来,自编码器(Autoencoder)一词在许多人工智能相关的研究论文、期刊和学位论文中被频繁提及。自动编码器于1980年推出,是一种用于神经网络的无监督学习技术,可以从未被标注的训练集中学习。

本文重点介绍自编码器的概念、相关变体及其应用,闲话少说,我们直接开始吧!

2. 原理介绍

自编码器神经网络是一种无监督的机器学习算法,它的主要目的为将输入层的数据压缩成较短的格式,我们也可以称为潜在空间的特征表示,并通过解码将上述特征解码成与原始输入最为相近的形式。在这里插入图片描述
这样我们在使用原始输入图像的时候,就可以使用维度较小的压缩特征经过解码器后进行替代。这听着是不是很熟悉,我们有一个类似的机器学习算法,即PCA做同样的任务。那么为什么我们需要自动编码器呢?

3. 自动编码器的优势

自动编码器相对PCA算法的优势归纳如下:
在这里插入图片描述

  • 自编码器可以通过多层非线性激活函数来具备特征的非线性变换。
  • 自编码器可以使用卷积层来学习更适合视频、图像序列的数据。
  • 自编码器可以利用来自另一个模型的预训练层通过迁移学习来增强编码器/解码器

3. 自动编码器网络结构

一般来说,自动编码器主要由三部分过程,即encoder,code和decoder。
图示如下:
在这里插入图片描述
接着我们来介绍这三部分的作用:

  • 编码器Encoder:网络的这一部分作用为将输入压缩为潜在空间表示。编码器将输入图像编码为降维的压缩表示。
  • 压缩表示Code:网络的这一部分表示送到解码器的压缩输入
  • 解码器Decoder:该层将输入的压缩表示解码回原始尺寸。解码图像是原始图像的有损重建,并且它是从潜在空间进行重建的。

编码器和解码器之间的层,即压缩表示Code也被称为瓶颈Bottleneck。这是一种精心的设计,可以决定观测数据的哪些方面是主要信息,哪些方面是可以丢弃的。

5. 卷积自编码器

自编码器有多种类别,首先我们来介绍在图像领域最为常用的卷积自编码器,我们观察以下图像:
在这里插入图片描述
自编码器没有考虑这样一个场景,即一个信号可以被视为其他信号的总和。卷积自编码器使用卷积算子来克服这一问题。他们通过学习将输入编码为一组简单的信号,然后尝试从中重建输入,修改图像的几何形状或颜色信息。它们是卷积网络在无监督学习中的开创性工作之一。一旦经过训练,这些编码器可以用于任何其他图像作为输入,以便提取压缩后的特征。

6. 稀疏自编码器

稀疏自编码器是另一种基于神经网络的自编码器模型,图示如下:
在这里插入图片描述
稀疏自编码器的目标是通过学习到的稀疏表示来重构输入数据。与传统自编码器相比,稀疏自编码器引入了稀疏性惩罚项,以促使隐藏层神经元的激活更加稀疏。通过强制隐藏层神经元的稀疏激活,稀疏自编码器能够更好地捕捉输入数据的重要特征。

7. 收缩自编码器

收缩自编码器是一种无监督的深度学习技术,有助于神经网络对未标记的训练数据进行编码。这是通过构建一个损失项来实现的,该损失项惩罚我们的隐藏层激活相对于输入训练样本的大导数,本质上惩罚输入中的小变化导致编码空间中的大变化的情况。

8. 图像着色

自编码器的应用之一就是图像着色,示例如下:
在这里插入图片描述
自编码器用于将任何黑白图片转换为彩色图像。根据图片中的内容,可以判断出对应目标应该是什么颜色。

9. 维度压缩

重建的图像与我们的输入相同,但具有更小的尺寸。它有助于提供具有减小的像素值的相似图像。
在这里插入图片描述

10. 图像去噪

自动编码器看到的输入不是原始输入,而是随机添加噪声后的版本。因此训练去噪自编码器以从含噪声版本重建原始输入。
在这里插入图片描述

11. 图像去水印

自编码器还可用于去除图像中的水印,或在拍摄视频或电影时去除其他文字水印。
在这里插入图片描述

12. 总结

本文重点介绍了自编码器的概念,网络结构以及相关变体,并给出了其在工业界的相关应用。

您学废了嘛?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

指针进阶篇

指针的基本概念: 指针是一个变量,对应内存中唯一的一个地址指针在32位平台下的大小是4字节,在64位平台下是8字节指针是有类型的,指针类型决定该指针的步长,即走一步是多长指针运算:指针-指针表示的是两个指…

协方差和相关系数,还有信号与系统里的 互相关函数

协方差和相关系数参考:https://www.bilibili.com/video/BV1vK411N7Yp/ 协方差和相关系数的思想就是:同增同减,找相关的变量 协方差公式是如下图老师的板书 可以发现,当 X Y 同增同减趋势明显时,协方差的值就越大 所…

STM32_启动流程详解

目录标题 前言 启动流程概述复位中断函数详解SystemInit函数详解 __main函数详解 附录 stm32单片机的存储器映像中断向量表的映射 前言 最近在学习IAP远程OTA升级单片机固件程序,发现自己对单片机的启动流程还不是那么了解,就总结整理一下吧。 启动流程…

记录一次API报文替换点滴

1. 需求 各位盆友在日常开发中,有没有遇到上游接口突然不合作了,临时需要切换其他接口的情况?这不巧了,博主团队近期遇到了,又尴尬又忐忑。 尴尬的是临时通知不合作了,事前没有任何提醒; 忐忑…

位图、布隆过滤器、海量数据处理

文章目录 位图布隆过滤器海量数据处理 正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 位图 概念:所谓位图,就是用每一…

【Spring】08 BeanNameAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。本文将聚焦于其中的一个接口 BeanNameAware,介绍它的作…

深度学习中的预测图片中的矩形框、标签、置信度分别是什么意思。

问题描述:深度学习中的预测图片中的矩形框、标签、置信度分别是什么意思。 问题解答: 目标框(Bounding Box): 描述目标位置的矩形边界框。 类别标签: 表示模型认为目标属于哪个类别(例如&#…

opencv 十六 python下各种连通域处理方法(按面积阈值筛选连通域、按面积排序筛选连通域、连通域分割等方法)

本博文基于python-opencv实现了按照面积阈值筛选连通域、按照面积排序筛选topK连通域、 连通域细化(连通域骨架提取)、连通域分割(基于分水岭算法使连通域在细小处断开)、按照面积排序赛选topK轮廓等常见的连通域处理代码。并将代码封装为shapeUtils类,在自己的python代码…

[Verilog] 设计方法和设计流程

主页: 元存储博客 文章目录 1. 设计方法2. 设计流程 3 Vivado软件设计流程总结 1. 设计方法 Verilog 的设计多采用自上而下的设计方法(top-down)。设计流程是指从一个项目开始从项目需求分析,架构设计,功能验证&#…

openEuler商业化进展可观:累计装机量超610万套,市场持续扩容

12月15日至16日,以“崛起数字时代,引领数智未来”为主题的操作系统大会&openEuler Summit 2023在北京国家会议中心举办。大会旨在汇聚全球产业界创新力量,构筑坚实的基础软件根基,推动基础软件技术持续创新&#xff0c…

Redis设计与实现之整数集合

目录 一、内存映射数据结构 二、整数集合 1、整数集合的应用 2、数据结构和主要操作 3、intset运行实例 创建新intset 添加新元素到 intset 添加新元素到 intset(不需要升级) 添加新元素到 intset (需要升级) 4、升级 升级实例 5、关于升级 …

帆软FCRP模拟题

制作步骤可见此博主:https://blog.csdn.net/Ipkiss_Yongheng/article/details/125594366 完成文件下载:【免费】帆软FCRP官网模拟题代码资源-CSDN文库

大创项目推荐 垃圾邮件(短信)分类算法实现 机器学习 深度学习

文章目录 0 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 垃圾邮件(短信)分类算…

5个创建在线帮助文档的好方法!

在线帮助文档是企业为用户提供支持服务的重要工具,它能够帮助用户更好地了解和使用产品,提高用户体验。然而,创建一份优秀的在线帮助文档需要掌握一定的技巧和方法。接下来就介绍一下创建在线帮助文档的5个好方法,帮助企业更好地为…

day05-报表技术-图形报表

1、图表报表简介 ​ 在大数据时代,人们需要对大量的数据进行分析,帮助用户或公司领导更直观的察觉差异,做出判断,减少时间成本,而在web项目中除了表格显示数据外,还可以通过图表来表现数据,这种…

一维数组的定义

什么是数组? (1)数组是具有一定顺序关系的若干变量的集合,组成数组的各个变量统称为数组的元素 (2)数组中的各元素的数据类型要求相同,用数组名和下标确定,数组可以是一维的&#…

【java】数组遍历的方式:

文章目录 1、for循环遍历:2、forEach循环(增强for循环):3、while循环 或者 do while循环:4、利用Arrays工具类当中的toString():5、流式遍历:6、使用Arrays.asList()和forEach()方法进行遍历: 1、for循环遍…

java-IO流

File类 引入 【1】文件,目录: 文件: 内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。一篇文章、一段视频、一个可执…

博途WinCC专业版C/S架构入门指南

WinCC Professional V16 支持客户机/服务器架构,但目前只支持单个服务器或单对冗余服务器/多个客户机的模式,还不能支持像WinCC V7.5 SP1中的多个服务器/多个客户机的分布式架构。 博途工控人平时在哪里技术交流博途工控人社群 博途工控人平时在哪里技…

C语言 (指针)输入三个整数,由小到大输出

目录 1问题&#xff1a; 2代码&#xff1a; 3运行结果&#xff1a; 4总结&#xff1a; 1问题&#xff1a; 输入3个整数a,b,c,要求按由小到大的顺序将他们输出。用函数和指针实现》 2代码&#xff1a; #include<stdio.h> int main() {void exchange(int *q1,int *q2…