生成式 AI - Diffusion 模型的数学原理(5)

来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM)
论文链接: https://arxiv.org/abs/2006.11239
Hung-yi Lee 课件整理

在这里插入图片描述
讲到这里还没有解决的问题是,为什么这里还要多加一个噪声。Denoise模型算出来的是高斯分布的均值,做sample的时候考虑需要加上一个噪声,代表说考虑高斯分布的方差这一项。为什么不直接取均值呢?
在这里插入图片描述
同样的问题你也可以问,为什么语言模型在产生问句的时候,一定要做sample,为什么我们先产生一个有可能的分布,再从这个分布中sample出文字呢?取概率最大的就行,有人说做sample的好处是你每次问同一个问题,chatgpt的答案都不一样,当你问某个人有没有打疫苗,chatgpt有时候会说有有时候会说没有,就可以制造很多假新闻。
为什么一定要这样呢,为什么不能固定住去概率最大的呢?让模型每次都回答概率最大的句子,为什么需要有随机性?

在这里插入图片描述
这个问题之前就有人提出来了,这篇文章发现如果取概率最大的句子和词汇,那么输出的结果会是不断重复的句子,机器就会不断地跳帧,讲重复的话,虽然做sampling机器会说一些奇怪的话,和跳帧比起来sample的结果更好,为什么呢?他做了一个分析。
在这里插入图片描述
我们来看看人写的句子吧,橙色的线代表的是人写的句子,右边是人写的一篇文章,用我们的语言模型来计算人写的每一个单词的概率,发现人写出来的文章用字遣词并不是选概率最大的词汇。
我们让机器每一步都产生概率最大的词汇,发现它一直在不断地讲重复的话。
在做生成模型的时候概率最大的结果未必是最好的结果。
这是在文字上的观察。

在这里插入图片描述
实际上在语音合成模型上也有类似的规律。
在语音合成模型的推理阶段使用dropout效果很好,这个和我们想象的不太一样,我们一般是在训练阶段过拟合的时候才加dropout。
这篇文章里写到,为了引入输出结果的多变性,在推理的某一层加了dropout。

在这里插入图片描述
diffusion 模型其实是一种自回归模型,自回归的模型是一次到位,这样通常产生的结果不够好,我们把它改成N次到位,这就是diffusion模型的概念。
所以在做Denoise的时候就好比是自回归里面的一个step,在做自回归的时候每个step我们都要加一点噪声,加一点随机性结果才会好,所以在做Denoise的时候我们要加一点随机性,这样结果才会好。
在这里插入图片描述
李教授找助教做实验验证了,如果像论文里一样加噪声会生成小女孩头像这样正常的图片,把噪声去掉就只会产生一张黄色的图片。

在这里插入图片描述
到这里就是diffusion模型的全部玄机了。
训练的时候为什么不是一次一次地加噪声,顺便讲了什么sampling的时候需要加噪声。

在这里插入图片描述
diffusion模型不是只用在图像上,在语音合成任务上也可以。
这里没有什么好讲的,和图像几乎是一样的,图像的输入是2维的,在语音上变成了1维的,从一个完全高斯的杂训一步一步做Denoise,把它变成一段声音。
其中比较知名的方法就是WavGrad
基本上和DDPM没有什么差别。
在这里插入图片描述
但是把diffusion模型直接用在文字上就很困难了,我们没办法直接在文字上加噪声,文字是描述性的,没把法在描述性的东西上加噪声让它看不出来是什么。
有一些提法是把噪声加在word embedding上,就这样。
有几篇论文这样做的,比如diffusion-LM。
在这里插入图片描述
还有这篇论文 DiffuSeq,它是一个seq2seq的模型,是在latent representation上加噪声。

在这里插入图片描述

还有这篇论文,假设加高斯噪声是不行的,能不能加其他类型的噪声加到文字上?
这篇论文里面的噪声分布全部都是 [ m a s k ] [mask] [mask],然后再慢慢把有 [ m a s k ] [mask] [mask]的地方填充回来。

写在最后
diffusion模型最大的成功是把自回归的一步到位改为了N步到位。

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

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

相关文章

【Leetcode每日一刷】哈希表|纲领、242.有效的字母异位词、349. 两个数组的交集

纲领 🔗代码随想录理论部分 关于哈希表这个数据结构就不再重复讲了,下面对几个关键点记录一下: 哈希碰撞 解决方法1:拉链法 解决方法2:线性探测法 下面针对做题要用到的三种结构讲一下(也是重复造轮子了…

Spring AI上架,打造专属业务大模型,AI开发再也不是难事!

Spring AI 来了 Spring AI 是 AI 工程师的一个应用框架,它提供了一个友好的 API 和开发 AI 应用的抽象,旨在简化 AI 应用的开发工序。 提供对常见模型的接入能力,目前已经上架 https://start.spring.io/,提供大家测试访问。&…

Docker技术概论(1):Docker与虚拟化技术比较

Docker技术概论(1) Docker与虚拟化技术比较 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https:…

cpp基础学习笔记03:类型转换

static_cast 静态转换 用于类层次结构中基类和派生类之间指针或者引用的转换。up-casting (把派生类的指针或引用转换成基类的指针或者引用表示)是安全的;down-casting(把基类指针或引用转换成子类的指针或者引用)是不安全的。用于基本数据类型之间的转换&#xff…

XUbuntu22.04之如何找到.so库所在的软件包?(二百一十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

JVM内存模型深度剖析和优化

JVM内存模型深度剖析和优化 Java语言的跨平台性 问题: Java语言的跨平台性是如何做到的 通过不同操作系统平台的JVM版本,Linux和Windows的JVM版本各不相同Java是跨平台解释性语言,可以在不同的操作系统运行,JVM从软件层面屏蔽不同操作系统在…

JOSEF约瑟 JZS-7G-42 AC220V静态可调延时中间继电器 端子式导轨安装15ms-10s

系列型号:JZS-7G-57端子排延时中间继电器;JZS-7G-42X端子排延时中间继电器;JZS-7G-22X端子排延时中间继电器;JZS-7G-21端子排延时中间继电器;JZS-7G-41端子排延时中间继电器;JZS-7G-51端子排延时中间继电器…

大数据可视化python01

import pandas as pd import matplotlib.pyplot as plt# 设置中文改写字体 plt.rcParams[font.sans-serif] [SimHei]# 读取数据 data pd.read_csv(C:/Users/wzf/Desktop/读取数据进行数据可视化练习/实训作业练习/瓜果类单位面积产量.csv ,encoding utf-8)#输出 print(data)…

Docker Swarm全解析:实现微服务高可用与故障转移的秘密武器

🐇明明跟你说过:个人主页 🏅个人专栏:《Docker入门到精通》 《k8s入门到实战》🏅 🔖行路有良友,便是天堂🔖 目录 一、基本概念和介绍 1、Docker Swarm 是什么,它与 …

#stm学习总结 (二十八)硬件随机数实验

28.1 随机数发生器简介 STM32F407 自带了硬件随机数发生器(RNG),RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数。 28.1.1 RNG 框图 STM32F407 的随机数发生器(RNG&#x…

3dmax corona渲染器和vray渲染器哪个好?

Corona和Vray这两个渲染器都很不错,每个都有自己的优点和适用的情况,所以很难说哪个更好。 下面我简单给你对比一下: 1、操作界面:Vray的界面比较多,参数设置也复杂一点,初学者可能会觉得有点难上手。但C…

【cmu15445c++入门】(13)C++的std::promise

一、说明 std::promise 是C11并发编程中常用的一个类&#xff0c;常配合std::future使用。其作用是在一个线程t1中保存一个类型typename T的值&#xff0c;可供相绑定的std::future对象在另一线程t2中获取 二、代码 #include <chrono> #include <future> #includ…