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

news2024/11/25 14:38:37

一、什么是自编码器?

        自编码器(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.coloradmin.cn/o/1554545.html

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

相关文章

【探索Linux】—— 强大的命令行工具 P.31(守护进程)

阅读导航 引言一、守护进程简介1. 概念2. 特点 二、用C创建守护进程⭕代码✅主要步骤 温馨提示 引言 当谈到计算机系统中运行的特殊进程时,守护进程(daemon)无疑是一个备受关注的话题。作为在后台默默运行并提供各种服务的进程,守…

FreeRTOS从代码层面进行原理分析(4 移植)

FreeRTOS从代码层面进行原理分析(4 移植) 从前 3 篇博客中我们已经搞清楚了最开始对 FreeRTOS 有疑问的前 2 个问题。 1. FreeRTOS 是如何建立任务的呢? 2. FreeRTOS 是调度和切换任务的呢? 3. FreeRTOS 是如何保证实时性呢? 以下就是前三…

LeetCode:300最长递增子序列 C语言

300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子…

大话设计模式之迪米特法则

迪米特法则,也称为最少知识原则(Law of Demeter),是面向对象设计中的一个重要原则,其核心思想是降低耦合度、减少对象之间的依赖关系,从而使系统更加灵活、易于维护和扩展。 根据迪米特法则,一…

Multisim14.0破解安装教程

Multisim14.0中文破解版是一款相当优秀的专业化SPICE仿真标准环境,Multisim14.0中文版功能强悍,为用户提供了所见即所得的设计环境、互动式的仿真界面、动态显示元件、具有3D效果的仿真电路、虚拟仪表、分析功能与图形显示窗口等等。Multisim破解版操作简…

Linux-1.常见指令以及权限理解

目录 本节目标 使用 XShell 远程登录 Linux 关于 Linux 桌面 下载安装 XShell 查看 Linux 主机 ip 使用 XShell 登陆主机 XShell 下的复制粘贴 Linux下基本指令 登录Linux服务器 新建多用户 全屏 1.快速认识5~6个命令 2.详细谈论课件的所有指令 01. ls 指令 02…

Linux 环境安装Nginx—源码和Dokcer两种安装方式

一、源代码编译安装Nginx 1.下载最新nginx源码 以nginx-1.25.3.tar.gz为例: 可以使用命令(联网):curl -O http://nginx.org/download/nginx-1.25.3.tar.gz或在官网下载.tar.gz 2.解压缩 tar -zxvf nginx-1.25.3.tar.gz cd nginx-1.25.3/ 3.安装依赖…

动态菜单设计

查询当前用户下的菜单权限 思路:根据用户id 左关联表 查询出对应的菜单选项 查询SQL select distinct-- 菜单表 去除重复记录sys_menu.id,sys_menu.parentId, sys_menu.name from -- 权限表sys_menu-- 角色与权限表 菜单表id 角色菜单表的菜单id left j…

数据分析之Power BI

POWER QUERY 获取清洗 POWER PIVOT建模分析 如何加载power pivot 文件-选项-加载项-com加载项-转到 POWER VIEW 可视呈现 如何加载power view 文件-选项-自定义功能区-不在功能区中的命令-新建组-power view-添加-确定 POWER MAP可视地图

Redis 6.0.8版本下载

简介:Java领域优质创作者楠木 分享Java项目、简历模板、学习资料、面试题库 想必大家在下载redis之前已经逛了很多教程了,可能不尽如意,找不到自己的想要的版本。既然刷到了我的这条博客,说明你是幸运的! Redis6.0.8的…

k8s1.28.8版本配置prometheus监控告警

文章目录 官方架构图组件的具体介绍kube-prometheus包含的组件简介:文件存储路径: 结构分析官网自带的一些规则自己总结流程 1-创建规则磁盘使用率报警规则 详解上面rule流程Alertmanagerg查看 2-报警接收器2.1-邮件报警修改Alertmanager配置查看现有的s…

【深耕 Python】Data Science with Python 数据科学(2)jupyter-lab和numpy数组

关于数据科学环境的建立,可以参考我的博客:【深耕 Python】Data Science with Python 数据科学(1)环境搭建 Jupyter代码片段1:简单数组的定义和排序 import numpy as np np.array([1, 2, 3]) a np.array([9, 6, 2, …

flume配置文件后不能跟注释!!

先总结:Flume配置文件后面,不能跟注释,可以单起一行写注释 报错代码: [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:158)] Unable to deliver event. Exception follows. org.apache.flume.EventDel…

AI的“换脸“魔术,究竟是弊大于利还是利大于弊?

公众号:【可乐前端】,每天3分钟学习一个优秀的开源项目,分享web面试与实战知识,也有全栈交流学习摸鱼群,期待您的关注! 每天3分钟开源 hi,这里是每天3分钟开源,很高兴又跟大家见面了&#xff0…

Rsyslog 日志集中管理实验

1.使用 进行日志集中管理 C/S 架构&#xff1a;客户端将其日志上传到服务器端&#xff0c;通过对服务器端日志的查询&#xff0c;来实现对其他客户端的日志进行集中管理 2.两台机器&#xff1a; &#xff08;server&#xff09;host-5(192.168.1.2)<------------>(192…

【51单片机入门记录】Onewire单总线协议 温度传感器DS18B20概述

一、温度传感器DS18B20概述 &#xff08;1&#xff09;数字化温度传感器 美国DALLAS半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点&#xff0c;使用户可轻松地组建传感器网络&#xff0c;为测量系统的构建…

Redis与数据库的一致性

Redis与数据库的数据一致性 在使用Redis作为应用缓存来提高数据的读性能时&#xff0c;经常会遇到Redis与数据库的数据一致性问题。简单来说&#xff0c;就是同一份数据同时存在于Redis和数据库&#xff0c;如何在数据更新的时候&#xff0c;保证两边数据的一致性。首先&#…

博士科研最好用的科研绘图工具有哪些?

博士科研最好用的科研绘图工具有哪些&#xff1f; 1 chiplot 网址&#xff1a;chiplot ChiPlot是一个功能强大、易于使用的在线图表和数据可视化工具。它提供了多种图表类型和交互性&#xff0c;帮助用户轻松创建精美的图表&#xff0c;并从中获取有价值的信息。 &#xff0…

精准防灾新篇章:GIS与Python机器学习技术在地质灾害风险评价与信息化建库中的前沿应用

结合项目实践案例和科研论文成果进行讲解。入门篇&#xff0c;ArcGIS软件的快速入门与GIS数据源的获取与理解&#xff1b;方法篇&#xff0c;致灾因子提取方法、灾害危险性因子分析指标体系的建立方法和灾害危险性评价模型构建方法&#xff1b;拓展篇&#xff0c;GIS在灾害重建…

C语言刷题(20)

指针笔试题 笔试题1&#xff1a; int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; } //程序的结果是什么&#xff1f; *(a 1)等同于a[1]&#xff0c;第一个是2&#xff0c;a的类型是int […