【机器学习300问】56、什么是自编码器?

一、什么是自编码器?

        自编码器(Autoencoder,AE)本质是一种特殊的神经网络架构。主要用于无监督学习和特征学习任务。它的目标是通过编码然后解码的过程,学会重构其输入数据,试图还原其原始输入的。

        当时我学到这里,我是一头雾水!为什么这样子做?AE他想把输出数据原原本本的还原成输入的数据,费那么多功夫干吗,不做这个编码和解码操作,输入数据不就等于输出数据了吗?但其实不然,这里面大有学问,下面我用一个例子给大家解释一下。

(1)一个例子让你深刻理解什么是自编码器!

        读书的时候都听过这么一句话吧?话是这么说的“要先把书读薄,然后再把书读厚”。没错!这就是自编码器的精髓!他就是模仿了这样一个过程。

  • 把书读薄:对应自编码器编码过程。编码器接收原始高维数据(比如一个长文档或一张高清图像),并将其压缩为一个低维的隐藏表示(隐藏层的输出)。这个隐藏层就像是对整本书内容的高度浓缩,就好比把一本厚厚的书提炼出了其中的要点和关键信息,形成了“薄书”。

  • 把书读厚:对应自编码器解码过程。解码器利用这个低维隐藏表示尝试重构原始数据,尽可能接近输入数据本身。尽管隐藏层的信息量相对较小,但解码器通过学习能够基于这些少量信息还原出较丰富的内容,就像基于“薄书”的要点重新扩展成了一本包含大部分原意内容的“厚书”。

二、自编码器长什么样?

(1)主要组成部分

  • 编码器(Encoder):这是一个前向传播网络,负责将输入数据映射到一个低维的潜在空间。编码器将高维的原始数据压缩成一个低维的编码或隐含向量,这个向量往往比原始数据维度小很多,但力求保留最重要的特征。这就像你准备将图画简化成黑白线条草图,需要确定最重要的轮廓和特征来描绘。

  • 隐藏层:这是编码过程的中间产物,它是对输入数据的高度抽象和压缩版本。在这一层,数据被强制简化为最重要的特征子集。

  • 解码器(Decoder):与编码器相反,解码器是一个从低维潜在空间到原始数据空间的逆映射网络。它的任务是根据编码后的低维向量尽可能准确地重构原始输入数据。这等同于你用那个草图尝试再现原画的细节,尽管颜色丢失了,但我们希望图案仍旧是清晰的。

(2)直观感受

① 简单的两层自编码器

② 自编码器的架构表示

编码器处理输入,解码器处理输出。 

③ RNN中的自编码器结构

④ CNN中的自编码器结构

 

三、自编码器的目标是什么?

        自编码器的目标是学习如何有效地对输入数据进行编码和解码,使得通过自编码器的输出(即解码后的数据)能够尽可能地接近原始输入数据。这个过程可以理解为,自编码器尝试学习,如何精准地复制或重建其输入。其根本目的是探索数据中的关键特征并保留这些信息。

        让我通过一个小例子来深入揭示自编码器的目标是什么?

        假设你有一张彩色风景照片,这张照片包含了丰富的颜色信息以及各种细节纹理。现在,你的目标是仅使用黑白两色重新手绘出一幅画面,不仅要保留风景的主要特征和结构,还要尽量做到即使没有原始的色彩信息,观众也能识别出那是一幅风景画。

        编码过程:你的大脑开始分析这张照片,试图理解其核心元素和重要的特征。就像编码器将高维的输入数据映射到一个低维的“隐藏”空间(潜在表示)。你会观察原始的彩色照片,并从中抽取出重要的信息,决定了哪些是你要在画作中体现出来的元素——比如,山的轮廓,树的分布,河流的蜿蜒等等。

        压缩过程:这个低维的潜在表示就像是一种抽象的“草图”,它仅包含有限的信息量,但理论上应该蕴含了重构原始图像所必需的核心特征。

        解码过程:你用黑白颜色开始创作,试图利用这些简单的线条和形状来重建原始的彩色风景。这相当于解码器的工作,它接收低维的隐藏表示,然后尝试重建数据,即在画布上用黑白色反映出原始的风景。虽然最终的画不可能包含彩色照片中的所有细节和色彩(因为材料和信息已经有所简化),但目标是尽量让重建的风景与原始照片保持核心特征和整体结构的一致。

       自编码器的目标就是在简化后的数据表示上进行学习,使得经过解码之后,能够最大化地复原原始数据的关键特性。在这个画风景的比喻中,尽管色彩和一些细节无法复原,但如果最终的黑白画仍能让人一眼看出原始风景的美丽,那么你就实现了自编码器的目标——用一个更简洁的形式捕捉和表达了原始数据的精髓。

四、自编码器的目标函数是什么

        自编码器的目标函数通常是指重构损失函数,其目的是让经过编码和解码后的输出尽可能接近原始输入。具体来说,自编码器试图学习一个编码函数f_{encoder}将输入数据x映射到一个潜在空间的低纬编码z=f_\Phi (x),然后通过解码函数f_{decoder}z再映射回原始数据的近似版本\hat x=f_\Theta (x)

(1)采用均方误差作为目标函数

        最简单的自编码器采用均方误差(Mean Squared Error, MSE)作为重建误差函数,目标是最小化这个误差,数学表达式为:

L_{MSE}= \frac{1}{N}\sum_{N}^{i=1}\|x_i - \hat{x_i}\|^2

        自编码器的训练目标是找到编码器和解码器的参数,使得目标函数最小化,从而重构出与输入尽可能接近的输出。这通常通过反向传播和梯度下降或其变种算法来实现。

 

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

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

相关文章

信息安全之网络安全防护

先来看看计算机网络通信面临的威胁: 截获——从网络上窃听他人的通信内容中断——有意中断他人在网络上的通信篡改——故意篡改网络上传送的报文伪造——伪造信息在网络上传送 截获信息的攻击称为被动攻击,而更改信息和拒绝用户使用资源的攻击称为主动…

AI智能分析网关智慧食安监管系统方案

3.15晚会刚过不久,淀粉肠的“屈辱”终于得以洗清,但某些品牌奶茶、梅菜扣肉、预制菜等等,生产过程仍是触目惊心。如何提升食品安全管理水平,保障食品从生产到消费环节的质量和安全?TSINGSEE青犀智利用智能分析网关V4Ea…

旺店通·旗舰奇门与金蝶云星空对接集成销售出库单查询连通销售出库新增(WDT 线下销售出库单对接(关联)-ok-不适用)

旺店通旗舰奇门与金蝶云星空对接集成销售出库单查询连通销售出库新增(WDT 线下销售出库单对接(关联)-ok-不适用) 源系统:旺店通旗舰奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理,之后围绕电商经营管理中的核心管理诉求&#xf…

Nginx(Docker 安装的nginx)配置域名SSL证书

1.首先确保Linux环境上已经安装了docker(可参考Linux安装Docker-CSDN博客) 2.通过docker 安装nginx(可参考Linux 环境安装Nginx—源码和Dokcer两种安装方式-CSDN博客) 3.安装SSL证书 3.1 在宿主机中创建证书目录并上传证书&…

使用Docker Compose一键部署前后端分离项目(图文保姆级教程)

一、安装Docker和docker Compose 1.Docker安装 //下载containerd.io包 yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm //安装依赖项 yum install -y yum-utils device-mapper-persistent-data l…

OpenGL的MVP矩阵理解

OpenGL的MVP矩阵理解 右手坐标系 右手坐标系与左手坐标系都是三维笛卡尔坐标系,他们唯一的不同在于z轴的方向,如下图,左边是左手坐标系,右边是右手坐标系 OpenGL中一般用的是右手坐标系 1.模型坐标系(Local Space&…

软件设计师:10-面向对象

一、面向对象 二、对象和消息 属性:也叫成员变量、状态 消息:对象名.方法名(传入你想要传递的参数) 三、方法重载 方法名相同(同名),但是参数个数或者参数类型不同叫方法重载 四、封装…

SpringBoot+Prometheus+Grafana实现应用监控和报警

一、背景 SpringBoot的应用监控方案比较多&#xff0c;SpringBootPrometheusGrafana是目前比较常用的方案之一。它们三者之间的关系大概如下图&#xff1a; 关系图 二、开发SpringBoot应用 首先&#xff0c;创建一个SpringBoot项目&#xff0c;pom文件如下&#xff1a; <…

分布式数据库技术的演进和发展方向

前言 这些年大家都在谈分布式数据库&#xff0c;各大企业也纷纷开始做数据库的分布式改造。那么&#xff0c;所谓的分布式数据库到底是什么&#xff1f;采用什么架构&#xff1f;优势在哪&#xff1f;为什么越来越多企业选择它&#xff1f;分布式数据库技术会向什么方向发展&a…

C/C++ 内存管理

1、C/C内存分布 首先我们来了解在一个程序中&#xff0c;代码主要存储在哪些地方&#xff1b; 1.栈&#xff1a;又叫堆栈&#xff0c;其中一般存储非静态局部变量、函数参数、返回值等&#xff0c;栈的增长是向下的。 2.内存映射段&#xff1a;是高效的 I/O 映射方式&#xff0…

华为2023年年度报告启示:技术工程师应该如何成长?

华为2023年年度报告显示了公司在面对复杂环境与挑战时的稳健发展&#xff0c;以及在技术创新、生态构建、社会责任等方面取得的显著成就。对于技术工程师而言&#xff0c;这份报告不仅是华为战略与成果的全景展示&#xff0c;更是蕴含了对未来技术趋势的洞见以及对工程师职业发…

前端性能优化:掌握解决方案

课程介绍 我们常说性能永远是第一需求&#xff0c;作为一个前端工程师&#xff0c;不管使用什么框架&#xff0c;不管从事什么类型的网站或应用开发&#xff0c;只要是项目被用户使用&#xff0c;性能优化就永远是你需要关注的问题。通常情况下&#xff0c;工程师们在深入了解…

云原生(七)、Kubernetes初学 + 裸机搭建k8s集群

Kubernetes简介 Kubernetes&#xff08;通常简称为K8s&#xff09;是一个开源的容器编排平台&#xff0c;最初由Google设计和开发&#xff0c;现在由Cloud Native Computing Foundation&#xff08;CNCF&#xff09;维护。它旨在简化容器化应用程序的部署、扩展和管理。 Kube…

Unity类银河恶魔城学习记录11-7 p109 Aplly item modifiers源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemData_Equipment.cs using System.Collections; using System.Collecti…

如何检查电脑的最近历史记录?这里提供详细步骤

如果你怀疑有人在使用你的计算机,并且你想查看他们在做什么,下面是如何查看是否有访问内容的痕迹。 如何检查我的计算机的最近历史记录 要检查计算机的最近历史记录,应该从web浏览器历史记录开始,然后移动到文件。但是,可以修改或删除浏览器历史记录,也可以隐藏Windows…

牛角工具箱源码 轻松打造个性化在线工具箱,附带系统搭建教程

这是一款在线工具箱程序&#xff0c;您可以通过安装扩展增强她的功能 通过插件模板的功能&#xff0c;您也可以把她当做网页导航来使用~ &#x1f38a; 环境要求 PHP > 7.2.5 MySQL > 5.7 fileinfo扩展 使用Redis缓存需安装Redis扩展 去除禁用函数proc_open、putenv、s…

C语言:文件操作

前言&#xff1a;为什么使用文件? 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运行程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进行持久…

day22.二叉树part08

day22.二叉树part08 235.二叉搜索树的最近公共祖先 原题链接 代码随想录链接 思路&#xff1a;因为本题是二叉搜索树&#xff0c;利用它的特性可以从上往下进行递归遍历树&#xff0c;这里需要理解一点就是如果遍历到的一个节点发现该节点的值正好位于节点p和节点q的值中间…

基于 SymPy 的反函数求解

原文&#xff1a;https://blog.iyatt.com/?p14396 例一 f(x) 2x 3 这个函数很简单&#xff0c;可以看出它的反函数是&#xff08;令 yf(x) &#xff09;&#xff1a;$$x\frac{y-3}{2}$$ 使用 SymPy 求解可以采用这样的思路&#xff1a; 已知函数 f(x)2x3, 令 y f(x), 即构…

FMEA与智能机器人:提升机器人可靠性与安全性的关键

随着科技的飞速发展&#xff0c;智能机器人已经深入到我们生活的方方面面&#xff0c;从工业生产到家庭服务&#xff0c;从深海探险到太空探索&#xff0c;处处都有它们的身影。然而&#xff0c;随着应用的日益广泛&#xff0c;机器人系统的复杂性和不确定性也在增加&#xff0…