自动编码器和生成模型的理论最近得到了认真的发展,但是有很多著作致力于如何在识别问题中使用它们。 同时,自动编码器具有获取隐藏参数数据模型的属性以及由此产生的数学结果,使其有可能与贝叶斯决策方法相关联。
本文提出了一种原始的数学仪器“一组具有公共潜空间的自动编码器”,它使您可以从输入数据中提取抽象概念,并演示“一次学习”的能力。 此外,它还可用于克服基于多层网络和“深度学习”方法的现代机器学习算法的许多基本问题。
背景知识
使用错误的反向传播机制进行训练的人工神经网络在识别和参数估计的许多问题中几乎替代了其他方法。 但是它们有很多缺点,如果不认真修改该方法,似乎无法消除这些缺点:
- 输入在训练样本中找不到的数据极不稳定(包括在对抗攻击中)

- 很难评估问题的根源并在其中一个级别上进行本地再培训(您只需补充培训样本并进行再培训),即 黑匣子问题
- 没有提供对相同输入信息进行不同解释的可能性,忽略了观测数据的统计性质

我致力于解决应用问题,并依靠许多现有的工作,提出了一种与现有工作明显不同的方法,消除了它们的许多缺点,并且适用于解决机器学习各个领域中的应用问题。
自动编码器,用于估计分布密度
在决策理论中,随机变量的分布密度(或分布函数)占据了非常重要的位置。 有必要对分布函数进行估计以计算后验风险。
事实证明,自动编码器对于评估分布函数非常自然。 可以解释如下:训练数据集由其分布的密度确定。 输入空间中局部点周围的训练示例的密度越高,自动编码器在空间中此位置重构输入向量的效果就越好。 此外,在自动编码器内部有一个潜在表示输入数据的向量(通常为低维),如果数据在潜在空间中投影到以前未参与训练的区域中,则训练样本中没有类似的东西。
有一些封闭且有些孤立的作品:
- Alain,G.和Bengio,Y。正规化自动编码器从数据生成分布中学到了什么。 2013。
- Kamyshanska,H.,2013年。关于自动编码器评分
- Daniel Jiwoong Im,Mohamed Ishmael Belghazi,Roland Memisevic。 2016.不受限制的自动编码器的保守性
第一种证明自动编码器的去噪重构结果与输入数据的概率密度函数有关,但是对自动编码器施加了许多限制。 第二个包含对自动编码器的足够要求-编码器和解码器的权重必须“连接”,即 编码器层的权重矩阵是解码器的转置矩阵。 在最后的工作中,更充分地研究了自动编码器与概率密度相关联的必要条件和充分条件。
这些工作严格证实了自动编码器与训练数据分布密度之间关系的理论基础。 在应用问题中,通常不需要如此认真的分析,因此,下面将给出略有不同的方法,该方法将使我们能够估计由于先前受过训练的自动编码器而导致的输入数据的概率密度函数。
MNIST示例
在更早的工作中,提出了经验思想,即对于分类问题,可以通过类的数量来训练自动编码器(将它们仅在相应的子样本上进行教学)。 并选择类别和自动编码器作为答案,该类和自动编码器在输入图像和重建图像之间提供最小的差异。 检查MNIST并不困难:训练10个自动编码器(每个数字),计算精度,然后与分类器的类似多层模型进行比较。
用于在git上进行培训和测试的脚本 (train_ae.py,calc_codes.py,calc_acc.py)
体系结构和权数:

自动编码器:98.6%
多层感知器分类器:98.4%
细心的读者会发现,自动编码器的重量(按其数量)比原来多10倍。 但是,多层感知器中隐藏层的权重增加10倍只会使统计数据恶化。
当然,卷积网络可以提供更高的准确性,但是任务是比较所有其他条件相同的方法。
结果,可以注意到,使用自动编码器的方法在完全连接的网络中具有相当的竞争力。 尽管优化权重需要花费更多的时间,但它具有一个重要的优点:能够检测输入数据中的异常。 如果没有一个自动编码器能够准确地重建输入图像,那么我们可以说输入了训练样本中未出现的异常图像。 严格来说,您不能从输入样本中重建图像,但是稍后将显示在这种情况下的处理方法。
考虑单个自动编码器
与上述论文中略有不同的方式可能对输入数据的概率密度p(x)与自动编码器的响应之间的关系进行定性分析。
自动编码器-顺序使用编码器功能
z=g(x) 和解码器
x∗=f(z) 在哪里
x 是输入向量,并且
z -潜在的表现。 在某些输入子集中(通常接近训练)
x∗=x+n=f(g(x)) 在哪里
n -差异。 我们接受Gausovsky噪声的差异(可以在训练自动编码器后估算其参数)。 结果,做出了许多相当强的假设:
1)差异-高斯噪声
2)自动编码器已经“训练”并且可以正常工作
但是,重要的是,几乎不会对自动编码器本身施加任何限制。
此外,可以获得概率密度p(x)的定性估计,在此基础上,可以得出将来非常重要的几个结论。
单个自动编码器的P(x)分数
的分配密度
x\在X$ 和
z\在Z$ 相关如下:
p(x)= intzp(x|z)p(z)dz(1)
我们需要获得连接p(x)和p(z)。 对于某些自动编码器,在训练阶段设置p(z);对于其他一些自动编码器,由于尺寸Z较小,因此仍更易于获得p(z)。
残留n的密度分布是已知的,这意味着:
p(n)=const timesexp(− frac(xf(z))T(xf(z))2 sigma2)=p(x|z)(2)
(x−f(z))T(x−f(z)) 是x及其投影x *之间的距离。 在某个点z *处,该距离将达到其最小值。 此时,公式(2)中的指数自变量相对于
zi (Z轴)将为零:
0= frac\部分f(z∗)\部分ziT(xf(z∗))+(xf(z∗))T frac\部分f(z∗)\部分zi
在这里
frac\部分f(z∗)\部分ziT(x−f(z∗)) 然后标量:
0= frac\部分f(z∗)\部分ziT(x−f(z∗))(3)
点z *的选择,这里的距离
(x−f(z))T(x−f(z)) 由于自动编码器的优化过程,因此数量很少。 在训练期间,最小化的是二次余数(通常):
min limit theta, forallx inXtrainL2norm(x−f theta(g theta(x))) 在哪里
theta -编码器的重量。 即 训练后,g(x)趋于z *。
我们也可以扩大
f(z) 在围绕z *的泰勒级数(直到第一项)中:
f(z)=f(z∗)+ nablaf(z∗)(z−z∗)+o((z−z∗))
因此,等式(2)变为:
p(x|z)\近似const timesexp(− frac(((xf(z∗))− nablaf(z∗)(zz∗))T((xf(z∗))− nablaf(z∗)(zz∗))2 sigma2)=
=const timesexp(− frac(xf(z∗))T(xf(z∗))2 sigma2)exp(− frac( nablaf(z∗)(zz∗))T( nablaf(z∗)(zz∗))2 sigma2)\次
timesexp(− frac( nablaf(z∗))T(xf(z∗))+(xf(z∗))T nablaf(z∗))(zz∗)2 sigma2)
注意,由于表达式(3),最后一个因子为1。 可以通过(1)中的积分符号(不包含z)除去第一个因子。 并且还假设p(z)是足够光滑的函数,并且在z *附近(即, 替换p(z)-> p(z *)。
在所有假设之后,积分(1)的估算值为:
p(x)=常量\乘以p(z∗)exp(− frac(xf(z∗))T(xf(z∗))2 sigma2) intzexp(−(zz∗)TW(x)TW(x)(zz∗))dz,z∗=g(x)
在哪里
W(x)= frac nablaf(z∗) sigma,z∗=g(x)最后一个积分是n维Euler-Poisson积分:
intzexp(− frac(zz∗)TW(x)TW(x)(zz∗)2)dz= sqrt frac1det(W(x)TW(x)/2 pi)
结果,我们得到了最终估计值p(x):
p(x)=const timesexp(− frac(xf(z∗∗))T(xf(z∗))2 sigma2)p(z∗) sqrt frac1det(W(x)TW(x)/2 pi),z∗=g(x)(4)
需要所有这些数学运算才能证明p(x)取决于三个因素:
- 输入向量及其重构之间的距离,恢复越差,p(x)越小
- z * = g(x)时的概率密度p(z *)
- 函数p(z)在点z *的归一化,它是根据函数f的偏导数为自动编码器计算的
并且从归一化常数开始,归一化常数随后将负责选择自动编码器来描述输入数据的先验概率。
尽管有所有假设,但从计算的角度来看,结果还是非常有意义和有用的。
参数分类或评级程序
现在,您可以使用一组自动编码器来更准确地描述分类过程:
- 在相应的输出上为每个类别训练独立的自动编码器
- 每个自动编码器的矩阵W的计算
- 每个自动编码器的P(z)得分
对于每个输入向量,您现在可以进行评估
p(x|类) 按班级数量。 这将是在贝叶斯决策规则框架内进行决策所必需的似然函数。
以相同的方式,还可以通过将参数空间分解为离散值,并为每个值训练自己的自动编码器来估算未知参数。 然后,基于最佳贝叶斯得分,选择给出最大似然函数的值。
在这里值得注意的是,形式上估计p(z)的问题并不比估计p(x)简单。 但实际上并非如此。 空间Z通常具有小得多的尺寸,或者通常在优化自动编码器的权重时设置分布。
合并自动编码器潜在空间的想法
Alexei Redozubov提出了一种奇怪的解释,并在以下文章中进行了描述:
- 基于皮质小列中上下文转换的人工神经网络架构。 瓦西里·莫尔扎科夫(Vasily Morzhakov),阿列克谢·雷佐波夫(Alexey Redozubov)
- 全息记忆:神经微电路处理信息的新颖模型。 斯普林格Alexey Redozubov
- 根本不是神经网络。 莫尔扎科夫五世
在不同的上下文中,信息的解释可能完全不同。 “一组自动编码器”的模型呼应了这个提议的想法。 任何自动编码器都是相同上下文(一类或其他固定参数)内的输入数据的潜在模型,即 潜在向量是一种解释,每个自动编码器是一个上下文。 在接收到输入信息后,将在每个上下文中(每个自动编码器)对其进行考虑,并选择最有可能考虑每个自动编码器中现有模型的上下文。
下一步的合理步骤是允许在不同上下文中进行交叉解释。 即 在培训过程中,我们通常知道解释仍然相同,但是表示(上下文)的形式却发生了变化。 例如,对象的方向发生变化,但对象保持不变。 必须保留对象描述的向量,并且上下文-方向会改变。
然后,如果我们看一下公式(4),则因子p(z)证明是针对整个自动编码器集合而不是每个单独的估计值。 解释(潜在向量)将具有共同的分布。 对于少量的自动编码器,这可能没有太大的作用,但是在实际任务中,这个数目可能很大。 例如,如果为3D对象的每种可能的方向定义一个上下文,则可能有成千上万个上下文。 现在,为在任何情况下进行训练而提出的每个示例将形成分布p(z)。
解释和上下文的互换性
在所应用的问题中,问题立即出现:通过解释分配什么,通过上下文分配什么? 上下文和解释可以轻松互换,并且没有人排除了一对“自动编码器集”同时并行运行的可能性。
为了清楚起见,您可以提供以下示例:
输入图像包含人的面孔。
- 上下文-面部朝向。 然后,对于输入图像的重建,我们没有足够的“解释”-一种识别人的代码,其中将包含对脸部,发型及其光线的描述。 在训练过程中,我们将需要从不同侧面展示相同的面孔,“冻结”潜在代码,同时更改方向。
- 背景-脸型,光线,发型。 然后,对于输入图像的重建,我们缺乏面部的方向。 在训练期间,有必要在不同的光照条件下以相同的方向显示不同的面孔。
在第一种情况下,将针对面部的方向做出最佳贝叶斯决策,而在第二种情况下,则针对其类型。 大概,第一个选项将提供更好的定位精度,第二个选项将更准确地评估它是谁的脸。
学习具有共享潜在空间的一组自动编码器
在训练中,我们需要知道一个实体在意义上如何在不同的上下文中表现。 例如,如果我们谈论数字的图像和上下文定向,那么这种交叉训练的示意图如下所示:

使用一个自动编码器的编码器,然后由另一个自动编码器的解码器解码潜码。 学习损失功能保持标准。 有趣的是,如果自动编码器是对称选择的(即编码器和解码器的权重已连接),则在每次迭代中,两个自动编码器的所有权重都将得到优化。
这种棘手的训练最方便的是PyTorch,它使您能够为错误的反向传播(包括动态错误)制定相当复杂的方案。
每个自动编码器的标准学习步骤与交叉训练的迭代交替进行。 结果,所有自动编码器在不同的上下文中都有一个共同的潜在空间或“解释”。
非常重要的是,作为这种分析的结果,我们将能够将输入信息分为“上下文”和“解释”。
训练实例
考虑一个基于MNIST的相当简单的示例,这将有助于演示训练具有公共潜在空间的自动编码器的原理。 结果,此示例将演示使用本文中描述的机制的“多维数据集”抽象概念的形成。
来自MNIST的数字绘制在立方体的边缘,并且绕其轴之一旋转:

我们将训练自动编码器来还原面部,上下文-面部方向。
这是在100个上下文中数字“零”的示例,其前34个对应于侧面的不同旋转角度,其余的76个对应于上侧的不同旋转角度。

我们假设对于这100张图像中的每张图像,“解释”应该相同,并且是它们的随机组合用于交叉训练。
在用上述方法训练之后,有可能实现自动编码器之一的潜码可以被其他自动编码器解码,从而获得真正有意义的上下文转换。
例如,此图像显示数字10的自动编码器的编码结果如何被其他自动编码器解码为数字之一:

因此,具有“解释”的代码,即 自动编码器的潜矢量,您可以在任何训练过的环境(即任何自动编码器的解码器)中还原原始图像。
输入向量屏蔽
在式(4)中,残留物的分散
sigma ,由输入向量的任何分量的常量选择。 但是,如果某些组件与潜在模型没有任何统计关系,则这些组件的方差可能会明显更高。 分母中到处都有色散,这意味着差异越大,分量误差的贡献就越小。 您可以将其与输入向量的某些部分的掩码相关。
对于带有旋转脸部的此示例,遮罩很明显-在特定上下文中脸部的投影。

在此示例的简化方法中,该方法仅使用输入图像和重建之间的残差,对于每个上下文,只需要将残差乘以掩码即可。
在一般情况下,必须更严格地评估分布参数,因此无需手动输入掩码。
解释与上下文的分离
将解释与上下文分开,您可以获得抽象概念。 在经过训练的示例中,有趣的是演示了两种效果:
1)一键式学习 仅以极少的示例数(最多为一个)进行培训。
如果我们仅分析解释而不考虑上下文,那么当仅在一个方向上显示新图像时,就有可能以不同的面部方向识别新图像。
重要的是要注意必须呈现一个新图像。 为了正确起见,我们还设定了自己的目标,即不记住一张图像,而是要学习如何共享MNIST培训基地中以前找不到的2张新图像。 例如:
这个想法如下:在一个几何上下文中显示这些符号(例如,在数字10下),选择一个与这些符号的解释等距运行的超平面,然后确保使用此超平面我们可以识别出当旋转脸部时呈现给我们什么样的符号(其他情况)。重要的是在此处注意,不会对自动编码器进行新符号的培训。由于MNIST中的数字多种多样,因此您可以预测以前从未见过的新字符在不同上下文中的外观。因此,V号将在编号10的上下文中进行编码,然后在其余的编号中进行解码:
可以看出,预测不是完美的,但是在视觉上可以识别。我们将此演示称为“实验1”,并在下面描述结果。2)并使用多维数据集有趣地演示了如果忽略潜矢量的内容会发生什么,并且仅传达每个自动编码器的合理程度。让我们看看对于100个可以显示为地图的上下文,两个具有完全不同的纹理(数字5和9)的多维数据集,每个上下文的可能性看起来如何:
可以看到,尽管多维数据集侧面的纹理不同,但地图非常相似。即
向量本身包含自动编码器模型(上下文)的可能性,使我们能够制定与多维数据集的3维形状有关的新抽象概念。也可以通过学习多维数据集模型的自动编码器在下一个级别描述此向量。在第二个实验中,有必要创建第二级信息处理,以训练抽象多维数据集模型的自动编码器。然后,使用背面投影为该多维数据集模型的不同实现恢复原始图像。简单地说,使立方体旋转。“实验编号1”的结果
经MNIST训练的自动编码器集适用于在上下文#10中呈现的两个新图像。得出与V和+的符号相对应的潜在空间中的2个点。我们定义了一个与两个点等距的平面,我们将使用该平面进行决策。如果该点在平面的一侧-V号,在另一侧-加号。现在,我们获得了转换后的图像的代码,并为每个图像计算了到平面的距离,并保留了符号。结果,可以区分在所有100种情况下都呈现了哪种符号。图上的距离分布:
以单个符号为例,可视化结果:
即
在完全不同的上下文中,V符号的潜在代码在潜在空间中比在相同上下文中的V和加号代码彼此更接近。因此,在每100个案例中,有100个案例可以成功地区分立方体表面各个方向上的符号,尽管每个符号只显示了一个样本。可以证明经典的“一次性学习”,这在人工神经网络的原始体系结构中是不可能的。这种方法工作的基本原理与例如本文中展示的“转移学习”非常相似。链接到git(train_ae_shared.py,test_AB.py)“实验编号2”的结果
将解释与上下文分开也可以从有限的示例集中学习。在各种情况下(固定“潜在向量”)可能仅展示一种可能的解释。仅在所有面上仅显示一个数字就可以得到抽象的多维数据集模型。实验的结构如下:- 正在准备一个培训基地:旋转度从0到90度的立方体。多维数据集的表面上是数字5。
- 与解释(潜在代码)分离的上下文的似然向量被传递到下一个层次,在该层次上,负责多维数据集模型的自动编码器被训练
- : , «», , , , , .
训练样本由5421个图像组成,侧面有5号图像,例如:
旋转角度为0到90度的立方体我们事先知道立方体只有一个旋转自由度,因此第二级的自动编码器在潜码中只有一个分量。训练后,您可以将此分量从0更改为1(选择了S型函数以激活潜在层),并查看在解码过程中再现了哪个上下文似然矢量:
然后将此矢量转移到1级,其中100个面部朝向,局部最大值和想象“立方体表面上的符号的任何潜在代码。 “想象”面孔上的数字3,更改自动编码器中负责多维数据集抽象概念的潜矢量,并获得以下多维数据集图像:
或训练集中完全没有遇到过的V形符号的代码:
质量较差,但可识别出该符号。因此,在图像处理的第二层,我们获得了一个自动编码器,该编码器可以对“多维数据集”抽象概念的多样性进行建模。实际上,在识别问题中,实验中显示的反投影原理非常重要,因为 允许消除由于形成更高层次的抽象概念而造成的解释歧义。链接到git(second_level.py,second_level_test.py)上下文分离起作用的其他示例
在我的上一篇文章中,在识别车号时,使用了类似的方法而没有解释。图像中数字的位置,方向和比例从内容中分离出来,下一级别感知到这些数据以构建“车号”模型。无论是什么数字,它们的相互几何构型都很重要,因此我们可以放心地说这是车号(顺便说一句,也是一个抽象概念)。打个比方,我们可以从计算机视觉中举出许多其他示例:对象的3D形状或其轮廓可与其纹理和背景分开;与相互空间配置隔离的组件枚举通常还允许形成新的抽象概念。同样有趣的是,它如何在机器学习的其他领域发挥作用:突出歌曲的旋律也拒绝解释(发音为元音),并且仅使用上下文(音高);语法构造(例如,“有人做某事”的图案)。讨论强AI问题
目前,很难确定强AI与弱AI的区别。 为了使计算机像人一样有效地运行,此列表可能应包括现有方法和算法中缺少的所有内容,例如:
- 制定决策,使用策略,面对不确定性进行解决。 不确定性很高,需要选择培训期间制定的最佳模型
- 反映周围物理和社会世界的模型,包括他人的自我意识和意识
- 抽象思维的机制,允许制定随后可用于多种输入数据的概念
- 能够“解读”自己的想法
同样,显然没有足够的发达的记忆机制与学习过程,晋升/惩罚机制整合在一起。
本文演示了基于选择描述输入数据的最佳模型来解决参数识别和估计问题的方法。 假定这是选择最佳解释和上下文的机制。 由于模块(一组自动编码器)输出处的解释和上下文分离,因此可以制定抽象概念或将经验与上下文隔离开来,从而减少了训练样本。 上下文集可以反映机器传感器的读数(方向,位置,速度等),因此可以在没有老师的情况下进行自然学习。
此外,尽管在自动编码器的训练中使用了深度学习,但是由于信息的各个层次,自动编码器中发生的过程很容易分析。 可以确定在哪个模型(或在哪种情况下)找到最佳解释。 在复杂系统中需要引入的级别之间的反馈的含义是增加或减少选择特定上下文的可能性。
结果
提出了一种数学装置,在该数学装置的基础上,可以选择一种或另一种在贝叶斯决策规则的指导下描述输入数据的模型。 使用具有共同潜在空间的自动编码器获得模型。 提出了一种思想,根据该思想,自动编码器的潜码是解释,并且潜模型即 自动编码器本身就是上下文。
使用MNIST的例子证明,这套自动编码器的精度并不比完全连接的人工神经网络差。
显示了将解释从上下文中分离出来的效果:由于对其他数据进行了预训练,因此最小化了必要的数据集(在“一次学习”的范围内)以识别新呈现的图像。
显示了将上下文与解释分开的效果:使用几何抽象“多维数据集”作为示例形成下一层抽象概念的可能性。
参考文献
1)
G. Alain和Y. Bengio。正规化自动编码器从数据生成分布中学到了什么。 2013。2)
Kamyshanska,H。2013。关于自动编码器评分3)
Daniel Jiwoong Im,Mohamed Ishmael Belghazi,Roland Memisevic。 2016.不受限制的自动编码器的保守性4)
基于上下文的皮质迷你列中的人工神经网络架构。 瓦西里·莫尔扎科夫(Vasily Morzhakov),阿列克谢·雷佐波夫(Alexey Redozubov)5)全息记忆:一种由神经微电路处理的新型信息处理模型。 斯普林格Alexey Redozubov
6)
根本不是神经网络。 莫尔扎科夫五世7)
en.wikipedia.org/wiki/Gaussian_integral8)
对抗示例:深度学习的攻击和防御9)
一站式模仿学习PS:本文是俄语的电子预印本,其发布是为了讨论结果,寻找错误。 任何建设性的批评都欢迎!