深度神经网络——什么是自动编码器?

自动编码器

自动编码器(Autoencoders)是无监督学习领域中一种重要的神经网络架构,它们主要用于数据压缩和特征学习。

  1. 自动编码器的定义
    自动编码器是一种无监督机器学习算法,它通过反向传播进行训练,目标值被设置为与输入值相等。其核心目标是对输入数据进行压缩,转换成一个更小的表示形式,如果需要原始数据,可以从压缩后的数据中重建。

  2. 自动编码器的组成
    自动编码器由三个主要部分组成:

    • 编码器(Encoder):负责将输入数据压缩成低维表示形式,即潜在空间(latent space)表示。
    • 潜在空间(Code或Bottleneck):表示压缩后的数据,该数据随后被送入解码器。
    • 解码器(Decoder):负责将编码后的表示重建成原始数据维度,重建的数据是对原始输入的一个有损近似。
  3. 自动编码器的工作流程

    • 数据首先被输入到自动编码器中。
    • 编码器将数据编码并压缩成较小的潜在表示。
    • 然后,解码器学习如何从这个压缩的表示中重建原始数据。
  4. 训练目的
    训练自动编码器的目的不单是复制输入数据,而是让网络学习输入数据的本质特征。通过最小化损失函数,网络学习到如何从压缩表示中有效地重建数据。

  5. 应用场景

    • 图像去噪:自动编码器可以被训练来识别并去除图像中的噪声。
    • 数据降维:自动编码器用于降低数据的维度,同时尽可能保留重要信息。
    • 特征提取:自动编码器可以提取数据中的关键特征,这些特征可以用于其他机器学习任务。
    • 图像上色:将黑白图像转换为彩色图像。
    • 水印去除:从图像或视频中去除不需要的对象或水印。
  6. 为何使用自动编码器
    与主成分分析(PCA)等传统技术相比,自动编码器能够学习非线性转换,可以利用非线性激活函数和多层结构。此外,自动编码器可以使用卷积层来学习图像、视频和序列数据,这比PCA更有效。

  7. 自动编码器的类型

    • 卷积自动编码器(Convolutional Autoencoders):适用于图像数据,可以用于图像重建、上色等。
    • 稀疏自动编码器(Sparse Autoencoders):通过惩罚隐藏层的激活来引入信息瓶颈。
    • 深度自动编码器(Deep Autoencoders):由多层编码和解码网络组成,可以学习更复杂的数据表示。
    • 合同自动编码器(Contractive Autoencoders):通过惩罚隐藏层激活相对于输入的大幅度变化来帮助网络编码未标记的训练数据。

自动编码器架构

先来看看 自动编码器的架构。 :

自动编码器的架构可以概括为三个核心组件:编码器、瓶颈(或潜在空间),以及解码器:

  1. 编码器(Encoder)
    编码器是自动编码器的输入部分,通常由前馈、密集连接的网络层组成。它的任务是接收原始输入数据,并通过一系列的变换,将其转换成一个低维的内部表示。这个过程涉及到数据压缩,目的是提取输入数据中的关键特征,并将其编码到一个较小的潜在空间中。

  2. 瓶颈(Bottleneck)
    瓶颈层,也称为潜在表示或潜在变量,是自动编码器中编码过程的结果。这一层捕捉了输入数据的压缩表示,它包含了重建原始数据所必需的最重要信息。瓶颈层的设计至关重要,因为它需要决定哪些数据特征是信息丰富且需要保留的,哪些是可以丢弃的。瓶颈层通过逐元素的激活函数处理网络的权重和偏差,以实现这种压缩和特征选择。

  3. 解码器(Decoder)
    解码器是自动编码器的输出部分,它的任务是将瓶颈层的压缩表示重新转换成原始数据的高维表示。解码器通常由一系列解压缩的层组成,这些层逐步增加数据的维度,直到达到与原始输入数据相同的维度。解码器的目标是从潜在空间表示中重建数据,尽可能地恢复输入数据的原始特征和结构。

自动编码器的训练通常采用反向传播算法,这是一种监督学习技术,用于最小化输入数据和重建数据之间的差异,通常通过损失函数来衡量。损失函数的常见选择包括均方误差(MSE)或二元交叉熵(Binary Cross-Entropy, BCE),具体取决于数据的性质和范围。

自动编码器的属性

自动编码器有多种类型,但它们都具有将它们结合在一起的某些属性。自动编码器自动学习。 它们不需要标签,如果给定足够的数据,很容易让自动编码器在特定类型的输入数据上达到高性能。自动编码器是特定于数据的。 这意味着它们只能压缩与自动编码器已经训练过的数据高度相似的数据。 自动编码器也是有损的,这意味着模型的输出与输入数据相比将会降低。
在设计自动编码器时,机器学习工程师需要注意四个不同的模型超参数:代码大小、层数、每层节点和损失函数。
代码大小决定了有多少节点开始网络的中间部分,节点越少,数据压缩得越多。 在深度自动编码器中,虽然层数可以是工程师认为合适的任何数量,但层中的节点数应该随着编码器的继续而减少。 同时,解码器中的情况正好相反,这意味着随着解码器层接近最后一层,每层的节点数量应该增加。 最后,自动编码器的损失函数通常是二进制交叉熵或均方误差。 二元交叉熵适用于数据输入值在 0 – 1 范围内的情况。

自动编码器类型

如上所述,经典自动编码器架构存在变体。 让我们研究一下不同的自动编码器架构。

虽然自动编码器通常存在通过减少节点来压缩数据的瓶颈, 稀疏自动编码器s 是典型操作格式的替代方案。 在稀疏网络中,隐藏层保持与编码器和解码器层相同的大小。 相反,给定层内的激活会受到惩罚,对其进行设置,以便损失函数更好地捕获输入数据的统计特征。 换句话说,虽然稀疏自动编码器的隐藏层比传统自动编码器具有更多的单元,但在任何给定时间只有一定比例的隐藏层处于活动状态。 最有影响力的激活函数被保留,其他激活函数被忽略,这种约束有助于网络确定输入数据最显着的特征。

收缩性

收缩自动编码器 旨在对数据中的微小变化具有弹性,从而保持数据的一致表示。 这是通过对损失函数应用惩罚来实现的。 该正则化技术基于输入编码器激活的雅可比矩阵的 Frobenius 范数。 这种正则化技术的效果是,模型被迫构建一种编码,其中相似的输入将具有相似的编码。

卷积

卷积自动编码器 通过将数据分成多个子部分,然后将这些子部分转换为简单信号,将这些信号相加以创建新的数据表示,对输入数据进行编码。 与卷积神经网络类似,卷积自动编码器专门研究图像数据的学习,它使用一个在整个图像上逐节移动的滤波器。 编码层生成的编码可用于重建图像、反映图像或修改图像的几何形状。 一旦网络学习了滤波器,它们就可以用于任何足够相似的输入来提取图像的特征。

去噪

去噪自动编码器 将噪声引入编码中,导致编码成为原始输入数据的损坏版本。 这个损坏的数据版本用于训练模型,但损失函数将输出值与原始输入而不是损坏的输入进行比较。 目标是网络将能够重现图像的原始、未损坏版本。 通过将损坏的数据与原始数据进行比较,网络可以了解数据的哪些特征最重要以及哪些特征不重要/损坏。 换句话说,为了让模型对损坏的图像进行去噪,它必须提取图像数据的重要特征。

变分

变分自动编码器 通过假设数据的潜在变量如何分布来进行操作。 变分自动编码器为训练图像/潜在属性的不同特征生成概率分布。 训练时,编码器为输入图像的不同特征创建潜在分布。

由于该模型将特征或图像学习为高斯分布而不是离散值,因此它能够用于生成新图像。 对高斯分布进行采样以创建一个向量,该向量被馈送到解码网络,解码网络根据该样本向量渲染图像。 本质上,该模型学习训练图像的共同特征,并为其分配一些发生的概率。 然后,概率分布可用于对图像进行逆向工程,生成与原始训练图像相似的新图像。

训练网络时,分析编码数据,识别模型输出两个向量,得出图像的平均值和标准差。 根据这些值创建分布。 这是针对不同的潜在状态完成的。 然后,解码器从相应的分布中获取随机样本,并使用它们来重建网络的初始输入。

自动编码器应用

自动编码器可用于广泛 多种应用,但它们通常用于降维、数据去噪、特征提取、图像生成、序列到序列预测和推荐系统等任务。

数据去噪是使用自动编码器从图像中去除颗粒/噪声。 同样,自动编码器可用于修复其他类型的图像损坏,例如模糊图像或图像缺失部分。 降维可以帮助高容量网络学习图像的有用特征,这意味着自动编码器可用于增强其他类型神经网络的训练。 使用自动编码器进行特征提取也是如此,因为自动编码器可用于识别其他训练数据集的特征来训练其他模型。

在图像生成方面,自动编码器可用于生成假人类图像或动画角色,这可用于设计人脸识别系统或自动化动画的某些方面。

序列到序列预测模型可用于确定数据的时间结构,这意味着自动编码器可用于生成序列中的下一个偶数。 因此,可以使用自动编码器来生成视频。 最后,深度自动编码器可用于通过拾取与用户兴趣相关的模式来创建推荐系统,编码器分析用户参与数据,解码器创建适合已建立模式的推荐。

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

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

相关文章

二叉树尾部分

1.二叉树的销毁 2.二叉树的层序遍历 3.判断二叉树是否为完全二叉树 4.二叉树的性质 1.二叉树的销毁 以后序的方式遍历销毁左右子数,因为前序和中序销毁的话根会被销毁而找不到左右子树的位置,后序的根访问在最后,可以找到左右的子树位置。…

基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善

前言 紧接上篇->基于C#开发web网页管理系统模板流程-登录界面和主界面_c#的网页编程-CSDN博客 已经完成了登录界面和主界面,本篇将完善主界面的管理员录入和编辑功能,事实上管理员录入和编辑的设计套路适用于所有静态表的录入和编辑 首先还是介绍一下…

声学特征在膝关节健康诊断中的应用分析

关键词:膝关节声发射、膝关节生物标志物、因果关系、机器学习 声学膝关节健康评估长期以来一直被看作是一种替代临床可用医学成像工具的替代方法,如声发射技术是通过检测膝关节在运动过程中产生的微小裂纹或损伤引起的声波信号,从而评估关节的…

学习Uni-app开发小程序Day17

今天开始,就把uni-app前期使用的全部学完了,现在就把以前学习的,做成一案例,中间有未讲的,在进行补充,这里是根据老师视频进行项目案例编写的。 先弄出效果图,然后在根据效果图进行代码的编辑 …

linux 中 fd 申请和释放管理(两级 bitmap)

linux 中 fd 的几点理解_linux fd-CSDN博客 通过上边的文章,我们可以知道,在 linux 中,fd 有以下几点需要了解: (1)fd 表示进程打开的文件,是进程级别的资源,不是系统级别的资源 …

【鱼眼镜头11】Kannala-Brandt模型和Scaramuzza多项式模型区别,哪个更好?

Kannala-Brandt模型和Scaramuzza多项式模型在描述鱼眼相机畸变时都有其特定的数学表示和应用,但它们之间存在一些区别。以下是对两者区别的分点表示和归纳: 数学表示: Kannala-Brandt模型:它假设图像光心到投影点的距离和角度的多…

字符串和字符串函数(1)

前言: 字符串在C语言中比较特别,没有单另的字符串类型,想要初始化字符串必须用字符变量的数组初始化,但是在C语言标准库函数中提供了大量能对字符串进行修改的函数,比如说可以实现字符串的的拷贝,字符串的追…

直播预告:TinyVue 组件库实战解析,提升组件库构建技能!

在复杂的编码世界里,大家总希望能够寻找更高效、更简洁的解决方案来优化工作流程,提升开发效率。在5月28日晚7点 OpenTiny B站直播间,OpenTiny 非常荣幸地为大家带来一场关于 TinyVue 组件库实战分享的直播。届时,TinyVue 组件库成…

【java程序设计期末复习】chapter4 类和对象

类和对象 编程语言的几个发展阶段 (1)面向机器语言 计算机处理信息的早期语言是所谓的机器语言,使用机器语言进行程序设计需要面向机器来编写代码,即需要针对不同的机器编写诸如0101 1100这样的指令序列。 (2&#x…

优优嗨聚集团:快速摆脱个人债务束缚的秘诀

在快节奏的现代生活中,个人债务问题时常困扰着许多人。面对日益增长的债务压力,如何快速有效地处理成为众多人的迫切需求。本文将为你提供一套实用的债务清零攻略,帮助你摆脱债务的束缚,重获财务自由。 一、认清债务现状&#xff…

[NISACTF 2022]easyssrf、[NISACTF 2022]level-up

[NISACTF 2022]easyssrf 使用dirsearch扫描后没发现什么路径 尝试访问127.0.0.1,成功了 访问127.0.0.1/flag.php提示有文件/fl4g 使用file://协议读取文件/fl4g,提示除此页面外还有一个ha1x1ux1u.php页面。 file:///fl4g 直接访问,发现GET…

WDW-20B微机控制人造板试验机

一.设备外观照片: 项目简介: 微机控制电子式万能试验机是专门针对高等院校、各种金属、非金属科研厂家及国家级质检单位而设计的高端微机控制电子式万能试验机、计算机系统通过全数字控制器,经调速系统控制伺服电机转动&#xff…

JavaWeb_HTTP协议

HTTP: 概念: HTTP(Hyper Text Transfer Protocal),超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点: 1.基于TCP协议:面向连接,安全 2.基于请求-响应模型…

【Linux】升级GCC(版本9.3),补充:binutils

GCC:GNU Compiler Collection 。编译器,几乎Linux中所有程序(包括内核)都是gcc编译的,包括libc。 gcc不仅仅是编译器,gcc也有很多库,依赖libc。gcc和libc互相依赖。 GCC官网:GCC, …

如何注册Claude3?解决Claude3无海外手机号接收验证码的问题以及如何订阅Claude Pro

原文链接:如何注册 Claude3?解决 Claude3 无海外手机号接收验证码的问题以及如何订阅 Claude Pro 前言 Claude3已经出来有一段时间了,大家有没有体验过呢?不过从目前来看,Anthropic公司总共推出了3个模型&#xff1…

Java项目:基于SSM框架实现的学生就业管理系统分前后台(ssm+B/S架构+源码+数据库+毕业论文+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的学生就业管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能…

【Chapter5】死锁与饥饿,计算机操作系统教程,第四版,左万利,王英

文章目录 1.1 什么是死锁1.2 死锁的类型1.2.1 竞争资源引起的死锁1.2.2 进程间通信引起的死锁1.2.3 其他原因引起的死锁 1.3 死锁产生必要条件1.4 死锁的处理策略1.5 死锁的预防1.5.1 破坏资源独占条件1.5.2 破坏不可剥夺条件1.5.3 破坏保持申请条件1.5.4 破坏循环等待条件 1.6…

ip反解域名-python脚本

import sys import socket from requests.packages.urllib3.contrib import pyopenssl def domain_dns(ip, port, timeout0.09): try: # 创建一个 socket sock socket.create_connection((ip, port), timeouttimeout) # 设置超时 sock.settimeout(timeout) # 加载 SSL 证书 x5…

第十七届全国大学生信息安全竞赛创新实践能力赛初赛部分复现

Misc 神秘文件 1.根据提示信息,均需要从ppt中提取信息 2.在ppt的属性中发现一串密文和key,解密之后得到第一部分,根据提示Bifid chipher,为双歧密码解密,使用Bifid Cipher Decode解码 3.在第五张幻灯片,…

neo4j docker安装使用,py2neo python包使用

参考:https://neo4j.com/docs/operations-manual/current/docker/introduction/ 运行: docker run --publish7474:7474 --publish7687:7687 neo4j查看: http://192***ip:7474 username/password 都是 neo4j/neo4j 简单案例 创建例子&am…