大模型圖像處理技術之擴散模型——Diffusion Model 原創
?“ 大模型的原理就是通過編程實現的某種數學算法模型,把輸入數據進行處理,最后再輸出的一個過程 ”
這段時間的文章中,一直都是在說大模型的應用,也就是怎么基于大模型開發上層應用,以及在開發過程中遇到的一些問題;但同樣在文章中也說過從應用入手,然后再了解其實現原理,這就是知其然,再知其所以然。
最近一直在搞圖片生成和視頻生成方面的應用,但使用的不是第三方的接口,就是現有的開源模型,雖然知道它們能做些什么,但卻不知道到底怎么做到的,因此今天就來了解一下圖像處理中一個很經典模型——擴散模型。
擴散模型
下面我將從幾個方面簡單描述一下擴散模型,可能不一定對,就當作是自己的學習筆記了。
首先,我們先從概念的方面了解一下什么是擴散模型;擴散模型是圖像生成模型的一種,有別于此前AI領域大名鼎鼎的GAN,VAE等算法,擴散模型另辟蹊徑,其主要思想是一種先對圖像增加噪聲,再逐步去噪的過程,其中如何去噪還原圖像是算法的核心部分;而它的最終算法能夠從一張隨機的噪聲圖像中生成圖像。
上面這段話來源于網絡,也不知道對不對,準不準確;但這個并不重要,首先從表面上看起來好像還是很高大上的。
為什么說擴散模型的概念不重要?
其實這是一個個人的學習方法,在學生時代老師講到一個新的知識點,第一件事就是介紹定義或者說概念,但說實話記不住,也聽不懂,基本上沒啥用。
隨著自己學習的深入,以及對其本身對理解,自己慢慢就可以下一個定義了;還有一部分原因就是,有些人看概念會鉆牛角尖;比如說為什么是增加噪聲,是不是還有其它的方式,其它的方式又是什么等等。
而且,從網絡上的資料來看,擴散模型最主要的一點就是噪聲,不論是去噪聲還是加噪聲;只不過怎么去噪聲加噪聲,就有不同的實現方式及算法;而說的最多的就是基于概率學,對圖像噪聲進行處理。
特別喜歡之前在網上看的技術學習視頻,其中有一個培訓機構的某位老師的口頭禪就是——任何天上飛的理念都會有落地的實現。
擴散模型是一種圖像處理的思想,而噪聲是其主要的表現形式,也是圖像處理領域中的一個重要節點;而關于怎么處理噪聲就有多種不同的實現方式, 比如說過濾。
擴散模型的組成
擴散模型由正向過程——擴散過程和反向過程——逆擴散過程組成,其中輸入數據逐漸被噪聲化,然后噪聲被轉換回源目標分布的樣本。
可能有些人看到上面這段話又有點懵逼了,既然擴散了為什么又要逆擴散,數據噪聲化又是什么意思?
首先我們來了解一下什么是圖像的噪聲?
了解過成像原理的人應該都知道,所謂的圖像其實就是無數個點組成,這個點就是像素點,圖像不同的位置點的密集度不一樣,因此就呈現了圖像。
而圖像噪聲就是圖片中一些干擾信息,比如說有的手機拍攝的照片不清晰,就是像素點不夠密集,還有些照片特別模糊就是因為圖片噪聲太多,影響到了原有圖片的效果。
而擴散模型的原理就是,使用大量的訓練數據,通過去噪聲和增加噪聲的方式,讓模型學習去噪和增加噪聲的方式方法。
然后訓練完成之后,就可以根據“經驗”,去對未知的圖像進行增加噪聲和去噪處理,然后生成一個新的圖像。
因此,擴散模型的本質就是,通過連續添加高斯噪聲來破壞訓練數據,然后通過反轉這個噪聲的過程來恢復數據。
訓練結束后,可以使用擴散模型將隨機采樣的噪聲傳入模型中,通過學習去噪過程來生成數據。
而在具體到算法實現,就是通過馬爾可夫鏈等基于概率與統計模型,實現了解過去,明白現在,預測未來的過程。
馬爾可夫鏈是一種狀態空間中經過從一個狀態到另一個狀態到隨機過程。
事實上前面說了這么多,也僅僅只是了解擴散模型的基本實現原理,但具體應該怎么實現,馬爾可夫鏈的實現過程,比如狀態轉移是怎么實現的,其數學模型是什么樣的,以及基于編程實現的概率統計等。
在此之前,一直不明白大模型算法的原理,到今天才明白,所謂的大模型算法,其實就是使用數學理論,通過編程的手段來實現,然后來計算或描述一個具體的任務過程。
現在如果再讓我講大模型的原理,所謂的大模型就是通過讀取某種數據集,通過某種算法進行處理——模型架構(比如機器學習算法,Transformer架構等),得到數據集之間的某種數學關系,并記錄下來——訓練之后的模型參數,然后大模型以后就可以根據這種關系,去分析和處理新的未知數據。
?
本文轉載自公眾號AI探索時代 作者:DFires
