Autoencoder(李宏毅)机器学习 2023 Spring HW8 (Boss Baseline)

1. Autoencoder 简介

Autoencoder是一种用于学习数据高效压缩表示的人工神经网络。它由两个主要部分组成:

Encoder

  • 编码器将输入数据映射到一个更小的、低维空间中的压缩表示,这个空间通常称为latent space或bottleneck。

  • 这一过程可以看作是数据压缩,去除冗余信息,仅保留最重要的特征。

Decoder

  • 解码器从潜在表示中重构原始输入数据。

  • 理想情况下,解码器的输出应尽可能接近原始输入。

Schema of a autoencoder (source: https://en.wikipedia.org/wiki/Autoencoder)

2. Autoencoder的种类

2.1 Vanilla Autoencoder

Vanilla Autoencoder (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/auto_v8.pdf)

vanilla autoencoder是最简单形式的自动编码器,旨在通过瓶颈层尽可能准确地重构输入数据。它是更高级自动编码器变体的基础。

Vanilla autoencoder的训练目标是最小化输入 x 和输出 x^\prime之间的重构损失. 常见的损失函数包括:

均方误差(MSE):适用于连续数据。

\text{MSE Loss}= \frac{1}{n} \sum_{i=1}^{n} (x_i - x_i')^2 \\

二元交叉熵损失(Binary Cross-Entropy Loss): 适用于二元数据。

\text{BCE Loss} = - \frac{1}{n} \sum_{i=1}^{n} \left[ x_i \log(x_i') + (1 - x_i) \log(1 - x_i') \right] \\

2.2 Denoising Autoencoder

Denoising Autoencoder (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/auto_v8.pdf)

Denoising autoencoder (DAE) 是一种自动编码器变体,它专门训练从受损(有噪声)的输入中重构干净的输入数据。这使其成为学习有意义特征和执行数据去噪任务的强大工具。

原始输入数据通过添加噪声或引入干扰被人为破坏,生成带噪输入。常见的破坏类型包括:

  • 高斯噪声:在输入数据中添加随机噪声。

  • 椒盐噪声:随机翻转图像中的像素值。

  • 遮掩噪声:将输入的随机部分设为零。

  • 随机失活噪声:随机丢弃部分特征。

与基础型自动编码器类似,常用的损失函数包括均方误差(MSE)和二元交叉熵损失(Binary Cross-Entropy Loss)。

2.3 变分自动编码器 Variational Autoencoder (VAE)

Variationaler Autoencoder (source: https://www.geeksforgeeks.org/variational-autoencoders/)

变分自动编码器(VAE)是一种用于学习数据概率表示的自动编码器。与标准自动编码器将数据编码为固定的潜在表示不同,VAE 将数据编码为潜在空间中的一个分布(通常是高斯分布)。这使得 VAE 在生成任务中尤其有用。

VAE 的三个主要组成部分:

编码器(Encoder)

  • 编码器将输入数据 x 映射到潜在分布 q(z|x) .。

  • 对于每个潜在变量,编码器输出两个参数:

    • 均值(\mu

    • 标准差(\sigma

潜在空间(Latent Space)

  • 表示输入数据的压缩概率分布。

  • 潜在空间中的变量 z 通过以下公式采样:\\ z = \mu + \sigma \cdot \epsilon \\ 其中 \epsilon \sim \mathcal{N}(0, I)。这种操作称为重参数化技巧(reparameterization trick),它允许通过随机采样过程进行反向传播。

解码器(Decoder)

  • 解码器将潜在变量 z 映射回原始数据空间 p(x|z)

  • 它尝试从潜在表示中重构输入数据 x^\prime

2.3.1 损失函数

VAE 的损失函数由两部分组成:

重构损失 \mathcal{L}_{\text{recon}}

  • 它衡量重构数据与原始数据的匹配程度。

  • 我们通常使用二元交叉熵或均方误差。

KL 散度 \mathcal{L}_{\text{KL}}

  • 它使潜在空间分布 q(z|x) 接近先验分布 p(z) , 通常是标准高斯分布 \mathcal{N}(0, I) .

  • 定义为: \mathcal{L}_{\text{KL}} = D_{\text{KL}}(q(z|x) \| p(z)) \\ 该项正则化潜在空间,确保插值平滑且具有意义。

总损失公式为:

\mathcal{L} = \mathcal{L}_{\text{recon}} + \mathcal{L}_{\text{KL}}\\

2.3.2 证据下界 Evidence Lower Bound (ELBO)

在变分自动编码器(VAE)中,核心目标是最大化输入数据的边际似然 p(x) ,即尽可能解释数据。为此,一个重要的数学工具是证据下界(ELBO)。

2.3.2.1 什么是 ELBO?

ELBO 是通过变分推断近似数据边际似然

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

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

相关文章

LLaMA-Factory web微调大模型并导出大模型

LLaMA-Factory 开源大模型如LLaMA,Qwen,Baichuan等主要都是使用通用数据进行训练而来,其对于不同下游的使用场景和垂直领域的效果有待进一步提升,衍生出了微调训练相关的需求,包含预训练(pt)&am…

一个基于Spring Boot的智慧养老平台

以下是一个基于Spring Boot的智慧养老平台的案例代码。这个平台包括老人信息管理、健康监测、紧急呼叫、服务预约等功能。代码结构清晰,适合初学者学习和参考。 1. 项目结构 src/main/java/com/example/smartelderlycare├── controller│ ├── ElderlyCon…

cmake - build MS STL project

文章目录 cmake - build MS STL project概述笔记END cmake - build MS STL project 概述 MS在github上开源了VS IDE 用的STL实现。 想看看微软的测试用例中怎么用STL. 想先用CMake编译一个MS STL发布版出来。 笔记 CMake需要3.30以上, 拟采用 cmake-3.30.6-windows-x86_64.…

【算法与数据结构】—— 回文问题

回文问题 目录 1、简介2、经典的回文问题(1) 判断一个字符串是否为回文(2) 给定字符集求构建的最长回文长度(3) 求最长回文子串方法一:中心拓展方法二:Manacher 算法 (4) 求回文子串的数目方法一:中心拓展方法二:Manacher 算法 1、…

Linux第一个系统程序---进度条

进度条---命令行版本 回车换行 其实本质上回车和换行是不同概念,我们用一张图来简单的理解一下: 在计算机语言当中: 换行符:\n 回车符:\r \r\n:回车换行 这时候有人可能会有疑问:我在学习C…

西电-神经网络基础与应用-复习笔记

此为24年秋研究生课程复习笔记 导论 神经网络的研究方法分为 连接主义,生理学派,模拟神经计算。高度的并行、分布性,很强的鲁棒和容错性。便于实现人脑的感知功能(音频图像的识别和处理)。符号主义,心理学派,基于符号…

利用obs studio制作(人像+屏幕)录制影像

1.什么是obs? OBS(Open Broadcaster Software)是一款功能强大的开源软件,它使用户能够直接从电脑录制视频和直播内容到 Twitch,YouTube 和 Facebook Live 等平台。它在需要直播或录制屏幕活动的游戏玩家、YouTube 用户和专业人士…

maven多模块项目编译一直报Failure to find com.xxx.xxx:xxx-xxx-xxx:pom:1.0-SNAPSHOT in问题

工作中项目上因为多版本迭代,需要对不同迭代版本升级版本号,且因为项目工程本身是多模块结构,且依然多个其他模块工程。 在将工程中子模块的pom.xml中版本号使用变量引用父模块中定义的版本号时,一直报Failure to find com.xxx.x…

音视频入门基础:RTP专题(2)——使用FFmpeg命令生成RTP流

通过FFmpeg命令可以将一个媒体文件转推RTP: ffmpeg -re -stream_loop -1 -i input.mp4 -c:v copy -an -f rtp rtp://192.168.0.102:5400 但是通过ffplay尝试播放上述产生的RTP流时会报错:“Unable to receive RTP payload type 96 without an SDP file …

Nacos 3.0 Alpha 发布,在安全、泛用、云原生更进一步

自 2021 年发布以来,Nacos 2.0 在社区的支持下已走过近三年,期间取得了诸多成就。在高性能与易扩展性方面,Nacos 2.0 取得了显著进展,同时在易用性和安全性上也不断提升。想了解更多详细信息,欢迎阅读我们之前发布的回…

C语言gdb调试

目录 1.gdb介绍 2.设置断点 2.1.测试代码 2.2.设置函数断点 2.3.设置文件行号断点 2.4.设置条件断点 2.5.多线程调试 3.删除断点 3.1.删除指定断点 3.2.删除全部断点 4.查看变量信息 4.1.p命令 4.2.display命令 4.3.watch命令 5.coredump日志 6.总结 1.gdb介绍…

【xLua】xLua-master签名、加密Lua文件

GitHub - Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. 如果你想在项目工程上操作,又发现项目工程并没导入Tools,可以从xLua-master工程拷贝到项目工程Assets…

9.4 visualStudio 2022 配置 cuda 和 torch (c++)

一、配置torch 1.Libtorch下载 该内容看了【Libtorch 一】libtorchwin10环境配置_vsixtorch-CSDN博客的博客,作为笔记用。我自己搭建后可以正常运行。 下载地址为windows系统下各种LibTorch下载地址_libtorch 百度云-CSDN博客 下载解压后的目录为: 2.vs…

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8(You Only Look Once)和OpenCV实现车道线和车辆检测,目标是创建一个可以检测道路上的车道并识别车辆的系统,并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…

相加交互效应函数发布—适用于逻辑回归、cox回归、glmm模型、gee模型

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化,两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的:乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于(…

ECharts饼图下钻

背景 项目上需要对Echarts饼图进行功能定制,实现点击颜色块,下钻显示下一层级占比 说明 饼图实现点击下钻/面包屑返回的功能 实现 数据结构 [{name: a,value: 1,children: [...]},... ]点击下钻 // 为图表绑定点击事件(需要在destroy…

MySQL-事务

事务特性 在关系型数据库管理系统中,事务必须满足 4 个特性,即所谓的 ACID。 原子性(Atomicity) 事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 修改操作>修改B…

C# 元组

总目录 C# 语法总目录 C# 元组 C# 介绍元组1. 元组元素命名2. 元组的解构3. 元组的比较 总结参考链接 C# 介绍 C#主要应用于桌面应用程序开发、Web应用程序开发、移动应用程序开发、游戏开发、云和服务开发、数据库开发、科学计算、物联网(IoT)应用程序、…

用 Python 绘制可爱的招财猫

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​ ​​​​​​​​​ ​​​​ 招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常…

Java多线程

一、线程的简介: 1.普通方法调用和多线程: 2.程序、进程和线程: 在操作系统中运行的程序就是进程,一个进程可以有多个线程 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念; 进程则是执行程序的一次执…