高级人工智能之自编码器Auto-encoders

2023-10-14 01:50

本文主要是介绍高级人工智能之自编码器Auto-encoders,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Traditional (Vanilla/Classical) Autoencoder
  • Variational Autoencoder
    • Kullback–Leibler divergence
    • Reparameterization

这章讲述模型框架和概念的时间较多,好像并没有涉及过多的运算,重在一些概念的理解。

Traditional (Vanilla/Classical) Autoencoder

传统的自编码器常用来进行图像去噪的任务,需要了解其模型架构和流程。

自编码器由两部分组成:从Noisy Input到Z称为编码器,从Z到De-noised Output称为解码器。Input和Output有着相同的维度。
请添加图片描述
自编码器针对输入数据X进行重建,其目的是让X的重建误差最小,这样子能保证输入和输出尽可能地相似。
请添加图片描述
Auto-encoder的训练是一个无监督学习的过程,因为并不需要标记的数据训练。流程如下所示,它将纯净的图像+噪声整体两组数据同时放入Encoder的Input,同时也将纯净的图像放入Decoder的Output,将前向传播训练得出的图像与之前被放在输出口的纯净图像计算误差,从而可以进行反向传播训练。
请添加图片描述

Variational Autoencoder

Variational Autoencoder会从输入的图像中学习概率分布的参数,然后通过这些参数来产生新的图像。从输入的图像X中学到概率分布的变量 μ \mu μ σ \sigma σ,这两组参数分别从hidden-mean-neurons和hidden-variance-neurons中得到, Z Z Z μ \mu μ σ \sigma σ组成的多元高斯分布中随机取样得到,接着放入Decoder进行重建。
请添加图片描述
其训练过程同Auto-encoder一致,在去噪任务中,将噪声图像放入input,纯净图像放入output,通过反向传播进行训练。

其中的关键在于反向传播过程中Loss损失的定义,损失的定义中有两项,先对相关参数进行定义,

q θ ( e n ) ( z ∣ x i ) q_{\theta(en)}(z|x_i) qθ(en)(zxi) 表示接受输入数据 x i x_i xi,返回潜在变量 Z Z Z的概率, Z Z Z是从 μ \mu μ σ \sigma σ组成的多元高斯分布随机产生的, θ ( e n ) \theta(en) θ(en)代表encoder的weights和bias。

P ϕ ( d e ) ( x ^ i ∣ z ) P_{\phi(de)}(\hat x_i |z) Pϕ(de)(x^iz)表示接受潜在变量 Z Z Z产生的Sample,得到输出为 X ^ \hat{X} X^的概率, ϕ ( d e ) \phi(de) ϕ(de)代表decoder的weights和bias。

重建的损失 l i ( θ , ϕ ) = − E x i ∈ X [ E z ∈ Q [ l o g P ϕ ( d e ) ( x ^ i ∣ z ) ] ] l_i(\theta,\phi)=-E_{x_i \in X} \big[E_{z \in Q}[log P_{\phi (de)}(\hat x_i | z)]\big] li(θ,ϕ)=ExiX[EzQ[logPϕ(de)(x^iz)]]需要尽可能地小。由于 P P P为高斯分布,因此可以对上式重写为= 1 N ∑ x i ∈ X ( 1 2 σ x i ^ ∣ z 2 ( x i − μ x i ^ ∣ z ) 2 ) \frac{1}{N}\sum\limits_{x_i \in X}\Big( \frac{1}{2 \sigma^2_{\hat {x_i}|z}}(x_i - \mu_{\hat{x_i}|z})^2\Big) N1xiX(2σxi^z21(xiμxi^z)2).

请添加图片描述

Kullback–Leibler divergence

但是会存在的问题是,虽然整体 l i ( θ , ϕ ) l_i(\theta,\phi) li(θ,ϕ)较小, q θ ( e n ) ( z ∣ x i ) q_{\theta(en)}(z|x_i) qθ(en)(zxi) P ϕ ( d e ) ( x ^ i ∣ z ) P_{\phi(de)}(\hat x_i |z) Pϕ(de)(x^iz)的差异却很大,原因显然是因为它们来自不同的概率分布。因此这里引入了Kullback–Leibler divergence 来衡量两个分布的差异程度,进而 D K L [ q θ ( e n ) ( z ∣ x i ) ∣ ∣ ( N ( 0 , I ) ] D_{KL}\big[ q_{\theta(en)(z|x_i)} || ( N(0,I)\big] DKL[qθ(en)(zxi)∣∣(N(0,I)]衡量了产生图像的分布与标准高斯分布的差异。

最终该模型的Loss定义为 L ( a l l ) = 1 N ∑ x i ∈ X ( 1 2 σ x i ^ ∣ z 2 ( x i − μ x i ^ ∣ z ) 2 ) + D K L [ q θ ( e n ) ( z ∣ x i ) ∣ ∣ ( N ( 0 , I ) ] L^{(all)}=\frac{1}{N}\sum\limits_{x_i \in X}\Big( \frac{1}{2 \sigma^2_{\hat {x_i}|z}}(x_i - \mu_{\hat{x_i}|z})^2\Big)+D_{KL}\big[ q_{\theta(en)(z|x_i)} || ( N(0,I)\big] L(all)=N1xiX(2σxi^z21(xiμxi^z)2)+DKL[qθ(en)(zxi)∣∣(N(0,I)],其物理意义为,在局部的概率分布中,输出与输入之间的误差要尽可能小。
请添加图片描述

Reparameterization

在模型构建的过程中,潜在变量 Z Z Z μ \mu μ σ \sigma σ固定的情况下涉及了随机选择样本点sample的过程,这种随机性导致了不能通过具体的公式来进行反向传播训练,因此引入了reparameterization trick,将随机化进行定量表示. 其将原先平均值为 μ \mu μ,标准差为 σ \sigma σ的高斯分布,表示为 Z = ϵ ⋅ σ x + μ x Z= \epsilon\cdot\sigma_x +\mu_x Z=ϵσx+μx,其中 ϵ ∈ N ( 0 , 1 ) \epsilon \in N(0,1) ϵN(0,1),这样子任意的 Z Z Z都可以通过对 N ( 0 , 1 ) N(0,1) N(0,1)的缩放表示出来。
请添加图片描述
该方法让原先随机化的过程确定化,从而能够进行backpropagation.

请添加图片描述

这篇关于高级人工智能之自编码器Auto-encoders的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/207315

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

mysql中的group by高级用法详解

《mysql中的groupby高级用法详解》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,本文给大家介绍mysql中的groupby... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

全解析CSS Grid 的 auto-fill 和 auto-fit 内容自适应

《全解析CSSGrid的auto-fill和auto-fit内容自适应》:本文主要介绍了全解析CSSGrid的auto-fill和auto-fit内容自适应的相关资料,详细内容请阅读本文,希望能对你有所帮助... css  Grid 的 auto-fill 和 auto-fit/* 父元素 */.gri