年度归档:2024年

有关AIGC的三个问题

1.如何科学表示机器学习的目标?什么样表示效率更高?如何学习表示?

2.生成模型大都采样编码器-解码器的架构(如AE,VAE,Transformer、Diffusion等等),其优势和不足是什么?

编码器-解码器架构(Encoder-Decoder Architecture)在生成模型中得到了广泛的应用,尤其在自然语言处理(NLP)和序列到序列(Seq2Seq)任务中。这种架构通常由两部分组成:编码器负责将输入序列编码成固定大小的向量,解码器则负责根据这个向量生成输出序列。
(1)优势:
•通用性强:
编码器-解码器架构能够处理不同长度的输入和输出序列,使其在各种序列生成任务中都具有通用性。
•结构灵活:
编码器和解码器可以使用不同的神经网络结构来实现,如循环神经网络(RNN)、长短期记忆网络(LSTM)或Transformer等,这使得该架构能够根据具体任务需求进行定制和优化。
•捕捉序列依赖关系:
编码器能够捕捉输入序列中的依赖关系,并将其编码成固定大小的向量,而解码器则能够利用这个向量生成具有依赖关系的输出序列。编码器-解码器结构通常能够很好地重建输入数据,有利于学习数据的表示形式。
•可解释性强:
编码器产生的潜在表示通常可以用于解释模型的决策过程。
(2)不足:
•信息损失:
将整个输入序列编码成固定大小的向量可能会导致信息损失,特别是当输入序列较长或包含复杂结构时。这种信息损失可能会影响解码器生成准确输出的能力。
•长序列生成问题:
在解码过程中,随着生成序列长度的增加,错误可能会逐渐累积,导致生成的序列质量下降。这尤其是在使用RNN或LSTM等结构时更为明显。
•缺乏并行性:
在训练过程中,编码器和解码器通常需要依次处理输入和输出序列,这使得模型训练难以并行化,从而限制了训练速度的提升。
为了克服这些不足,研究者们提出了一系列改进方法,如注意力机制(Attention Mechanism)、Transformer模型等。这些方法在一定程度上提高了编码器-解码器架构的性能和效率,使其在各种生成任务中取得了更好的表现。

3.Transformer模型具有涌现潜力的几个关键技术是什么?

•自注意力机制(Self-Attention):
Transformer 中的自注意力机制使模型能够在不同位置之间建立关联,即同时考虑输入序列中不同位置的信息,有效地捕捉长距离依赖关系。
•多头自注意力机制:
这是Transformer模型的核心技术之一。该机制通过多个不同的注意力头,从不同的角度对输入序列进行关注,从而得到对输入序列的抽象表示。每个注意力头都由一个线性变换和一个点积注意力机制组成。这种机制有助于模型在不同位置捕获重要的信息,并且能够自动地捕捉输入序列中的长距离依赖关系。通过将多个注意力头的结果拼接起来,可以得到一个高维的表示向量,该向量可以被用于生成解码器的输出序列。
•位置编码:
由于Transformer模型没有明确的语法结构,无法像传统的语言模型那样利用上下文信息来预测当前词。为了解决这个问题,Transformer模型引入了位置编码,将每个单词在序列中的位置信息编码为一种特殊的向量。这种编码有助于模型更好地理解输入序列中的词语顺序和语义信息,从而使得模型可以更好地处理序列数据。
•残差连接和层归一化:
为了缓解深度神经网络中的梯度消失问题,Transformer模型在每个层之后添加了残差连接。此外,层归一化也可以帮助模型更好地学习和泛化。这些技术有效地提高了模型的长期记忆能力,使得模型在处理长序列时能够保留更多的上下文信息。
•基于自回归训练(Autoregressive Training)和无监督预训练(Unsupervised Pre-training):
Transformer 模型通常通过自回归训练或无监督预训练方法进行训练,有助于提升模型的泛化能力和性能。
这些关键技术共同构成了 Transformer 模型的核心思想和成功之处,使其在自然语言处理领域获得了革命性的突破,并在其他序列建模任务中展现了强大的潜力。


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.由基于价值函数到基于策略的过渡

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