机器学习课程学习周报十二
机器学习课程学习周报十二
文章目录
- 机器学习课程学习周报十二
- 摘要
- Abstract
- 一、机器学习部分
- 1.1 fGAN: General Framework of GAN
- 1.2 CycleGAN
- 1.3 Auto-Encoder
- 1.4 概率论复习(一)
- 总结
摘要
本周的学习内容涵盖了fGAN框架、CycleGAN、自编码器以及概率论的基础知识。fGAN利用f-divergence来衡量概率分布间的差异,并通过Fenchel共轭解释其与GAN的关系。CycleGAN在无监督学习中实现图片风格转换,特别是在无成对数据的情况下。自编码器用于特征降维和重构,并探讨了去噪自编码器和离散隐表征的应用。最后,复习了概率论的基本概念,为理解VAE和Diffusion模型奠定基础。
Abstract
This week’s study focuses on the fGAN framework, CycleGAN, autoencoders, and fundamental concepts of probability theory. fGAN utilizes f-divergence to measure differences between probability distributions, and the Fenchel conjugate is used to explain its relationship with GANs. CycleGAN enables image style transfer in unsupervised learning, particularly without paired data. Autoencoders are explored for feature dimensionality reduction and reconstruction, including applications of denoising autoencoders and discrete latent representations. Finally, a review of probability theory basics lays the groundwork for understanding VAE and Diffusion models.
一、机器学习部分
1.1 fGAN: General Framework of GAN
f-divergence是一类用于衡量两个概率分布之间差异的函数族,f-divergence具体的定义为:
D f ( P ∣ ∣ Q ) = ∫ f ( p ( x ) q ( x ) ) q ( x ) d x {D_f}(P||Q) = \int {f(\frac{{p(x)}}{{q(x)}})} q(x)dx Df(P∣∣Q)=∫f(q(x)p(x))q(x)dx
给定两个概率分布 P P P和 Q Q Q,且 p ( x ) {p(x)} p(x)和 q ( x ) {q(x)} q(x)是 P P P和 Q Q Q的概率密度函数,函数 f f f是一个凸函数,并保证 f f f是非负的。具体定义和推导过程如下:
下图为指定了函数 f f f的具体形式后,f-divergence能转化为不同的divergence。
Fenchel Conjugate(凸共轭)
凸函数的共轭函数定义如下所示:
下图的例子表示,给定所有的 x x x,画出函数图像,在 t t t的定义域上,取最大的函数部分, f ∗ {f^*} f∗的图像是凸函数的形状, f ∗ {f^*} f∗一定是凸函数。
下图表明了,利用凸共轭证明f-divergence与GAN的关系,不同的目标函数对应不同的Divergence函数,不同的Divergence函数对应不同的 f ∗ {f^*} f∗函数。
1.2 CycleGAN
假设我们现在要把一个 x x x域的真人的头像照片,转换为 y y y域的动漫人物的头像照片,在这个例子里,我们没有任何的成对的数据,因为我们有一堆真人的照片,但是我们没有这些真人的动漫头像。
这个时候就可以用到 GAN,在这种完全没有成对数据的情况下进行学习,把GAN用在无监督学习上。原本无条件的GAN的输入是一个高斯的分布,输出可能是一个复杂的分布。现在我们将 x x x域的真人的头像照片作为GAN的输入,替换为原来输入的高斯分布,输出部分期望生成 y y y域中的动漫人物的头像图片。判别器同时输入 x x x域的图片和 y y y域的图片,然后输出一个数值,这个数值代表这两张图片是不是一对的。
这里我们完全套用原来GAN的训练方式是有问题的,我们没有对输入和输出的关系做任何限制,生成器也许就把这张 x x x域的真人图片当作一个符合高斯分布的噪音,然后不管你输入什么它都无视它,只要判别器觉得它做得很好就可以了。
引入循环生成对抗网络(Cycle GAN),会训练两个生成器。第一个生成器是把 x x x域的图变成 y y y域的图,第二个生成器它的工作是能将一张 y y y域的图还原回至 x x x域的图。在训练的时 候,我们会增加一个额外的目标,就是我们希望输入一张图片,其从 x x x域转成 y y y域以后,要从 y y y域转回原来一模一样的 x x x域图片。就这样经过两次转换以后,输入跟输出要越接近越好,或者说两张图片对应的两个向量之间的距离越接近越好。因为这边有一个循环,从 x x x到 y y y再从 y y y回到 x x x,所以它是一个循环,所以被称为Cycle GAN。
另一个角度,Cycle GAN可以是双向的。同时训练上图中下面的部分,给橙色的生成器输入 y y y域的图片,让它产生 x x x域的图片。然后再让蓝色的生成器把 x x x域的图片还原回原来 y y y域的图片。同时我们依然希望输入跟输出越接近越好,所以一样要训练一个判别器,这个判别器是 x x x域的判别器, 它是要看橙色生成器输出的图片像不像是真实人脸的图片。这个橙色的生成器它要去骗过这个 D X {D_X} DX判别器。这两部分合起来就是 Cycle GAN。
1.3 Auto-Encoder
自编码器(Auto-Encoder)属于self-supervised learning(自监督学习)其中的一种方法。
自编码器中包含一个编码器和一个解码器。编码器可能读入一张图片,图片是一种维度非常高的向量,编码器能将高维度的向量压缩为低维度的向量,编码器通常有降维的作用。而解码器的网络架构可能更类似于GAN中的生成器,解码器要输入通过编码器得到的低维向量,生成一张图片。而训练的目标是要将解码器得到的输出图片与编码器的输入图片越接近越好,这个任务也叫做重构(reconstruction)。
编码器的任务就是化繁为简,有时本来比较复杂的东西,它实际上只是表面上看起来复杂,而本身的变化是有限的。我们只需要找出其中有限的变化,就可以将它本来比较复杂 的东西用更简单的方法来表示。例如,一组图片的大小都是 3 × 3 3 \times 3 3×3,就是用9维度的向量来表示一张图片,然而实际上这一组图片的表示类型只有2种,可以只用2维度的向量表示。
去噪自编码器(denoising autoencoder),去噪自编码器就是把原来需要输入到编码器的图片,加上一些噪声,然后一样地通过编码器,再通过解码器,目标是还原出加入噪声前的图片。 BERT模型也可以当做为一个去噪自编码器,输入时我们会加入掩码,掩码就是噪声。
自编码器可应用于特征解耦(feature disentanglement),解耦是指把一堆本来纠缠在一起的东西把它解开。如果是图片的话,就是把一张图片变成一个编码,再把编码变回图片,既然这个编码可以变回图片,代表说这个编码里面有很多的信息,包含图片里面所有的信息。举例来说,包含图片里面的色泽、纹理等等。在语音上,语音的编码包含了语音里面所有重要的信息,可能有这句话的内容,这句话的语者信息。然而这些信息是全部纠缠在一个向量里面,我们并不知道一个向量的哪些维度代表了哪些信息。例如,100维的语音向量编码,前50维代表了这句话的内容,后50维代表了说话人的特征,这就叫特征解耦。有了特征解耦之后,如果我们现在有A和B两个不同对象说不同话的语音,将其通过编码器得到的编码拿出来,交换其后50维的向量,再通过解码器生成,我们可以得到音色的互换,或者交换其前50维的向量,再通过解码器生成,我们可以得到语音的合成。
自编码器还可应用于离散隐表征。目前为止我们都假设编码是一个向量,这样就是一串 实数,编码也可以是二进制,是每一个维度就代表了某种特征的有无。比如输入的图片,如果是女生,可能第一维就是1,男生第一维就是0;如果有戴眼镜,就是第三维是1,没有戴眼镜第三维就是是0。编码也可以是独热向量,只有一维是1,其他就是0。
在离散的表征技术中,有一种向量量化变分自编码器(vector quantized variational auto-encoder),它运作的原理就是输入一张图片,然后编码器输出一个向量, 这个向量它是一般的向量,并且是连续的,但接下来有一个码本,所谓码本的意思就是一排向量。这排向量也是学出来的,把编码器的输出,去跟这排向量计算一个相似度,然后就会发现这其实跟自注意力有点像,上面这个向量就是查询,下面这些向量就是键, 那接下来就看这些向量里面,谁的相似度最大,把相似度最大的那个向量拿出来再输入至解码器中。假设码本里面有32个向量,那解码器的输入就只有32种可能,相当于让这个编码没有无穷无尽的可能,只有 32 种可能而已。这种技术在语音中,码本可以学到最基本的发音部位,相当于英文的音标或者中文的拼音,而这个码本里面每一个向量,它就对应到某一个发音,就对应到音标里面的某一个符号。
1.4 概率论复习(一)
为了更好地了解VAE和Diffusion模型的原理,并结合信息论前置课程的需要,我将分几次对概率论与数理统计的知识进行复习。
总结
本周的学习加强了对生成对抗网络及其在无监督学习中的应用的理解,并深入探讨了自编码器在特征提取和表示学习中的作用。VAE和Diffusion模型中涉及分布的理解和推导,通过对概率论的复习,为后续学习更复杂的深度学习模型打下了坚实的理论基础。
相关文章:

机器学习课程学习周报十二
机器学习课程学习周报十二 文章目录 机器学习课程学习周报十二摘要Abstract一、机器学习部分1.1 fGAN: General Framework of GAN1.2 CycleGAN1.3 Auto-Encoder1.4 概率论复习(一) 总结 摘要 本周的学习内容涵盖了fGAN框架、CycleGAN、自编码器以及概率…...
python多线程程序设计 之二
python多线程程序设计 之二 线程同步机制lock对象acquirereleaselocked RLock对象条件变量条件变量应用实列实列代码 线程同步机制 lock对象 原语锁是一种同步原语,锁定时不属于特定线程。在Python中,它是目前可用的最低级别的同步原语,由_…...
k8s用StatefulSet部署redis
redis-config.yaml (配置文件) apiVersion: v1 kind: ConfigMap metadata:name: redis-config data:redis.conf: |# Redis general configuration bind 0.0.0.0 protected-mode no port 6379 dir /data appendonly yesse…...
flink on k8s
1.修改host文件 vi /etc/hosts 添加如下内容 这样搭集群的时候就不用记ip了 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 165.154.221.97 tlb-001 k8s01 k8s-m…...

Java集合(八股)
这里写目录标题 Collection 接口List 接口ArrayList 简述 1. ArrayList 和 LinkedList 区别?⭐️⭐️⭐️⭐️2. ArrayList 和 Array 的区别?⭐️⭐️⭐️ArrayList 和 Vector 区别?⭐️⭐️ArrayList 的扩容机制?⭐️⭐️⭐️ Qu…...
python+adb
#!/usr/bin/python env # -*- coding: utf-8 -*- import os import sys import subprocess from time import sleepimport logging logging.basicConfig(levellogging.DEBUG) class ScreenCapture():def get_screen_size(self):"""获取手机分辨率""&q…...

AIGC文本生成
文本生成是一种人工智能技术,它基于深度学习算法,根据给定的提示信息创作出有逻辑、连贯的文本内容。 文本生成所需的输入(提示或Prompt)可以是简单的关键词、一句话概述或是更复杂的指令和上下文信息。文本生成模型通过分析大量…...
系统架构设计师教程 第5章 5.4 软件测试 笔记
5.4 软件测试 5.4.1 测试方法 ★★★★★ 软件测试方法的分类有很多种, 以测试过程中程序执行状态为依据可分为静态测试 (Static Testing,ST) 和动态测试 (Dynamic Testing,DT); 以具体实现算法细节和系统内部结构的相关情况为根据可分黑盒测试、白盒测试和灰盒测…...
ASPICE评估全流程解析:汽车软件开发组织能力的系统化评估
ASPICE(Automotive SPICE)评估的过程是一个系统化和详尽的流程,旨在评估汽车软件开发组织在软件开发过程方面的能力。 以下是ASPICE评估过程的详细描述: 1. 评估准备阶段 a. 确定评估目标和范围 明确评估的目标,如评…...

合并RAR分卷压缩包
因为文件压缩之后体积仍然过大,大家可能会选择进行分卷压缩,那么rar分卷压缩包之后如何合并成一个压缩包文件呢?今天我们来学习rar分卷压缩包,合并成一个的方法。 最基础的方法就是将分卷压缩包解压出来之后,再将文件…...

重生奇迹MU 想去哪就去哪玩 轻松玩转翅膀属性
在重生奇迹MU这个游戏中,玩家需要扫荡各种怪物,勇斗BOSS,与其他玩家激战。在这个充满冒险的旅程中,翅膀是最重要的装备之一。拥有一个属性强大的翅膀,代表着玩家的成长与强大。穿上它,加速你的冒险之旅吧&a…...

Lnux-gcc/g++使用
目录 1.gcc/g介绍 1.什么是 gcc / g 2.gcc/g指令格式 2. gcc / g 实现程序翻译的过程 1.预处理(进行宏替换) 2.编译(生成汇编) 3.汇编(生成机器可识别代码) 4.连接(生成可执行文件或库文件) 1.gcc/g介绍 1.什么…...
用Python创建一个键盘输入捕获程序
目录 简介 环境准备 安装依赖 项目结构 编写代码 1. 导入库 2. 定义回调函数 3. 启动键盘监听器 4. 整合代码 运行程序 结论 简介 在这篇博文中,我们将探索如何使用Python编写一个简单的键盘输入捕获程序。这个程序将实时捕获用户的键盘输入并在控制台中显示出来。…...

Mybatis中Like模糊查询三种处理方式
目录 Mybatis中Like模糊查询三种处理方式 1.通过单引号拼接${} 1)mapper接口 2)Mapper.xml 3)测试代码 4) 测试结果 2.通过concat()函数拼接(个人推荐使用这种) 1)mapper接口 2)Mapper.xml 3)测试代码 4) 测…...

STL值list
list容器 头文件:#include<list> - list是一个双向链表容器,可高效地进行插入删除元素 - list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符 注:list使用迭代器访问数据时可以一步一步走自增自减(即…...

结构体的内存对齐
对⻬规则: 1.结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处 2.其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。 对⻬数编译器默认的⼀个对⻬数与该成员变量⼤⼩的较⼩值。 但一些编译器下并没有默认对其数 3.结…...
Web 创建设计
Web 创建设计 Web 创建设计是一个涉及多个方面的过程,它包括网站的视觉设计、用户界面设计、用户体验设计、前端开发以及后端开发等。本文将详细介绍这些方面,并探讨如何创建一个既美观又实用的网站。 1. 视觉设计 视觉设计是网站创建设计的第一步,它决定了网站的外观和感…...

2024年9月16日历史上的今天大事件早读
1151年9月16日 南宋名将韩世忠逝世 1782年9月16日 清朝道光帝旻宁出生 1810年9月16日 墨西哥独立日 1856年9月16日 云南杜文秀领导回民起义 1880年9月16日 左宗棠创办的兰州机器织呢局开工 1908年9月16日 美国通用汽车公司成立 1919年9月16日 周恩来组织参加的觉悟社成立…...
记录工作中遇到的问题(持续更新~)
跨域问题(待排查) 2024-09-15 【前提】:前端配置了nignx转发,后端设置了跨域拦截,对http://xxxx做了允许跨域。但是访问http://xxx被拦截了,返回403 Forbidden。同样的配置放在另外一套部署的环境上就完全…...

六西格玛咨询:石油机械制造企业的成本控制与优化专家
一、石油机械制造行业现状及主要困扰 随着全球能源需求的日益增长,石油开采和生产设备需求不断增加,石油机械制造行业在过去数十年里得到了迅猛发展。然而,石油机械制造作为一个高度复杂且技术密集的行业,也面临着多重挑战。首先…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...