年度归档:2024年


2024-03-14 创建
2024-03-24 添加GAN,改进DDPM等内容

1. 自编码器(Autoencoder,AE )

自编码器是神经网络的一种,经过训练后能尝试将输入复制到输出,该网络由两部分构成,,如下图所示,一个是编码器,h=f(x)表示编码器;另一个是解码器 \hat x=g(h)

现代自编码器将编码器和解码器的概念推广,将其中的确定函数推广为随机映射 p_{encoder} (h|x)p_{decoder} (x|h)
为了从自编码器获取有用特征,通常使编码器的输出h维度较小,这种编码维度小于输入维度的自编码器称为欠完备自编码器,学习欠完备的表示将强制自编码器捕获训练数据中最显著的特征。
学习过程可以简单描述为最小化一个损失函数:
 \underset{f,g}{argmin} L(x,g(f(x)))
惩罚g(f(x))与x的差异,如均方误差。
如果自编码器的容量太大,那么训练执行复制任务的自编码器可能无法学习到数据集的任何有用信息。

2.去噪自编码器(Denoising autoencoder,DAE )

去噪自编码器的输入为被损坏数据(或添加噪声),并训练来预测原始没被损坏数据作为输出的自编码器。其架构图如下所示:

传统自编码的目标函数为:
L(x,g(f(x)))
其中L是一个损失函数,如 L^2 范数,惩罚g(f(x))与x的差异。如果模型被赋予过大的容量,L可能仅得g∙f学成一个恒等函数。
相反,去噪自编码最小化目标函数:
 \underset{f,g}{argmin} L(x,g(f(\tilde x )))
其中\tilde x是被某种噪声(如满足正态分布的噪声)损坏的副本,因此去噪声自编码器必须撤销这些损坏,而不是简单的复制输入。

3.VAE模型

去噪声自编码器训练过程就是强制编码器f和解码器g隐式地学习输入数据x的分布p_{data} (x)
自动编码器有多种衍生品,如带有隐变量并配有一个推断过程变分自编码器能够学习到高容量且完备的模型,进入学习到输入数据有用的结构信息(如分布信息),这些模型被训练为近似输入数据的概率分布而不是简单对输入的复制。
实际上,我们可以把自编码函数f推广到编码分布(如q_{\varphi} (z|x)),把解码器函数g推广到随机解码器
(如p_{\theta} (x|z))。如VAE模型就是如此,VAE模型从概率分布视角进行拟合,采样重参数技巧进行采样,从而使VAE生成的图像有一定的创新性。

VAE模型采用神经网络模拟概率分布,其逻辑架构如下所示:

4.GAN模型

VAE模型生成的图像质量上不过理解,这或许与底维隐空间将丢弃一些较细的信息有关。GAN模型提出了一种思路,采用一种博弈的螺旋上升的一种思路进行。它用判别器和生成器,取代一般生成器的编码器与生成器的架构。GAN的训练过程如下所示:

GAN模型采用两部分训练,因此容易导致训练不稳定,另外,训练生成器时,判别器的将被冻住,容易导致模型塌陷的情况,即生成器只要有些生成样本较好,能骗过判别器,就不会再考虑生成更多、更新的样本。为避免AE,DAE,VAE,GAN等模型的不足,人们结合这些模型的优点,提出了一种称为扩散模型的架构。

5.扩散模型

扩散模型有很多,这里主要介绍DDPM(Denoising diffusion probabilistic models)为典型代表。DDPM可以认为是AE的高级版本,其利用了加噪、利用学习数据分布、使用重参数技巧、利用神经网络拟合概率分布、使用变分下界等重要思想。DDPM的架构图如下:

6.如何训练DDPM?

使用U-Net网络结构预测高斯噪音\epsilon_\theta (x_t,t)

7.改进DDPM

对于扩散模型来说,需要设置较长的扩散步数才能得到好的效果,但这导致了生成样本的速度较慢,比如扩散步数T为1000的话,那么生成一个样本(从噪声到数据,从t=T到t=0)就要模型依次(而不能平行)推理1000次,这使用生成过程非常缓慢。针对这一问题去噪扩散隐式模型(Denoising Diffusion Implicit Models,DDIM)提出一种更高效(快几十倍)的采样方法,生成图像时使用更少的采样步数,却能获得相同甚至更好的性能。DDIM和DDPM有相同的训练目标,但是它不再限制扩散过程必须是一个马尔卡夫链,这使得DDIM可以采用更小的采样步数来加速生成过程。
设计了两种方法来采样子序列方法,分别是:
线性法(Linear):采用线性的序列;T_i=[C*i]
平方法(Quadratic):采样二次方的序列;T_i=[C*i^2]
其中C是一个定数,其设置原则是使T[-1]接近T。下图为T=[1,3]的简单示例:

改进效果如何?
对比DDPM与DDIM的效果比较:

上表为不同的η下以及不同采样步数下的对比结果,可以看到DDIM(η=0)在较短的步数下就能得到比较好的效果,媲美DDPM(η=1)的生成效果。如果设置为50,那么相比原来的生成过程就可以加速20倍。

8.Sora的核心架构DiTs

DiTs的主要目的就是用Transformer架构替换DDPM中U-Net主干网络。DiTs架构如下:

DiT基于Vision Transformer(ViT)架构,该架构在块(patches)序列上运行。DiT保留了ViTs的许多最佳实践。

1.强化学习难入门的主要原因

目前强化学习运用非常广泛,如在大语言模型,自动化,游戏等领域都有广泛的应用,但想要入门,却不简单,不少人看了不少视频或博客或书,但如果要总结一下强化学习的核心内容,还是感到一头雾水。这好像是一个普通现象,个人觉得主要是因为:
(1)强化学习涉及很多新知识、新概念。
(2)强化学习涉及面较广
(3)强化学习中数学成分较多

2.如何破解强化学习难入门问题

这里提供个人的一点,供大家参考。

(1)找准着力点(或入口),这里基本算法(可参考Leecode网址)我觉得是一个较好着力点。
(2)从着力点开始,找到新旧知识的联系,从宏观上把握强化学习算法,这里我提供几个图,供大家参考。
(3)把握各算法之间的递进关系
(4)循序渐进,由宏观把握,再进入细节,甚至代码实现,强化学习的多种应用(如在在游戏方法,在GPT方法等到),然后再深入浅出。

3.强化学习几个重要概念的简单解释

(1)马尔科夫链
简单来说:随机过程+马尔科夫性=马尔科夫过程
马尔可夫过程(Markov Process)指具有马尔可夫性质的随机过程,也被称为马尔可夫链(Markov chain),【其中马尔可夫性类似于两两相扣的铁链,虽然是两两相扣,却能构成一个长长的铁链,把历史和现在连接在一起。】
(2)马尔可夫奖励过程
简单来说:马尔科夫过程+奖励=马尔科夫奖励过程
(3)回报
简单来说:回报就是所有奖励的折扣之和
(4)马尔科夫决策过程
简单来说:马尔科夫决策过程=马尔科夫过程+动作(由决策产生)
(5)策略
策略就是选择动作的概率。
(6)状态价值函数
状态价值函数就是策略获得的回报期望。
(7)同步策略与异步策略
我们称采样数据的策略为行为策略(behavior policy),称用这些数据来更新的策略为目标策略(target policy)。在同步策略(on-policy)(又称为在线策略)算法表示行为策略和目标策略是同一个策略,像SARSA、A2C等算法属于使用同步策略的算法。
而异步策略(off-policy)(又称为离线策略)算法表示行为策略和目标策略不是同一个策略。许多异步策略算法使用重放缓冲区来存储经验,并从重放缓冲区中采样数据以训练模型,Q-Learning、DQL等属于异步策略算法.
(8)自举
自举就是用估计进行估计。

4.由基本算法到强化学习算法

5.蒙特卡洛算法、动态规划算法、时序差分算法之间的异同

6.蒙特卡洛算法、动态规划算法、时序差分算法等算法的使用示例

7.由基于价值函数到基于策略的过渡

提供两个强化学习入门较优化的网址:
动手学强化学习
王树森老师讲解强化学习