一文弄懂自编码器 -- Autoencoders

news2024/11/15 8:29:12

1. 引言

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

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

2. 原理介绍

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

3. 自动编码器的优势

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

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

3. 自动编码器网络结构

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

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

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

5. 卷积自编码器

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

6. 稀疏自编码器

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

7. 收缩自编码器

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

8. 图像着色

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

9. 维度压缩

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

10. 图像去噪

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

11. 图像去水印

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

12. 总结

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

您学废了嘛?

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谣言检测常用数据集汇总

Pheme-R 获取地址:https://figshare.com/articles/dataset/PHEME_rumour_scheme_dataset_journalism_use_case/2068650 PHEME社交媒体谣言数据集:这些谣言与9条不同的突发新闻有关。它是为分析社交媒体谣言而创建的,并包含由谣言推文发起的推特对话;这些…

设计模式——装饰模式(结构型)

引言 装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 假设你正在开发一个提供通知功能的库, 其他程序可使用它向用户发送关于重要事件的通知。 库的最初版本基于 通知器Notifier类,…

jmeter,http cookie管理器

Http Cookie管理器自动实现Cookie关联的原理: (默认:作用域在同级别的组件) 一:当Jmeter第1次请求服务器的时候,如果说服务器有通过响应头的Set-Cookie有返回Cookie,那么Http Cookie管理器就会自动的保存这些Cookie的值。 二:当Jmeter第2-N次请求服务器的…

uniapp框架——初始化vue3项目(搭建ai项目第一步)

文章目录 ⭐前言💖 小程序系列文章 ⭐uniapp创建项目💖 初始化项目💖 uni实例生命周期💖 组件生命周期💖 页面调用💖 页面通讯💖 路由 ⭐搭建首页⭐form表单校验页面⭐总结⭐结束 ⭐前言 大家好…

01_Web开发基础之HTML+CSS

Web开发基础之HTMLCSS 学习目标和内容 1、能够描述Web开发需要的技术点 2、能够描述HTML的作用 3、能够实现一个列表 4、能够实现创建一个表格 5、能够实现一个表单 6、能够描述CSS的作用 7、能够使用选择器获取到标签 8、能够使用CSS设置字体的颜色和大小 一、Web开发相关介绍…

Linux Shell——如何书写shell脚本的第一步!!!

Shell脚本 1. #!2. 如何执行一个shell脚本3. 如何在Shell文件中包含其他脚本文件 总结 这篇文章没有关于shell特别的语法知识,只是总结一下关于shell脚本文件的一些书写规定和如何执行一个shell脚本,如何在一个shell脚本中引入其他的shell脚本…

八、Seata的XA模式

目录 八、Seata的XA模式8.3 XA模式多数据源场景1 环境搭建2、使⽤XA模式解决事务 八、Seata的XA模式 8.3 XA模式多数据源场景 1 环境搭建 建库建表 代码的db.sql中 创建工程 添加依赖 <dependency><groupId>org.springframework.boot</groupId><ar…

C#动态生成带参数的小程序二维码

应用场景 在微信小程序管理后台&#xff0c;我们可以生成下载标准的小程序二维码&#xff0c;提供主程序入口功能。在实际应用开发中&#xff0c;小程序二维码是可以携带参数的&#xff0c;可以动态进行生成&#xff0c;如如下场景&#xff1a; 1、不同参数决定的显示界面不同…

LED 底层原理 和 GPIO引脚、寄存器操作

目录 LED 原理 LED 的驱动方式 普适的 GPIO 引脚操作方法 GPIO 寄存器操作 LED 原理 当我们学习 C 语言的时候&#xff0c;我们会写个 Hello 程序。 那当我们写 ARM 程序&#xff0c;也该有一个简单的程序引领我们入门&#xff0c;这个程序就是点亮 LED。 我们怎样去点亮…

HNU-计算机网络-实验4-网络层与链路层协议分析(PacketTracer)

计算机网络 课程基础实验四网络层与链路层协议分析&#xff08;PacketTracer&#xff09; 计科210X 甘晴void 202108010XXX 文章目录 计算机网络 课程基础实验四<br>网络层与链路层协议分析&#xff08;PacketTracer&#xff09;一、实验目的二、实验内容4.1 路由器交换…

【基于Python的信用卡客户历史数据分析与挖掘】

基于Python的信用卡客户历史数据分析与挖掘 前言技术栈数据获取与预处理描述性分析建立预测模型模型评估与结果展示Web应用搭建结语 前言 随着金融科技的迅猛发展&#xff0c;信用卡客户的历史数据分析变得越来越重要。本文将介绍如何使用Python、Sklearn和Flask对公开数据集进…

1.1 【应用开发】应用开发简介

写在前面 Screen图形子系统基于客户端/服务器模型&#xff0c;其中应用程序是请求图形服务的客户端&#xff08;Screen&#xff09;。它包括一个合成窗口系统作为这些服务之一&#xff0c;这意味着所有应用程序渲染都是在离屏缓冲区上执行的&#xff0c;然后可以在稍后用于更新…

SpringBoot+Redis 10分钟搞定海量重复提交问题

前言 在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求&#xff0c;我们来解释一下幂等的概念&#xff1a;任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义&#xff0c;最终的含义就是 对数据库的影响只能是一次性的&#xff0c;不能重复处理。如何…

BFC — 张天禹

文章目录 学习链接BFC1. 什么是BFCW3C 上对 BFC 的定义MDN 上对 BFC 的描述更加通俗的描述 2. 开启了BFC能解决什么问题3. 如何开启BFC 演示演示1子元素margin塌陷问题使用BFC解决问题完美解决塌陷问题 演示2被浮动元素覆盖问题使用BFC解决问题例1例2例3例4延申&#xff08;左右…

LeetCode 2415. 反转二叉树的奇数层:深度优先搜索(DFS)

【LetMeFly】2415.反转二叉树的奇数层&#xff1a;深度优先搜索(DFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/reverse-odd-levels-of-binary-tree/ 给你一棵 完美 二叉树的根节点 root &#xff0c;请你反转这棵树中每个 奇数 层的节点值。 例如&#xff0c…

leetcode面试经典二分系列刷题心得

闲来无事巩固算法基础&#xff0c;发现自己的二分几乎从来没系统刷过题&#xff0c;基础很是薄弱。 二分法不愧称为新人杀手&#xff0c;刷起来很是吃力&#xff0c;感觉明明学了几套二分模板&#xff0c;但是却不知道如何去运用&#xff0c;很多读者在初次尝试刷二分题时候&a…

“你基础不太行啊”

一、创建对象的五种方式 直接new关键字反序列化clone反射class.newInstance反射class.getConstructor 1.1、直接new关键字 1.2、Clone &#xff08;需要实现Cloneable接口&#xff09; 1.3、反射class.newInstance 1.4、反射class.getConstructor 1.5、反序列化 二、与equals…

bottom-up-attention-vqa-master 成功复现!!!

代码地址 1、create_dictionary.py 建立词典和使用预训练的glove向量 &#xff08;1&#xff09;create_dictionary() 遍历每个question文件取出所关注的question部分&#xff0c;qs 遍历qs&#xff0c;对每个问题的文本内容进行分词&#xff0c;并将分词结果添加到字典中&…

小红书商品详情API:电商助力

一、引言 随着互联网的普及和电商行业的快速发展&#xff0c;消费者对于商品信息的获取方式也在不断变化。小红书作为一款以内容分享为主的社交电商平台&#xff0c;吸引了大量用户。为了满足用户对商品信息的快速获取需求&#xff0c;小红书提供了商品详情API接口。本文将探讨…

离散型概率密度函数的分布列⇔分布函数

目录 一、super误区 1.分布函数的定义 二、分布列⇒分布函数 二、分布列⇐分布函数 一、super误区 我在读定义的时候陷入了一个误区&#xff0c;与大家分享一下。 1.分布函数的定义 由于是离散型的概率密度函数&#xff0c;我把他抽象到数轴上理解&#xff1a; 如下分布…