作者|苗正
Sora才剛發表沒多久,Stable AI就發表了Stable Diffusion 3。對於使用人工智慧創意設計的人來說,無疑是過了大年。那麼這篇文章就專門為這些用戶準備,用更直白的話講述Stable Diffusion 3的兩大特色“擴散transformers模型”以及“流匹配”,幫助你在模型發布後更好的使用它來創作。
擴散transformer模型(diffusion transformers),我們下文就簡稱它為DiTs。那看名字你也清楚了,這是一個基於transformer架構的影像潛變數擴散模型。如果你讀過矽星人Pro的文章《揭秘Sora:用大語言模型的方法理解視頻,實現了對物理世界的“湧現”》,那麼你對於接下來的內容來說已經算是“課代表”級別的了。 DiTs跟Sora一樣,它也使用了「塊」(patches)這個概念,不過由於DiTs是用來生成圖片的,它不需要像Sora那樣保持不同幀圖片之間的邏輯關聯,所以它不必生成時間和空間的時空塊。
Stable diffusion 3生成
對於DiTs來說,它和4、5年前在電腦視覺領域掀起一場腥風血雨的Vision Transformer (ViT) 是相似的,圖像會被DiTs被分割成多個patches,並嵌入到連續向量空間中,形成序列輸入供transformer處理。不過這裡要注意,因為DiTs是有業務在身的,所以對於條件圖像生成任務,DiTs就需要接收並融合外部條件信息,例如類別標籤或文本描述。通常透過提供額外的輸入標記或跨注意力機制來實現,使得模型能夠根據給定的條件資訊指導生成過程。
那麼當這個塊抵達DiTs內部的時候呢,他就可以被DiTs內部的DiT block來加工成需要的內容了。 DiT block是DiTs最核心的一環,它是一種設計用於擴散模型的特殊transformer結構,能夠處理影像和條件資訊。一般來說,block本身翻譯過來就是塊,但為了跟patches做區分,所以這裡我直接用block。
Stable diffusion 3生成
DiT block又分為三個小block:交叉注意力、adaLN、adaLN-Zero。交叉注意力指的是多頭自註意力層之後添加了一個額外的多頭交叉注意力層,它的作用是利用條件信息來指導圖像生成,使生成的圖片更符合提示詞,不過代價是增加了大約15%的計算量。
adaLN中的LN,指的是透過規範化每一層神經網路內部單元的輸出,以減少內部協變量偏移(covariate shift)的問題,進而改善模型訓練過程中的收斂速度和效能。那adaLN就是標準層歸一化的擴展,它允許層歸一化的參數根據輸入資料或附加條件資訊動態調整。它就和汽車那個懸吊一樣,是用來增加模型穩定性和適應性的。
Stable diffusion 3生成
接下來,Stable AI在adaLN DiT block的基礎上進行了改進,除了回歸γ和β之外,還回歸維度級的縮放參數α,並在DiT block內的任何殘差連接之前立即應用這些參數。而這一個block就是adaLN-Zero,這樣做的目的是為了模仿殘差網路中的有益初始化策略,以促進模型的有效訓練和最佳化。
經過DiT block後,token序列就會解碼為輸出雜訊預測和輸出對角協方差預測。透過標準線性解碼器,這兩個預測結果的大小和輸入影像的空間維度相同。最後是將這些解碼後的令牌依照它們原有的空間佈局重新排列,從而得到預測的雜訊值和協方差值。
Stable diffusion 3生成
第二章,流匹配(Flow Matching,下文簡稱FM)。根據Stable AI的說法,是一種高效的、無需模擬的CNF模型訓練方法,允許利用通用機率路徑監督CNF訓練過程。特別重要的是,FM打破了擴散模型以外的CNF可擴展訓練障礙,無需深入理解擴散過程即可直接操作機率路徑,從而繞過了傳統訓練中的難題。
所謂CNF,就是Continuous Normalizing Flows,連續歸一化流。這是一種深度學習中的機率模型和生成模型技術。在CNF中,透過一系列可逆且連續的變換將簡單的機率分佈轉換為複雜的、高維度資料的機率分佈。這些變換通常由一個神經網路來參數化,使得原始隨機變數經過連續變換後能夠模擬目標資料分佈。翻譯成大白話,CNF像是搖骰子那樣產生資料的。
Stable diffusion 3生成
但CNF在實際操作上需要大量的運算資源和時間,於是Stable AI就尋思了,那能不能又一個結果只要差不多和CNF一樣就行,但是流程要穩定,計算量要低的方法?於是FM就誕生了,FM的本質是一個用於訓練CNF模型以適應並模擬給定資料分佈演化過程的技術,即使我們並不事先知道這個分佈的具體數學表達式或對應的生成向量場。透過優化FM目標函數,也可以逐步讓模型學習到能夠產生與真實資料分佈近似的機率分佈的向量場。
相較於CNF而言,FM應該算是一種最佳化方法,它的目標是訓練CNF模型產生的向量場與理想的目標機率路徑上的向量場盡可能接近。
Stable diffusion 3生成
看完了Stable Diffusion 3的兩大核心技術特性就會發現,其實它和Sora非常接近。兩個模型都是transformer模型(stable diffusion先前採用的是U-Net)、都使用塊、都有著劃時代的穩定性和優化,而且出生日期還這麼近,說他們有血緣關係,我認為並不過分。
不過「兄弟倆」有一個根源性的不同,那就是Sora閉源,Stable Diffusion 3開源。事實上,Midjourney也好,DALL·E也好,他們都是閉源的,只有Stable Diffusion是開源的。如果你關注開源人工智慧,那麼你一定發現了,開源社群陷入困境已經有很長一段時間了,沒有明顯的突破,很多人都對此失去信心。 Stable Diffusion 2和Stable Diffusion XL僅改進了生成圖片的美觀性,而Stable Diffusion 1.5已經可以做到這一點。看到Stable Diffusion 3的革命性改進,能讓許多人開源社群的開發者重燃信心。
Stable diffusion 3生成
再說個刺激的,Stable AI的CEO默罕默德艾馬德莫斯塔克(মোহম্মদ ইমাদ মোশতাক)在推特中說到,儘管Stable AI在這個領域也少了點人工智慧100倍,但是Stable Diffusion 3架構已經可以接受除了影片和影像以外的內容了,不過目前還不能公佈太多。
你說圖片和影片我還能理解,可啥叫「以外」的內容?其實我能想到的那就是音頻了,透過一段聲音來產生圖片。讓人摸不著頭腦,不過一旦Stable AI放出最新的研究成果,我們一定是第一時間拿來解讀。
Stable diffusion 3生成