提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
记录一下学习AIGC,参考链接: 爆火的AIGC到底是什么
提示:以下是本篇文章正文内容,下面案例可供参考
一、stable diffusion
1.1 diffusion model
正向扩散:
x t = α ˉ x 0 + 1 − α ˉ t ε x_t=\sqrt{\bar{\alpha}}x_0+\sqrt{1-\bar{\alpha}_t}\varepsilon xt=αˉx0+1−αˉtε
逆向扩散:计算太复杂,训练网络来模拟
训练过程:为每个图像随机选择时间步长 t ,将高斯噪声应用于图像,将时间步长转换为嵌入向量。
训练步骤:随机选择一个时间步长编码,通过扩散公式向图像中添加噪声,将添加噪声后的图片输入,训练U-Net,比较预测的噪声和实际的差距,重复步骤。
采样
采样就是把噪声图像还原。
步骤:
- 采样一个高斯噪声,T确定。
- 利用训练的 U-Net 预测图像的噪声,利用如下公式一步一步推导出原图像:
x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ t ε θ ( x t , t ) ) + β t ε x_{t-1}=\frac{1}{\sqrt{\alpha _t}}\left( x_t-\frac{1-\alpha _t}{\sqrt{1-\bar{\alpha}_t}}\varepsilon _{\theta}\left( x_t,t \right) \right) +\sqrt{\beta _t}\varepsilon xt−1=αt1(xt−1−αˉt1−αtεθ(xt,t))+βtε
- 输出去噪图像
这样一步一步太慢,所以有了stable diffusion。
1.2 stable diffusion
- 通过使用训练过的编码器 E ,压缩图像。
- 通过使用训练过的解码器 D ,还原图像。
将图像压缩以后,在潜在空间中进行正向和反向扩散。
stable diffusion可以根据文本生成图像。
- 先用语言模型(Transformer)将文本转换为嵌入向量,通过multi-Attention机制映射到U-net。
训练
和上面的训练过程差不多,不一样的地方:
- 输入的是潜在数据不是原图像。
- 添加了个条件输入 τ θ ( y ) \tau_{\theta}(y) τθ(y)(这个就是语言模型中用来把文本转换为嵌入的)。
总结
Stable Diffusion 要比 Diffusion Model 快很多。
二、Generative AI
2.1 单模态
只能接受单一类型的输入,产生对应类型的输出。
- 生成式语言模型:GPT-3
- 生成式视觉模型:GAN、VAE
2.2多模态
2.2.1 视觉语言Encoder:concatenated encoder(级联编码器)、cross-aligned encoder(交叉对齐编码器)
- concatenated encoder:将两个不同模态的模型连接起来
- cross-aligned encoder:使用tow-tower结构,各自单独学习,然后对两个模态的特征进行联合表达
文本音频生成
文本代码生成
三、回顾一下Transformer
3.1 Attention
- 计算相似性
S i m i = Q u e r y i ⋅ K e y i Sim_i=Query_i\cdot Key_i Simi=Queryi⋅Keyi - 计算
a
i
a_i
ai
a i = s o f t m a x ( S i m i ) = e S i m i ∑ j = 1 L x e S i m j a_i=softmax(Sim_i)=\frac{e^{Sim_i}}{\sum_{j=1}^{L_x}{e^{Sim_j}}} ai=softmax(Simi)=∑j=1LxeSimjeSimi - 计算
A
t
t
e
n
t
i
o
n
Attention
Attention
A t t e n t i o n = ∑ i = 1 L x a i V a l u e i ( K e y i = V a l u e i = h i ) Attention=\sum_{i=1}^{L_x}a_iValue_i (Key_i=Value_i=h_i) Attention=i=1∑LxaiValuei(Keyi=Valuei=hi)
h i h_i hi是Encoder里面的隐含层。
3.2 self-Attention
和上面一样, Q u e r y = K e y Query=Key Query=Key。