【AI繪畫】LoRA訓(xùn)練與正則化的真相:Dreambooth底層原理
開頭提示:本教程并非實(shí)操教程,也并非入門教程,而是高階教程。
關(guān)于Dreambooth,想必大家都已經(jīng)知道了。LoRA和Dreambooth的關(guān)系又是什么?為什么這兩個東西都有正則化?
簡單來說,目前微調(diào)AI繪畫模型是這樣的:

這兩種操作都是在這個視頻里講到的:

區(qū)別只有一個:正則化圖像
沒有正則化圖像,他就叫直接微調(diào),有正則化圖像,他才叫Dreambooth。
那LoRA又在哪里?LoRA的全稱是:LoRA: Low-Rank Adaptation of Large Language Models、他是為了解決大語言模型太大了(以億計(jì)的參數(shù))才出現(xiàn)的,AI繪畫是拿過來借用的。
LoRA,他只是一種為了簡化微調(diào)超級大模型需要巨多算力、傳大模型麻煩而產(chǎn)生的算法,本質(zhì)上,還是上面兩種微調(diào)方法:
直接微調(diào)、Dreambooth方法。

那么,問題就回來了:所有LoRA訓(xùn)練的問題、參數(shù)調(diào)整,都應(yīng)該直接歸結(jié)到本身的訓(xùn)練大模型的問題上。他們是完全一樣的,只是加了新的算法LoRA
首先需要明確一點(diǎn):下文的一切都是在 “微調(diào)” 這個語境下的。而且是非常的 “微”,可能訓(xùn)練素材也就幾十張。
再繼續(xù):為什么需要正則化圖像?沒有行不行?
行。
如果你訓(xùn)練模型,只針對一個概念訓(xùn)練,那么沒有正則化圖像沒有任何問題,非常的nice。
如果你練多個概念,那就出問題了
這是一只波奇醬。你拿這個作為訓(xùn)練,如果不帶class image,你tag打了個 1girl,那么本身的1girl就會被 “污染”,也就是說,整個模型中,1girl都會被染上波奇醬的一些特征,生成不了其他人了。這也是經(jīng)典的過擬合現(xiàn)象

這通常都是因?yàn)橛?xùn)練集太小,也就是之前說的過于“微”的問題。二三十張的訓(xùn)練集,會將整個模型都“帶跑”。這就可以總結(jié)為小訓(xùn)練集帶來的下方兩個問題:
下面部分來自于我翻譯修改的Dreambooth論文 [1]
問題 1:過度擬合 由于訓(xùn)練圖像集非常小,微調(diào)大模型可能會過擬合給定輸入圖像中主體的上下文和外觀(例如姿勢)
下方這張圖顯示了一些經(jīng)過簡單微調(diào)的示例圖像,我們清楚地看到目標(biāo)狗的外觀和環(huán)境都與訓(xùn)練圖像過擬合。

有許多技術(shù)可用于解決這些問題,例如正則化或選擇性地微調(diào)模型的某些部分。然而并不確定模型的哪些部分需要凍結(jié)(不修改)才能獲得良好的保真度和語義修改靈活性。
根據(jù)經(jīng)驗(yàn),通過對模型的所有層進(jìn)行微調(diào),可得到最好的保真度。然而“所有層”,就包括了文本編碼器,這就會引起語言漂移的問題。
問題 2:語言漂移 語言漂移現(xiàn)象一直是語言模型文獻(xiàn)中觀察到的問題,其中語言模型在大型文本語料庫上進(jìn)行預(yù)訓(xùn)練,然后針對特定任務(wù)進(jìn)行微調(diào)隨著它學(xué)習(xí)改進(jìn)目標(biāo)任務(wù),逐漸失去語言的句法和語義知識。
據(jù)我們所知,我們是第一個發(fā)現(xiàn)影響擴(kuò)散模型的類似現(xiàn)象的人。由于我們的文本提示同時包含 [identifier] 和 [class noun],當(dāng)擴(kuò)散模型在一小組主題圖像上進(jìn)行微調(diào)時,我們觀察到它會慢慢忘記如何生成同一類的主題并逐漸忘記特定于class的先驗(yàn)知識,并且不能生成相關(guān)類的不同實(shí)例。

上圖中間部分顯示了在 “特定狗” 圖像上對模型進(jìn)行微調(diào)后生成的“狗”圖像的一些示例。結(jié)果清楚地表明,這個模型由于這次的微調(diào)失去了生成一般的狗圖像的能力。
這也是為何要引入正則化的概念
Prior-Preservation Loss 先驗(yàn)損失(我瞎翻譯的我也不知道這玩意中文是啥)
Dreambooth這篇論文提出了一個方法,通過自己先生成一些圖像(也是我教程里的class image),來保留先驗(yàn)損失權(quán)重,通過此方法來解決過擬合與語言漂移問題。用模型自己生成的樣本來監(jiān)督模型,以便在 few-shot(小樣本,可以理解為幾張圖) 微調(diào)開始后保留先驗(yàn)知識。
簡單來說:不要學(xué)了新的忘了舊的

于是引入了先驗(yàn)損失的loss公式就變成了上面這個樣子。相信大家也看不懂,看得懂的自己看論文吧我就不解釋了
通過這種Dreambooth方法,就可以得到這么一個東西:
輸入訓(xùn)練集?+ 提示詞 [v] dog,然后還有用模型本身自己生成的一堆dog圖像,訓(xùn)練完成后得到了一個特殊標(biāo)記符:[v]
通過這個特殊標(biāo)記符就把這次訓(xùn)練的dog和其他本身學(xué)過的dog分開了!

大概就是這樣,后續(xù)有心情在寫,寫累了,估計(jì)也沒啥人看,看點(diǎn)贊投幣三連的多不多再決定更新
點(diǎn)贊!投幣!三連?。。。。?!
引用
[1] Ruiz, Nataniel, et al. "Dreambooth: Fine tuning text-to-image diffusion models for subject-driven generation."?arXiv preprint arXiv:2208.12242?(2022).