当前位置: 首页 > news >正文

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 是通过变分推断近似数据边际似然

相关文章:

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

1. Autoencoder 简介 Autoencoder是一种用于学习数据高效压缩表示的人工神经网络。它由两个主要部分组成: Encoder 编码器将输入数据映射到一个更小的、低维空间中的压缩表示,这个空间通常称为latent space或bottleneck。 这一过程可以看作是数据压缩,去除冗余信息,仅保留…...

深入探索 ScottPlot.WPF:在 Windows 桌面应用中绘制精美图表的利器

一、ScottPlot.WPF 简介 ScottPlot.WPF 是基于 ScottPlot 绘图库专门为 Windows Presentation Foundation (WPF) 框架量身定制的强大绘图组件。它无缝集成到 WPF 应用程序中,为开发者提供了一种简洁、高效的方式来可视化数据,无论是科学研究中的实验数据展示、金融领域的行情…...

React中的useMemo 和 useEffect 哪个先执行?

在 React 组件的渲染过程中,useMemo 和 useEffect 的执行顺序是不同的。具体来说: useMemo 先执行:useMemo 是在 渲染阶段 执行的,它的作用是缓存计算结果,确保在渲染过程中可以直接使用缓存的值。 useEffect 后执行&…...

错误修改系列---基于RNN模型的心脏病预测(pytorch实现)

前言 前几天发布了pytorch实现,TensorFlow实现为:基于RNN模型的心脏病预测(tensorflow实现),但是一处繁琐地方 一处错误,这篇文章进行修改,修改效果还是好了不少;源文章为:基于RNN模型的心脏病…...

Table-Augmented Generation(TAG):Text2SQL与RAG的升级与超越

当下AI与数据库的融合已成为推动数据管理和分析领域发展的重要力量。传统的数据库查询方式,如结构化查询语言(SQL),要求用户具备专业的数据库知识,这无疑限制了非专业人士对数据的访问和利用。为了打破这一壁垒&#x…...

Stable Diffusion本地部署教程(附安装包)

想使用Stable Diffusion需要的环境有哪些呢? python3.10.11(至少也得3.10.6以上):依赖python环境NVIDIA:GPUgit:从github上下载包(可选,由于我已提供安装包,你可以不用git)Stable Diffusion安装包工具包: NVIDIA:https://developer.nvidia.com/cuda-toolkit-archiv…...

【物联网原理与运用】知识点总结(上)

目录 名词解释汇总 第一章 物联网概述 1.1物联网的基本概念及演进 1.2 物联网的内涵 1.3 物联网的特性——泛在性 1.4 物联网的基本特征与属性(五大功能域) 1.5 物联网的体系结构 1.6 物联网的关键技术 1.7 物联网的应用领域 第二章 感知与识别技术 2.1 …...

JuiceFS 2024:开源与商业并进,迈向 AI 原生时代

即将过去的 2024 年,是 JuiceFS 开源版本推出的第 4 年,企业版的第 8 个年头。回顾过去这一年,JuiceFS 社区版依旧保持着快速成长的势头,GitHub 星标突破 11.1K,各项使用指标增长均超过 100%,其中文件系统总…...

C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码

1 分词 分词是自然语言处理的基础,分词准确度直接决定了后面的词性标注、句法分析、词向量以及文本分析的质量。英文语句使用空格将单词进行分隔,除了某些特定词,如how many,New York等外,大部分情况下不需要考虑分词…...

计算机网络(六)应用层

6.1、应用层概述 我们在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网WWW应用,其相关的应用层协议为超文本传送协议HTTP 用户在浏览器地址栏中输入的是“见名知意”的域名,而TCP/IP的网际层使用IP地…...

上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天探底回升,沪指盘中跌超1.6%,创业板指一度跌逾3%,午后集体拉升翻红…...

conda相关操作

conda 是一个开源的包管理和环境管理工具,主要用于 Python 和数据科学领域。它可以帮助用户安装、更新、删除和管理软件包,同时支持创建和管理虚拟环境。以下是关于 conda 的所有常见操作: 1. 安装 Conda Conda 通常通过安装 Anaconda 或 Mi…...

使用TCP协议实现智能聊天机器人

实验目的与要求 本实验是程序设计类实验,要求使用原始套接字编程,掌握TCP/IP协议与网络编程Sockets通信模型,并根据教师给定的任务要求,使用TCP协议实现智能聊天机器人。 (1)熟悉标准库socket 的用法。 …...

PHP二维数组去除重复值

Date: 2025.01.07 20:45:01 author: lijianzhan PHP二维数组内根据ID或者名称去除重复值 代码示例如下: // 假设 data数组如下 $data [[id > 1, name > Type A],[id > 2, name > Type B],[id > 1, name > Type A] // 重复项 ];// 去重方法 $dat…...

2025年01月11日Github流行趋势

项目名称:xiaozhi-esp32 项目地址url:https://github.com/78/xiaozhi-esp32项目语言:C历史star数:2433今日star数:321项目维护者:78, MakerM0, whble, nooodles2023, Kevincoooool项目简介:构建…...

备战蓝桥杯 队列和queue详解

目录 队列的概念 队列的静态实现 总代码 stl的queue 队列算法题 1.队列模板题 2.机器翻译 3.海港 双端队列 队列的概念 和栈一样,队列也是一种访问受限的线性表,它只能在表头位置删除,在表尾位置插入,队列是先进先出&…...

IT面试求职系列主题-Jenkins

想成功求职,必要的IT技能一样不能少,先说说Jenkins的必会知识吧。 1) 什么是Jenkins Jenkins 是一个用 Java 编写的开源持续集成工具。它跟踪版本控制系统,并在发生更改时启动和监视构建系统。 2)Maven、Ant和Jenkins有什么区别…...

Vue篇-06

1、路由简介 vue-rooter:是vue的一个插件库,专门用来实现SPA应用 1.1、对SPA应用的理解 1、单页 Web 应用(single page web application,SPA)。 2、整个应用只有一个完整的页面 index.html。 3、点击页面中的导航链…...

mysql binlog 日志分析查找

文章目录 前言一、分析 binlog 内容二、编写脚本结果总结 前言 高效快捷分析 mysql binlog 日志文件。 mysql binlog 文件很大 怎么快速通过关键字查找内容 一、分析 binlog 内容 通过 mysqlbinlog 命令可以看到 binlog 解析之后的大概样子 二、编写脚本 编写脚本 search_…...

ubuntu 配置OpenOCD与RT-RT-thread环境的记录

1.git clone git://git.code.sf.net/p/openocd/code openocd 配置gcc编译环境 2. sudo gedit /etc/apt/source.list #cdrom sudo apt-get install git sudo apt-get install libtool-bin sudo apt-get install pkg-config sudo apt-install libusb-1.0-0-dev sudo apt-get…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【机器视觉】单目测距——运动结构恢复

ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛&#xf…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

快刀集(1): 一刀斩断视频片头广告

一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...