论文信息
论文标题
Continual Diffision: Continual Customization of Text-to-Image Diffusion with C-LoRA
发表刊物
arXiv2023
作者团队
三星(美国)、佐治亚理工大学
关键词
Continual Learing, Diffusion Model, Text-to-Image, LoRA
文章结构
引言
研究动机
解决文生图场景中的灾难性遗忘问题,即模型学习了新“概念”但降低了旧“概念”的生成能力。值得一提的是,这里的“概念”是一种抽象的对某一类事物的概括, 例如本文讨论较多的人脸和地标建筑概念。由于本文着重学习C-LoRA的思想,对扩散模型和文生图的技术细节和实验环节将不是重点。
任务背景
- P1介绍文生图场景,引出该场景中的持续学习场景。
- P2介绍Continual Diffusion,即text2image+few-shot+CL;还介绍了解决CD问题的一般方法(复习数据重新训练)及其缺点;
- P3介绍本文C-LoRA: CustomDiffusion->C-LoRA
- 将cross attention layer的固有框架应用low-rank的方式;
- 利用self-regularization机制保存过去概念的知识;
- 使用custom tokenization 策略减少自定义对象的word(之前工作也常用)并且初始化为随机embeddings(之前工作是arbitrary embeddings)
- P4是对比和总结。 传统task-specific adapters或定制化tokens/words不是很令人满意的方式,因为前者其实是MOE,即多个专家模型的结合,例如每个“概念”对应一个,但解决多个“概念”的生成就会有问题;而后者学习到的是更细粒度的特征,例如某个人特定的脸部特征,而不是人脸这样一个抽象的概念。
技术背景
Conditional Image Generation Models
GAN, VAE, 偏向Diffsuion Models (U-Net)
Continual Learning
Prompt系列工作更多,偏向CV;
PEFT
偏向LoRA;
创新方法
下面,我们主要根据模型结构图来具体理解本文的方法。
- 左侧是方法主体结构,右侧是模块的详细解释。主图中,绿色部分是扩散模型,其中的黄色部分是U-Net网络,再U-Net中的浅绿色部分是交叉注意力机制层,固定Q不加LoRA,KV是可以加LoRA的。灰色表示其他模块,本文不关心,用灰色隐去。
- 从数据流顺序来看,模型输入为Concept sequence概念序列,即不同类型的图片,本文为不同特征的人脸图像。Prompt是V的图像,V是自定义token,当第t个序列来临时,得到
V
t
∗
V_t^*
Vt∗(橘黄色),此时是不能访问
V
t
−
1
∗
V_{t-1}^*
Vt−1∗(蓝色)。将Prompt输入Text Encoder后编码得到KV信息。KV中加入LoRA块,保持模型原参数
W
i
n
i
t
W_{init}
Winit不变,每个LoRA块对应一个A和B的weight deltas,当第t个LoRA来临时前面t-1个也是固定住的。在下面公式中,
W
t
K
,
V
\boldsymbol{W}_{t}^{K,V}
WtK,V表示当前概念的KV参数,
W
t
−
1
K
,
V
\boldsymbol{W}_{t-1}^{K,V}
Wt−1K,V表示上一概念的KV参数,则当前概念KV参数=上一概念KV参数+当前概念的LoRA参数。而上一概念的KV参数=上上一概念KV参数+上一概念的LoRA参数,通过t次迭代得到当前概念KV参数=KV初始化参数+t个概念对应的LoRA参数;
W t K , V = W t − 1 K , V + A t K , V B t K , V = W i n i t K , V + [ ∑ t ′ = 1 t − 1 A t ′ K , V B t ′ K , V ] + A t K , V B t K , V \begin{aligned} \boldsymbol{W}_{t}^{K,V}& =\boldsymbol{W}_{t-1}^{K,V}+\boldsymbol{A}_{t}^{K,V}\boldsymbol{B}_{t}^{K,V} \\ &=\boldsymbol{W}_{init}^{K,V}+\left[\sum_{t^{\prime}=1}^{t\boldsymbol{-}1}\boldsymbol{A}_{t^{\prime}}^{K,V}\boldsymbol{B}_{t^{\prime}}^{K,V}\right]+\boldsymbol{A}_{t}^{K,V}\boldsymbol{B}_{t}^{K,V} \end{aligned} WtK,V=Wt−1K,V+AtK,VBtK,V=WinitK,V+[t′=1∑t−1At′K,VBt′K,V]+AtK,VBtK,V - 这里用了self-regularization机制去缓解CF。
L f o r g e t = ∣ ∣ [ ∑ t ′ = 1 t − 1 A t ′ K , V B t ′ K , V ] ⊙ A t K , V B t K , V ∣ ∣ 2 2 \mathcal{L}_{forget}=||\left[\sum_{t'=1}^{t-1}A_{t'}^{K,V}B_{t'}^{K,V}\right]\odot A_{t}^{K,V}B_{t}^{K,V}||_2^2 Lforget=∣∣[t′=1∑t−1At′K,VBt′K,V]⊙AtK,VBtK,V∣∣22
即前面t-1个LoRA块加起来后的结果与最后一个t对应的LoRA块作Hadamard product运算(对应位置相乘),这种简单而直观的惩罚以高效率和高效率“self-regularization”了之后到来的LoRA。由于A和B是低秩矩阵,因此只产生很小的训练和存储成本。如果没有LoRA的参数效率,这种针对所有过去任务的正则化是不可能的。思考:这里为什么是前面加起来与后面作乘积呢?有什么理论解释吗? - 这里为什么只对U-Net中的cross-attention层做微调,是因为Kumari et al. show that the cross-attention parameters of the U-Net are
most sensitive to change during Stable Diffusion customization. 而为什么只对KV层加LoRA是因为KV是输入引导条件的文本特征。
实验环节
略;
阅读思考
C-LoRA为什么是前面LoRA加起来与当前LoRA作对应位置乘积呢?有什么理论解释吗?