日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

通俗理解DDPM:生成扩散模型

發(fā)布時(shí)間:2023/12/3 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 通俗理解DDPM:生成扩散模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

說到生成模型,VAE、GAN可謂是“如雷貫耳”,此外,還有一些比較小眾的選擇,如flow模型、VQ-VAE等,也頗有人氣,尤其是VQ-VAE及其變體VQ-GAN,近期已經(jīng)逐漸發(fā)展到“圖像的Tokenizer”的地位,用來直接調(diào)用NLP的各種預(yù)訓(xùn)練方法。除了這些之外,還有一個(gè)本來更小眾的選擇——擴(kuò)散模型(Diffusion Models)——正在生成模型領(lǐng)域“異軍突起”,當(dāng)前最先進(jìn)的兩個(gè)文本生成圖像——OpenAI的DALL·E 2和Google的Imagen,都是基于擴(kuò)散模型來完成的。

本文將逐漸介紹近兩年關(guān)于生成擴(kuò)散模型的一些進(jìn)展。據(jù)說生成擴(kuò)散模型以數(shù)學(xué)復(fù)雜聞名,似乎比VAE、GAN要難理解得多,是否真的如此?擴(kuò)散模型真的做不到一個(gè)“大白話”的理解?讓我們拭目以待。

新的起點(diǎn)

說到擴(kuò)散模型,一般的文章都會提到能量模型(Energy-based Models)、得分匹配(Score Matching)、朗之萬方程(Langevin Equation)等等,簡單來說,是通過得分匹配等技術(shù)來訓(xùn)練能量模型,然后通過郎之萬方程來執(zhí)行從能量模型的采樣。

從理論上來講,這是一套很成熟的方案,原則上可以實(shí)現(xiàn)任何連續(xù)型對象(語音、圖像等)的生成和采樣。但從實(shí)踐角度來看,能量函數(shù)的訓(xùn)練是一件很艱難的事情,尤其是數(shù)據(jù)維度比較大(比如高分辨率圖像)時(shí),很難訓(xùn)練出完備能量函數(shù)來;另一方面,通過朗之萬方程從能量模型的采樣也有很大的不確定性,得到的往往是帶有噪聲的采樣結(jié)果。所以很長時(shí)間以來,這種傳統(tǒng)路徑的擴(kuò)散模型只是在比較低分辨率的圖像上做實(shí)驗(yàn)。?

如今生成擴(kuò)散模型的大火,則是始于2020年所提出的DDPM(Denoising Diffusion Probabilistic Model),雖然也用了“擴(kuò)散模型”這個(gè)名字,但事實(shí)上除了采樣過程的形式有一定的相似之外,DDPM與傳統(tǒng)基于朗之萬方程采樣的擴(kuò)散模型可以說完全不一樣,這完全是一個(gè)新的起點(diǎn)、新的篇章。

準(zhǔn)確來說,DDPM叫“漸變模型”更為準(zhǔn)確一些,擴(kuò)散模型這一名字反而容易造成理解上的誤解,傳統(tǒng)擴(kuò)散模型的能量模型、得分匹配、朗之萬方程等概念,其實(shí)跟DDPM及其后續(xù)變體都沒什么關(guān)系。有意思的是,DDPM的數(shù)學(xué)框架其實(shí)在ICML2015的論文《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》就已經(jīng)完成了,但DDPM是首次將它在高分辨率圖像生成上調(diào)試出來了,從而引導(dǎo)出了后面的火熱。由此可見,一個(gè)模型的誕生和流行,往往還需要時(shí)間和機(jī)遇。

拆樓建樓

很多文章在介紹DDPM時(shí),上來就引入轉(zhuǎn)移分布,接著就是變分推斷,一堆數(shù)學(xué)記號下來,先嚇跑了一群人(當(dāng)然,從這種介紹我們可以再次看出,DDPM實(shí)際上是VAE而不是擴(kuò)散模型),再加之人們對傳統(tǒng)擴(kuò)散模型的固有印象,所以就形成了“需要很高深的數(shù)學(xué)知識”的錯(cuò)覺。事實(shí)上,DDPM也可以有一種很“大白話”的理解,它并不比有著“造假-鑒別”通俗類比的GAN更難。

首先,我們想要做一個(gè)像GAN那樣的生成模型,它實(shí)際上是將一個(gè)隨機(jī)噪聲z變換成一個(gè)數(shù)據(jù)樣本x的過程:????

????

我們可以將這個(gè)過程想象為“建設(shè)”,其中隨機(jī)噪聲zz是磚瓦水泥等原材料,樣本數(shù)據(jù)x是高樓大廈,所以生成模型就是一支用原材料建設(shè)高樓大廈的施工隊(duì)。

?這個(gè)過程肯定很難的,所以才有了那么多關(guān)于生成模型的研究。但俗話說“破壞容易建設(shè)難”,建樓你不會,拆樓你總會了吧?我們考慮將高樓大廈一步步地拆為磚瓦水泥的過程:設(shè)x0為建好的高樓大廈(數(shù)據(jù)樣本),xT為拆好的磚瓦水泥(隨機(jī)噪聲),假設(shè)“拆樓”需要T步,整個(gè)過程可以表示為

建高樓大廈的難度在于,從原材料xT到最終高樓大廈x0的跨度過大,普通人很難理解xT是怎么一下子變成x0的。但是,當(dāng)我們有了“拆樓”的中間過程x1,x2,?,xT后,我們知道xt?1→xt代表著拆樓的一步,那么反過來xt→xt?1不就是建樓的一步?如果我們能學(xué)會兩者之間的變換關(guān)系xt?1=μ(xt),那么從xT出發(fā),反復(fù)地執(zhí)行xT?1=μ(xT)、xT?2=μ(xT?1)...,最終不就能造出高樓大廈x0出來??

該怎么拆

正所謂“飯要一口一口地吃”,樓也要一步一步地建,DDPM做生成模型的過程,其實(shí)跟上述“拆樓-建樓”的類比是完全一致的,它也是先反過來構(gòu)建一個(gè)從數(shù)據(jù)樣本漸變到隨機(jī)噪聲的過程,然后再考慮其逆變換,通過反復(fù)執(zhí)行逆變換來完成數(shù)據(jù)樣本的生成,所以本文前面才說DDPM這種做法其實(shí)應(yīng)該更準(zhǔn)確地稱為“漸變模型”而不是“擴(kuò)散模型”。

具體來說,DDPM將“拆樓”的過程建模為:

?

?

?又如何建

“拆樓”是xt?1→xt的過程,這個(gè)過程我們得到很多的數(shù)據(jù)對(xt?1,xt),那么“建樓”自然就是從這些數(shù)據(jù)對中學(xué)習(xí)一個(gè)xt→xt?1的模型。設(shè)該模型為μ(xt),那么容易想到學(xué)習(xí)方案就是最小化兩者的歐氏距離:

?對公式(8)的推導(dǎo):

對公式(9)的推導(dǎo):

?對公式(10)的推導(dǎo)

可能讀者想問為什么要回退一步來給出xt,直接根據(jù)式(6)來給出xt可以嗎?答案是不行,因?yàn)槲覀円呀?jīng)事先采樣了εt,而εt跟εˉt不是相互獨(dú)立的,所以給定εt的情況下,我們不能完全獨(dú)立地采樣εˉt。

?降低方差

原則上來說,損失函數(shù)(11)就可以完成DDPM的訓(xùn)練,但它在實(shí)踐中可能有方差過大的風(fēng)險(xiǎn),從而導(dǎo)致收斂過慢等問題。要理解這一點(diǎn)并不困難,只需要觀察到式(11)實(shí)際上包含了4個(gè)需要采樣的隨機(jī)變量:

1、從所有訓(xùn)練樣本中采樣一個(gè)x0;

2、從正態(tài)分布N(0,I)中采樣εˉt?1,εt(兩個(gè)不同的采樣結(jié)果);

3、從1~T中采樣一個(gè)t。

?要采樣的隨機(jī)變量越多,就越難對損失函數(shù)做準(zhǔn)確的估計(jì),反過來說就是每次對損失函數(shù)進(jìn)行估計(jì)的波動(方差)過大了。很幸運(yùn)的是,我們可以通過一個(gè)積分技巧來將εˉt?1,εt合并成單個(gè)正態(tài)隨機(jī)變量,從而緩解一下方差大的問題。

?

遞歸生成

至此,我們算是把DDPM的整個(gè)訓(xùn)練流程捋清楚了。內(nèi)容寫了不少,你要說它很容易,那肯定說不上,但真要說非常困難的地方也幾乎沒有——沒有用到傳統(tǒng)的能量函數(shù)、得分匹配等工具,甚至連變分推斷的知識都沒有用到,只是借助“拆樓-建樓”的類比和一些基本的概率論知識,就能得到完全一樣的結(jié)果。所以說,以DDPM為代表的新興起的生成擴(kuò)散模型,實(shí)際上沒有很多讀者想象的復(fù)雜,它可以說是我們從“拆解-重組”的過程中學(xué)習(xí)新知識的形象建模。

訓(xùn)練完之后,我們就可以從一個(gè)隨機(jī)噪聲xT~N(0,I)出發(fā)執(zhí)行T步式(8)來進(jìn)行生成:

這對應(yīng)于自回歸解碼中的Greedy Search。如果要進(jìn)行Random Sample,那么需要補(bǔ)上噪聲項(xiàng):

?

一般來說,我們可以讓σt=βt,即正向和反向的方差保持同步。這個(gè)采樣過程跟傳統(tǒng)擴(kuò)散模型的朗之萬采樣不一樣的地方在于:DDPM的采樣每次都從一個(gè)隨機(jī)噪聲出發(fā),需要重復(fù)迭代TT步來得到一個(gè)樣本輸出;朗之萬采樣則是從任意一個(gè)點(diǎn)出發(fā),反復(fù)迭代無限步,理論上這個(gè)迭代無限步的過程中,就把所有數(shù)據(jù)樣本都被生成過了。所以兩者除了形式相似外,實(shí)質(zhì)上是兩個(gè)截然不同的模型。

從這個(gè)生成過程中,我們也可以感覺到它其實(shí)跟Seq2Seq的解碼過程是一樣的,都是串聯(lián)式的自回歸生成,所以生成速度是一個(gè)瓶頸,DDPM設(shè)了T=1000T=1000,意味著每生成一個(gè)圖片,需要將?θ(xt,t)?θ(xt,t)反復(fù)執(zhí)行1000次,因此DDPM的一大缺點(diǎn)就是采樣速度慢,后面有很多工作都致力于提升DDPM的采樣速度。而說到“圖片生成 + 自回歸模型 + 很慢”,有些讀者可能會聯(lián)想到早期的PixelRNN、PixelCNN等模型,它們將圖片生成轉(zhuǎn)換成語言模型任務(wù),所以同樣也是遞歸地進(jìn)行采樣生成以及同樣地慢。那么DDPM的這種自回歸生成,跟PixelRNN/PixelCNN的自回歸生成,又有什么實(shí)質(zhì)區(qū)別呢?為什么PixelRNN/PixelCNN沒大火起來,反而輪到了DDPM?

了解PixelRNN/PixelCNN的讀者都知道,這類生成模型是逐個(gè)像素逐個(gè)像素地生成圖片的,而自回歸生成是有序的,這就意味著我們要提前給圖片的每個(gè)像素排好順序,最終的生成效果跟這個(gè)順序緊密相關(guān)。然而,目前這個(gè)順序只能是人為地憑著經(jīng)驗(yàn)來設(shè)計(jì)(這類經(jīng)驗(yàn)的設(shè)計(jì)都統(tǒng)稱為“Inductive Bias”),暫時(shí)找不到理論最優(yōu)解。換句話說,PixelRNN/PixelCNN的生成效果很受Inductive Bias的影響。但DDPM不一樣,它通過“拆樓”的方式重新定義了一個(gè)自回歸方向,而對于所有的像素來說則都是平權(quán)的、無偏的,所以減少了Inductive Bias的影響,從而提升了效果。此外,DDPM生成的迭代步數(shù)是固定的TT,而PixelRNN/PixelCNN則是等于圖像分辨率(寬×高×通道數(shù)寬×高×通道數(shù)),所以DDPM生成高分辨率圖像的速度要比PixelRNN/PixelCNN快得多。

超參設(shè)置

這一節(jié)我們討論一下超參的設(shè)置問題。

在DDPM中,T=1000,可能比很多讀者的想象數(shù)值要大,那為什么要設(shè)置這么大的T呢?另一邊,對于αtαt的選擇,將原論文的設(shè)置翻譯到本博客的記號上,大致上是

這是一個(gè)單調(diào)遞減的函數(shù),那為什么要選擇單調(diào)遞減的αt呢?

其實(shí)這兩個(gè)問題有著相近的答案,跟具體的數(shù)據(jù)背景有關(guān)。簡單起見,在重構(gòu)的時(shí)候我們用了歐氏距離(7)作為損失函數(shù),而一般我們用DDPM做圖片生成,以往做過圖片生成的讀者都知道,歐氏距離并不是圖片真實(shí)程度的一個(gè)好的度量,VAE用歐氏距離來重構(gòu)時(shí),往往會得到模糊的結(jié)果,除非是輸入輸出的兩張圖片非常接近,用歐氏距離才能得到比較清晰的結(jié)果,所以選擇盡可能大的T,正是為了使得輸入輸出盡可能相近,減少歐氏距離帶來的模糊問題。

選擇單調(diào)遞減的αt也有類似考慮。當(dāng)tt比較小時(shí),xt還比較接近真實(shí)圖片,所以我們要縮小xt?1與xt的差距,以便更適用歐氏距離(7),因此要用較大的αt;當(dāng)t比較大時(shí),xt已經(jīng)比較接近純噪聲了,噪聲用歐式距離無妨,所以可以稍微增大xt?1與xt的差距,即可以用較小的αt。那么可不可以一直用較大的αt呢?可以是可以,但是要增大TT。注意在推導(dǎo)(6)時(shí),我們說過應(yīng)該有αˉT≈0,而我們可以直接估算:

文章小結(jié)

本文從“拆樓-建樓”的通俗類比中介紹了最新的生成擴(kuò)散模型DDPM,在這個(gè)視角中,我們可以通過較為“大白話”的描述以及比較少的數(shù)學(xué)推導(dǎo),來得到跟原始論文一模一樣的結(jié)果。總的來說,本文說明了DDPM也可以像GAN一樣找到一個(gè)形象類比,它既可以不用到VAE中的“變分”,也可以不用到GAN中的“概率散度”、“最優(yōu)傳輸”,從這個(gè)意義上來看,DDPM甚至算得上比VAE、GAN還要簡單。?

?原文地址:生成擴(kuò)散模型漫談(一):DDPM = 拆樓 + 建樓 - 科學(xué)空間|Scientific Spaces

總結(jié)

以上是生活随笔為你收集整理的通俗理解DDPM:生成扩散模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。