再議擴散模型

目錄

一、基礎知識

1、數學期望

2、概率表示

3、KL散度

二、擴散過程

三、理想的去噪過程

四、真實的去噪過程

五、噪聲生成?


導言

? ? ? ?筆者早些時候曾粗略看過擴散模型的流程,但對于底層算法(尤其是概率論方面),理解不夠透徹,所以重新解釋底層算法。

一、基礎知識

1、數學期望

? ? ? ?在擴散模型中經常使用數學期望來計算擴散模型的損失函數,其中期望符號的寫法與概率論有所不同。

? ? ? ? 期望計算:對于變量x在概率密度函數為p(x)下的期望(亦說為變量x在p(x)分布下的期望)記作:E_{p(x)}\left ( x \right )。由于一般來說概率密度函數p(x)已知,所以也縮寫為E(x)。而擴散模型中分布函數未知,所以記作前者。

2、概率表示

? ? ? ??p(x_0)表示:0時刻下的概率分布。

? ? ? ??p(x_0:T)表示:0到T時刻下,變量x的聯合概率分布,此時不一定等于\prod_{t=0}^T p(x_t),因為不一定相互獨立。

? ? ? ??p(x_1:T|x_0)表示:考慮0時刻情況x_0成立下,1到T時刻下,變量x的聯合概率分布。

? ? ? ? 由于擴散模型遵循馬爾科夫鏈,所以一定有1時刻完全依賴于0時刻,2時刻完全依賴于1時刻,則可以理解為相互獨立。

? ? ? ? 此時遵循貝葉斯公式:p_\theta(x_0)=\frac{p_\theta(x_0:T)}{p_\theta(x_{1:T}|x_0)}

? ? ? ? 對于T時刻與0時刻之間的關系:q(x_1:T|x_0)=\prod _{t=1}^T q(x_t|x_{t-1})

3、KL散度

? ? ? ? KL散度定義:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?D_{KL}(p||q)=\sum_{i=1}^n p(x_i)log \frac{p({x_i})}{q(x_i)} \\ D_{KL}(p||q)=\int p(x_i)log \frac{p({x_i})}{q(x_i)}

? ? ? ? KL散度用來描述兩個分布之間的距離,KL散度為0則兩個分布相同,散度越大則越不相關。

? ? ? ? KL散度非負性證明?

? ? ? ? 從凸函數定義延伸出Jetson不等式:

凸函數定義f(\lambda x_1+(1-\lambda )x_2) \leqslant \lambda f(x_1)+(1-\lambda)f(x_2)

Jensen不等式(琴生不等式):當f(x)是區間[a,b]的凸函數,則對于任意實數x_1,x_2,...,x_n \in [a,b],對所有非負實數?a_1,a_2,...,a_n \geqslant 0?,且a_1+a_2+...+a_n=1,下式成立:

? ? ? ??f(a_1x_1+a_2x_2+...+a_nx_n) \leqslant a_1f(x_1)+a_2f(x_2)+...+a_nf(x_n)

由KL散度定義:

? ? ? ??D_{KL}(p||q)=\sum_{i=1}^n p(x_i)log \frac{p({x_i})}{q(x_i)}

其中:

? ? ? ??\sum_{i=1}^np(x_i)=1 , \ \ \sum_{i=1}^nq(x_i)=1

由于-log(x)為凹函數所以提取負號,進行變換:

? ? ? ??D_{KL}(p||q)=\sum_{i=1}^n p(x_i)log \frac{p({x_i})}{q(x_i)} \\ =\sum_{i=1}^n p(x_i)(-log \frac{p({x_i})}{q(x_i)}) \\ \geqslant -log(\sum_{i=1}^n p(x_i)\frac{q({x_i})}{p(x_i)}) \\ =-log(\sum_{i=1}^n q(x_i)) \\ =-log(1) \\ =0\beta_t

因此KL散度恒為非負。

二、擴散過程

? ? ? ? 擴散模型就是逐次往圖片里加入高斯噪聲直到完全變為噪聲的過程,問題在于噪聲如何加,與上一幀的加權關系。

? ? ? ? 噪聲模型,本身是從一個正態分布中采樣而來,分布遵循N(0,I)。

? ? ? ? 擴散前提:保證擴散后圖像仍然是一個高斯噪聲圖像。

? ? ? ? 擴散迭代公式:q(x_t|x_{t-1})=N(x_t|\sqrt{1-\beta_t}x_{t-1},\beta_t \mathbf{I}),保證擴散過程是一個均值\sqrt{1-\beta_t}x_{t-1},方差為\beta_t \mathbf{I}的正態分布,\beta_t是一個隨時間變化的值,滿足特定的差異時間表。

? ? ? ? 均值為什么要乘以\sqrt{1-\beta_t}?

? ? ? ? 由于T\rightarrow \infty時刻,保證x_t仍然是一個正態分布,但顯然現實場景T達不到無窮大,該想法只是一個理想條件。

? ? ? ? 擴散模型滿足馬爾科夫鏈:q(x_1:T|x_0)=\prod _{t=1}^T q(x_t|x_{t-1})

? ? ? ? 對于擴散模型T時刻的通項公式:q(x_t|x_0)=N(x_t;\sqrt{\bar{\alpha}_t}x_0,(1-\bar{\alpha}_t)I)

? ? ? ? 通項公式計算如下:

? ? ? ? 令\alpha_t=1-\beta_t ,\ \bar{\alpha_t}=\sum_1^n\alpha_i

三、理想的去噪過程

? ? ? ? 去噪過程的思想就是從隨機噪聲中還原一個圖像。

? ? ? ? 目的:求出q(x_{t-1}|x_t)迭代公式。

? ? ? ? 但由于我們無法通過原有的q(x_t|x_{t-1})來反向推導該目標,所以我們嘗試用神經網絡(一般用u-net)擬合一個p_\theta(x_t|x_{t-1}),與目標近似。

? ? ? ? 迭代公式推導主體思想:化反向過程為前向過程!

? ? ? ? 首先對于q(x_{t-1}|x_t,x_0)公式進行轉化:

? ? ? ? 7.1步用貝葉斯公式替換,7.2步乘法公式展開,7.3步進行整理,7.4步帶入正態分布函數公式,由于差了一個\frac{1}{\sqrt{2 \pi \sigma}},所以不完全等價,保證正比于。7.5步轉換為關于x_{t-1}的二次項函數,此時可以抽出方差和均值,這兩者均\alpha_t有關。

? ? ? ??迭代公式q(x_{t-1}|x_t,x_0)=N(x_{t-1};\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t} }\epsilon),\frac{(1-\bar{\alpha}_{t-1})(1-\alpha_t)}{1-\bar{\alpha}_t}I)

? ? ? ? 最后證明為一個變量為t-1時刻的前向過程。

四、真實的去噪過程

? ? ? ? ?真實的去噪過程是預測噪聲分布,一般計算變分自編碼器的最大化證據下界,訓練方法就是最小化負對數似然。

? ? ? ? 上面結果中第一項約束最終第T步得到的加噪結果?X_t接近于完全的高斯噪聲,最后一項約束模型生成的結果與真值接近,而中間的?t-1?項約束逆向過程的馬爾科夫鏈中,神經網絡估計出的每一個條件分布接近于對應的真實的數據分布。

? ? ? ? ?中間的第t項的KL散度可以進行化簡,最后將收斂于真實噪聲,如下。

? ? ? 代入推導出來的均值,此時正比于一個真實噪聲與預測噪聲的均方誤差,這個結構最后作為損失函數用于最小化。

五、噪聲生成?

? ? ? ? 噪聲生成模型一般用U-net或U-net結合transformer,輸入帶有噪聲的圖像和時間步t,輸出是預測出的\epsilon_\theta(x_t,t),損失函數用真實噪聲與預測噪聲的均方誤差。

參考一年前我寫過的擴散模型:NLP(6)--Diffusion Model_diffusion model nlp-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46401.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pytorch學習(五)tensorboard使用

1. 創建環境 首先創建一個環境: conda create -n pytorch conda activate pytorch 然后安裝tensorboard pip install tensorboard 安裝opencv pip install opencv-python 2. 簡單的案例 標量和圖像的顯示: 2.1標量實現的方法是add_scalar,第一個參數是給顯…

探索Puppeteer的強大功能:抓取隱藏內容

背景/引言 在現代網頁設計中,動態內容和隱藏元素的使用越來越普遍,這些內容往往只有在特定的用戶交互或條件下才會顯示出來。為了有效地獲取這些隱藏內容,傳統的靜態爬蟲技術往往力不從心。Puppeteer,作為一個強大的無頭瀏覽器工…

印尼語翻譯通:AI驅動的智能翻譯與語言學習助手

在這個多元文化交織的世界中,語言是連接我們的橋梁。印尼語翻譯通,一款專為打破語言障礙而生的智能翻譯軟件,讓您與印尼語的世界輕松接軌。無論是商務出差、學術研究,還是探索印尼豐富的文化遺產,印尼語翻譯通都是您的…

代碼隨想錄算法訓練營第三十六天|1049. 最后一塊石頭的重量 II 、 494. 目標和 、 474.一和零

1049. 最后一塊石頭的重量 II 分成兩堆石頭,一堆石頭的總重量是dp[target],另一堆就是sum - dp[target]。 在計算target的時候,target sum / 2 因為是向下取整,所以sum - dp[target] 一定是大于等于dp[target]的。 那么相撞之…

.NET C# 使用 iText 生成PDF

.NET C# 使用 iText 生成PDF 文章目錄 .NET C# 使用 iText 生成PDF1 安裝 iText 7 庫:2 變量定義3 創建一個PDF4 段落5 旋轉文本6 代碼塊7 外部鏈接8 內部鏈接9 表格10 注釋11 線條12 二維碼13 嵌入圖像14 列表15 設置背景16 頁眉17 頁腳18 事件19 水印20 分欄21 源…

老古董Lisp(1):粗魯先生Lisp再出發

粗魯先生Lisp再出發 開始的原因 目標和夢想是最近考慮的一個問題。什么是目標?什么是夢想?夢想可以激勵改變,目標才能實現改變。 開始這個部分的時候,我的夢想是什么?我的目標是什么?我想要什么&#xf…

libwebrtc.a+exosip連接fS 環境部署tips

//運行FS服務器 sudo ./freeswitch -nc -nonat //公網sudo ./freeswitch //運行客戶端 sudo ./fs_cli //加載模塊 load mod_av load mod_verto0.Invite交互過程 1.fs碼率設置 2.用戶密碼改動 3.數字簽名的摘要 4.FS收不到ACK 5.公網部署 6.查看frewswitch都占用哪些端口 7.日志…

Java(二十一)---棧的使用和模擬實現

文章目錄 前言1.什么是棧(Stack)?2. 棧的模擬實現3.stack的使用![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/80c82d22f3ee49cfaa2915d1c961573e.png)4.關于棧的oj題4.1.有效的括號4.2.逆波蘭表達式4.3.棧的壓入、彈出序列4.4.最小棧 前言 前面幾篇我們學習了順序…

Vue--Router(路由)

目錄 一 Router(路由) 1.作用 2.實現步驟 3.注意 一 Router(路由) 1.作用 Router又叫做路由,簡單來說,就是用來實現vue的頁面之間跳轉的。 我們都知道,使用vue必然會涉及到很多個組件,也就是頁面,而頁面之間肯定需…

RK3588讀取不到顯示器edid

問題描述 3588HDMIout接老的顯示器或者HDMI轉DVI接DVI顯示器顯示不了或者顯示內容是彩色條紋,但是這種顯示器測試過如果接筆記本或者主機是可以直接顯示的。這一類問題是HDMI下的i2c與顯示器通訊沒成功,讀取不到設備的edid。問題包括全志的H3 、AML的S905都有遇到 測試環境…

Qt-事件與信號

事件和信號的區別在于,事件通常是由窗口系統或應用程序產生的,信號則是Qt定義或用戶自定義的。Qt為界面組件定義的信號往往通常是對事件的封裝,如QPushButton的clicked()信號可以看做對QEvent::MouseButtonRelease類事件的封裝。 在使用界面組…

【QGroundControl二次開發】二.使用QT編譯QGC(Windows)

【QGroundControl二次開發】一.開發環境準備(Windows) 二. 使用QT編譯QGC(Windows) 2.1 打開QT Creator,選擇打開項目,打開之前下載的QGC項目源碼。 編譯器選擇Desktop Qt 6.6.3 MSVC2019 64bit。 點擊運…

vue3-tree-org實現帶照片的組織架構圖

官方文檔&#xff1a;vue3-tree-org 顯示照片需要注意的地方 使用步驟 下載 npm install vue3-tree-org --save 在main.js中引入 import "vue3-tree-org/lib/vue3-tree-org.css"; import vue3TreeOrg from vue3-tree-org;app.use(vue3TreeOrg) 實現代碼 <tem…

level 6 day2 網絡基礎2

1.socket&#xff08;三種套接字&#xff1a;認真看&#xff09; 套接字就是在這個應用空間和內核空間的一個接口&#xff0c;如下圖 原始套接字可以從應用層直接訪問到網絡層&#xff0c;跳過了傳輸層&#xff0c;比如在ubtan里面直接ping 一個ip地址,他沒有經過TCP或者UDP的數…

解決TypeError: __init__() takes 1 positional argument but 2 were given

問題描述&#xff1a; 如下圖&#xff0c;在使用torch.nn.Sigmoid非線性激活時報錯 源代碼&#xff1a; class testrelu(nn.Module):def __init__(self):super().__init__()self.sigmoid Sigmoid()def forward(self, input):output self.sigmoid(input)return outputwriter…

記錄貼-芋道源碼

環境搭建 文字講解 鏈接: 芋道源碼-環境搭建&#xff08;一&#xff09;后端 鏈接: 芋道源碼-環境搭建&#xff08;二&#xff09;前端 鏈接: 基于FastGPT和芋道源碼挑戰一句話生成代碼 視頻講解 鏈接: 芋道源碼零基礎啟動教程&#xff08;上&#xff09; 鏈接: 芋道源碼零基…

Blackbox AI:你的智能編程伙伴

目錄 Blackbox AI 產品介紹 Blackbox AI 產品使用教程 Blackbox AI體驗 AI問答 代碼驗證 實時搜索 探索&代理 拓展集成 總結 Blackbox AI 產品介紹 Blackbox是專門為程序員量身定制的語言大模型&#xff0c;它針對20多種編程語言進行了特別訓練和深度優化&#xff0c;在AI代…

React 從入門到實戰 一一開發環境基礎搭建(小白篇)

React 從入門到實戰一一開發環境基礎搭建&#xff08;小白篇&#xff09; React 介紹什么是 react &#xff1f;react 主要功能react 框架特點 開發工具渲染測試 React 介紹 最近兩年&#xff0c;react 也愈來愈火熱&#xff0c;想要在里面分一杯羹&#xff0c;那肯定逃不過 r…

UFS協議

1. 名詞解釋 UFS: universal flash storage SCSI&#xff1a;小型計算機系統接口 SPC&#xff1a;SCSI Primary Commands SBC&#xff1a; SCSI Block Commands Application Client&#xff1a;作為主機中SCSI命令和任務管理功能請求源的實體。 Device Server&#xff1a;設備…

高級java每日一道面試題-2024年7月17日(java內存模型-后期完善)

面試官: 你對java內存模型了解多少? 我回答: Java內存模型&#xff08;JMM&#xff0c;Java Memory Model&#xff09;是Java虛擬機&#xff08;JVM&#xff09;規范的一部分&#xff0c;它定義了線程之間的內存可見性和并發執行時的原子性、有序性和可見性等特性。理解JMM對…