精通 Java 机器学习(三)

六、概率图建模

概率图模型 ( PGMs ),也称为图模型,捕捉不同变量之间的关系,表示概率分布。PGM 捕获联合概率分布,并可用于回答不同的查询和进行推理,使我们能够对看不见的数据进行预测。PGM 具有很大的优势,可以获取专家的领域知识以及变量之间的因果关系,从而对系统进行建模。PGM 表示结构,它们可以在一个表示框架中获取知识,这使得共享和理解领域和模型变得更加容易。PGM 很好地捕捉了不确定性或概率性质,因此在需要评分或基于不确定性的方法的应用中非常有用。PGM 广泛用于使用机器学习的各种应用中,例如应用于语言处理、文本挖掘和信息提取、计算机视觉、疾病诊断和 DNA 结构预测等领域。

Judea Pearl 是 PGMs 领域的先驱,并且是第一个引入贝叶斯网络主题的人(参考文献 [2]和[7])。尽管介绍 PGM 的所有知识超出了本章的范围,但我们的目标是详细介绍 PGM 最重要的方面——贝叶斯网络和有向 PGM。我们将把主题分为表示、推理和学习三个领域,并将讨论每个领域的具体算法和子主题。我们将涵盖马尔可夫网络和无向 PGM,总结与 PGM 的一些差异和相似之处,并解决相关领域,如推理和学习。最后,我们将讨论树增广 网络 ( )、马尔可夫链隐马尔可夫模型 ( )。关于这个主题的深入探讨,请参见柯勒和弗里德曼的概率图形模型(参考文献【1】)。

概率再探

概率的许多基本概念在附录 B 、概率中有详细介绍。概率论中的一些关键思想构成了概率图模型的基础。很好地掌握相关理论有助于理解 PGM 以及如何使用它们从数据中进行推断。

概率中的概念

在这一节中,我们将讨论与概率论相关的重要概念,这些概念将在本章后面的讨论中用到。

条件概率

给定两个相关事件 a 和,条件概率的本质是捕捉当已知另一个事件已经发生时,我们如何为其中一个事件赋值。条件概率或条件分布由P(a|a表示,即假设事件a已经发生(相当于假设a为真),事件 a 发生的概率,形式上定义为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

P(ana)捕捉 a 和 a 同时发生的事件。

链式法则和贝叶斯定理

条件概率定义产生了条件概率链规则,即当有多个事件α [1] ,α [2] ….α [n] 时,则:

p([**…。[=([)(-什么p([|[[【n-1】])]]]]**]

几个事件的概率可以表示为第一个事件的概率乘以第二个事件的概率,以此类推。因此, α [n] 的概率取决于一切α [1] 到α [n] 并且独立于事件的顺序。

贝叶斯规则也遵循条件概率规则,并且可以被正式地给出为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

随机变量、联合和边际分布

通过将事件空间和结果视为属性和值来映射事件空间和结果是很自然的。随机变量被定义为具有不同已知特定值的属性。例如,如果成绩是与学生相关联的属性,并且具有值 {A,B,C} ,那么 P(成绩= A) 表示具有结果的随机变量。

随机变量一般用大写字母表示,如 XYZ ,它们取的值用 Val(X) = x 表示。在本章中,我们将主要讨论本质上是分类的值,也就是说,取固定数量的离散值。在现实世界中,变量也可以有连续的表示。类别为{x ¹ ,x ² …x ^n 的变量的分布可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在许多类别上的这种分布被称为多项式分布**。在只有两个类别的特殊情况下,分布被称为伯努利分布。**

给定一个随机变量,该变量描述的所有事件的概率分布称为边际分布。例如,如果等级是随机变量,边际分布可以定义为(等级= A) = 0.25,P(等级= b) = 0.37,P(等级= C) = 0.38 。**

在许多现实世界的模型中,有不止一个随机变量,考虑所有这些随机变量的分布称为联合分布**。例如,如果学生的智力是作为另一个变量的,用 P(智力)P(I) 表示,并有二元结果{低,高} ,那么考虑智力年级的分布,表示为 P(智力,年级)P(I,G) ,就是联合分布。

一个随机变量的边际分布可以通过将所有其他变量的值相加而从联合分布中计算出来。如表 1 所示,通过对所有行求和可以获得等级的边际分布,通过对所有列求和可以获得智能的边际分布。

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

表 1。I 和 G 上的边际分布**

边际独立和条件独立

边际独立性定义如下。考虑两个随机变量 XY;那么 P(X|Y) = P(X) 表示随机变量 X 独立于 Y 。形式上表示为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 ( P 满足 X 独立于 Y )。

这意味着联合分布可由下式给出:

P(X,Y) = P(X)P(Y)

如果考试的难度( D )和学生的智力( I )决定了成绩( G ),我们知道考试的难度与学生的智力无关( DI )也隐含着 P(D,I) = P(D)P(I)

当给定第三个变量时,两个随机变量是独立的,这种独立性称为条件独立。给定一组三个随机变量 XYZ ,我们可以说外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传;也就是说,给定 Z ,变量 X 独立于 Y 。有条件独立的必要条件是

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因素

因子是定义高维(大量变量)空间中概率分布的基本构建块。他们给出了帮助处理概率分布的基本运算。

“因子”被定义为将被称为“范围”的随机变量作为输入并给出真实值输出的函数。

形式上,一个因子被表示为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,其中范围是(X [1] , X [2] ,…。Xk)。

因子类型

不同类型的因素如下:

  • 联合分布:对于变量的每个组合,你得到一个实值输出。
  • 非标准化度量:当在联合分布中,一个变量是常数时,输出也是实值,但它是非标准化的,因为它的总和不是 1。然而,它仍然是一个因素。
  • 条件概率分布:形式为 P(G|I) 的概率分布是也是一个因子。

对因子执行各种操作,例如:

  • 因子乘积:如果两个因子ϕ1(x[1]、 X [2] 和ϕ2 相乘,则产生实际上,它是取对应于ϕ1 的表格,并将其乘以ϕ2**
  • 因子边缘化:这和边缘化是一样的,其中ϕ1 可以对一个变量进行边缘化,比如说 X [2] ,给ϕ*[2]*
  • 因子缩减:仅当其中一个变量不变时,取其他变量的值。

配送查询

给定随机变量的概率,可以执行许多查询来回答某些问题。一些常见的查询类型将在后面的章节中解释。

概率查询

这是最常见的查询类型之一,它有两个部分:

  • 证据:具有众所周知的结果或类别的变量子集。例如,一个随机变量 E = e

  • *Query: A random variable from the rest of the variables. For example, a random variable X.

    P(X|E=E)*

*概率查询的例子是后验边际估计,例如 *P(I =高|L =差,S =低)=?和证据概率如 P(L =坏,S =低)=?

地图查询和边际地图查询

地图查询用于寻找最有可能的变量的子集的概率分配,因此也被称为最可能的解释 ( MPE )。这些查询和概率查询的区别在于,我们得到的不是概率,而是所有变量最可能的值。

在形式上,如果我们有变量W = X–E*,其中我们有 E = e 作为证据,并且有兴趣找到 W 中变量最可能的赋值,*

地图(W|e)=arg max[W]P(We )

边际查询的一个更一般的形式是当我们有一个变量的子集,比如说由构成我们的查询的 Y 给出,并且有 E = e 的证据,我们感兴趣的是找到 Y 中变量最可能的赋值。使用映射定义,我们得到:

地图(Y|e)=arg max[Y]P(Y|e)

假设,Z = X–Y–E,那么边际地图查询就是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传*

图形概念

接下来,我们将简单回顾一下图论中的概念以及我们将在本章中用到的一些定义。

图形结构和属性

图被定义为包含节点和连接这些节点的边的数据结构。在本章的上下文中,随机变量表示为节点,边表示随机变量之间的连接。

形式上,如果 X = {X [1] ,X [2] ,…X [k] } 其中 X [1] ,X [2] ,…X [k] 是表示节点的随机变量,那么在外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给出的节点之间可以有一条属于集合 e 的有向边,也可以有一条无向边 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,该图被定义为数据结构外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。当集合 e 中来自集合 X 的节点之间的每条边都是有向的时,称一个图为有向图,类似地,无向图是节点之间的每条边都是无向的,如图 1 中的所示。同样,如果有一个图既有有向边又有无向边,那么符号外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传表示一条边可以是有向边也可以是无向边。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图一。有向图、无向图和部分有向图

如果图中存在有向边外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,则节点XI 称为父节点,节点Xj 称为子节点

在无向图的情况下,如果有一条边XI*–X*[j],则称节点 X [i] 和 X [j] 为邻居。

有向图中节点 X 的父节点集合称为节点 X 的边界,类似地,无向图中的相邻节点形成彼此的边界。节点 X 的度数就是它参与的边数。节点 X 的度数是有向图中与节点 X 有关系的边的数量,使得边在节点 Y 和节点 XXY 之间。图的度是该图中节点的最大度。

子图和集团

子图是表示整个集合中一些节点的图的一部分。是无向图中顶点的子集,使得每两个不同的顶点是相邻的。

路径、踪迹和循环

如果有个变量X1,X2,…。XK 在图 K = (X,E) 中,它形成一条路径,如果,对于每一个 i = 1,2…k–1,我们有外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传或者X[I]–X[j];也就是说,变量之间要么有一条有向边要么有一条无向边——回想一下这可以被描绘成XI?Xj。有向路径至少有一条有向边:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果有变量 X [1] , X [2] ,…。 X [k] 在图中 K = (X,E) 如果对于每一个 i = 1,2,则形成一个尾迹k–1,我们要么有外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个图叫做连通图,如果对每一个XI,…Xj 在XI 和Xj 之间有一条轨迹。

在一个图 K = (X,e) 中,如果节点 XY 之间存在有向路径, X 称为 Y 的祖先, Y 称为 X后代

如果一个图 K 有一条有向路径 X [1] , X [2] ,…Xk 其中X1?Xk,该路径称为一个循环。相反,没有圈的图称为无圈图。

贝叶斯网络

一般来说,所有概率性图形模型都有三个基本元素构成重要部分:

  • 表示:这回答了模型意味着什么或者表示什么的问题。的思路是如何表示和存储 P(X [1] , X [2] ,……XnT15)。

  • 推论:这回答了这个问题:给定模型,我们如何执行查询,如何得到答案。这给了我们从已知证据中推断未知值的能力,给出了模型的结构。激发主要讨论点的是各种形式的推理,包括计算和正确性问题之间的权衡。

  • 学习:这个回答了给定数据,什么模型是正确的这个问题。学习分为两个主要部分:

    • 学习参数给定的结构和数据
    • 学习参数给定的结构和数据

在我们的讨论中,我们将使用著名的学生网络作为贝叶斯网络的例子来说明概念和理论。学生网络有五个随机变量,捕捉各种属性之间的关系,定义如下:

  • 考试难度( D
  • 学生的智力( I )
  • 学生得到的分数( G
  • 学生 SAT 成绩( S )
  • 学生根据成绩得到的推荐信( L )。

这些属性中的每一个都有二进制分类值,例如,变量难度 ( D )有两个类别( d 0, d 1),分别对应低和高。等级 ( G )有三个类别值对应于等级 (A,B,C) 。图中的箭头表示从领域知识中编码的依赖关系——例如,如果我们知道考试的难度和学生的智力就可以确定等级,而如果我们只知道等级 ( 图 2 )就可以完全确定推荐信。可以进一步观察到,变量之间没有明显的边缘表明它们是相互独立的——例如,考试的难度和学生的智力是独立变量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图二。“学生”网络

表象

一个图表简洁地表示了随机变量之间的复杂关系,允许快速算法在完全枚举被禁止的地方进行查询。在这里定义的概念中,我们展示了有向无环图结构和条件独立性是如何使涉及大量变量的问题变得易于处理的。

定义

贝叶斯网络被定义为具有以下特征的系统模型:

  • 若干随机变量{ X [1] , X [2] ,…。Xk}

  • 一个有向 无环图 ( DAG ),节点代表随机变量。

  • 对每个依赖于其父节点的节点的局部 条件概率分布(CPD)P(X[I]| parent(X[I])

  • 使用链式分布规则获得的联合概率分布是如下给出的因子:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • For the student network defined, the joint distribution capturing all nodes can be represented as:

    P(D,I,G,S,L)=P(D)P(I)P(G D,I)P(S I)P(L G)

推理模式

给定一些数据和事实,贝叶斯网络有助于回答各种查询,这里讨论这些推理模式。

因果或预测推理

例如,如果给出的证据是“智力低下”,那么得到右上角象限图 3 所示“好信”的几率有多大?这是通过因果推理解决的。如第一象限所示,因果推理自上而下流动。

证据或诊断推理

如果给出了证据,比如一封“坏信”,那么这个学生得到“好成绩”的可能性有多大?如左上象限的图 3 所示,这个问题通过证据推理来解决。如第二象限所示,证据推理自下而上。

因果推理

从寻找“相关原因”中获得有趣的模式是因果推理的目标。如果给出了“C 级”和“高智商”的证据,那么课程难度“高”的几率会是多少?这种推理也被称为“解释”,因为一个原因解释了另一个原因的原因,这在第三象限图 3 的左下方进行了说明。

综合推理

如果一个学生选了一门“简单”的课程,却有一封“糟糕的信”,那么他得到“C”的可能性有多大?这可以用具有组合推理模式的查询来解释。请注意,它具有混合信息,并且不像其他推理模式那样沿单一固定方向流动,如图右下方象限 4 所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3。推理模式

独立性、影响流、D-分离、I-Map

当执行查询时,可以利用节点之间的条件独立性来减少计算。在这一节中,我们将讨论一些与独立性相关的重要概念。

影响力的流动

影响 是一个变量的条件或结果如何改变与另一个变量相关的价值或信念的影响。我们已经从推理模式中看到了这一点,这些推理模式影响直接关系(父母/子女)、因果/证据关系(父母和子女以及中间物)以及组合结构中的变量流。

影响不流动的唯一情况是当存在“v 型结构”时。也就是说,给定三个变量外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传之间的边,在 X [i - 1] 和 X [i + 1] 之间存在 v 型结构,没有影响流。例如,课程的难度和学生的智力之间没有影响。

D-分离

随机变量 XY 在图 G 中被称为 d 分隔,假定在 XY 之间没有活动轨迹,在 G 中给定 Z 。它正式表示为:

dsepT2G*(X,Y|Z)*

d 分离的要点是它完美地映射到点之间的条件独立性。这给出了一个有趣的性质:在贝叶斯网络中,给定节点的父节点,任何变量都独立于它的非后代。

在学生网络示例中,节点/变量字母与难度、智力和 SAT 分开,给出了分数。

智能地图

从 d-分离,在图 G 中,我们可以收集来自 d-分离的所有独立性,并且这些独立性被正式表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果 P 满足 I ( G ,那么我们说 GP 的独立映射或 I 映射。

I-Map 的主要观点是,它可以被正式地证明与独立性的因式分解关系成立。反过来也可以证明。

简而言之,人们可以在贝叶斯网络图 G 中读到,不管任何参数,分布 P 中的所有独立性都成立!

以学生网络为例,其整体分布如下所示:

P(D,I,G,S,L) = P(D)P(I|D)P(G D,I)P(S D,I,G)P(L D,I,G,S)

现在,考虑独立于 I-Maps:

  • 变量 ID 是非后代并且不以父母为条件,所以 P(I|D) = P(I)

  • 变量 S 独立于其非后代 DG ,给定其父 IP(S D,I,G)=P(S|I)

  • Variable L is independent of its non-descendants D, I, and S, given its parent G. P(L¦D,I,G,S)=P(L|G)

    (D,I,G,S,L)=P(D)P(I)P(G D,I)P(S I)P(L G)

因此,我们已经展示了 I-Map 有助于仅给定图网络的因式分解!

推论

概率图模型的最大优势是它们的能力,在给定一些证据的情况下,以条件或地图或边际地图的形式回答概率查询。

形式上,证据的概率 E = e 由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是这个问题已经被证明是 NP 难的(参考 [3]),或者具体来说,# P-完全。这意味着当有大量的树或变量时,它是难以处理的。即使树宽(最大集团中的变量数量)为 25,这个问题似乎也很难解决——大多数现实世界的模型的树宽都比这个大。

因此,如果之前讨论的精确推理是难以处理的,那么是否可以使用一些近似,以便在一定的误差范围内,我们可以使问题易于处理?已经表明,即使是计算带有误差的推论的近似算法? < 0.5,这样我们就找到一个数 p 这样|P(E=E)–P|<,也是 NP-Hard。

但好消息是,这是显示指数时间复杂性的“最坏情况”结果之一。在“一般情况”下,可以应用试探法来减少精确算法和近似算法的计算时间。

执行精确和近似推理的一些众所周知的技术在图 4 中描述,除了贝叶斯网络,它还涵盖了大多数概率图模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4。精确和近似推理技术

详细讨论这些问题超出了本章的范围。我们将详细解释一些算法,并附有参考文献,以便读者更好地理解。

基于排除的推理

这里我们将描述两种技术,变量消除算法和团树或连接树算法。

变量消去算法

变量消去 ( VE )算法的基础在于分配性,如图所示:

(ab+ac+ad)= a (b+c+d)

换句话说,通过去掉公因数 a ,三乘二加的五次算术运算可以减少为一乘三加的四次算术运算。

让我们通过学生网络中的一个简单例子来理解计算量的减少。如果我们要计算一个概率查询比如考试难度给定的字母是 good,即 P(D L=good)=?

使用贝叶斯定理:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

要计算 *P(D L=good)=?*我们可以使用链式法则和联合概率:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们重新排列右边的术语:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们现在替换外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,因为因子独立于变量 I ,而变量 S 以变量为条件,我们得到:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,如果我们小心地进行,一次消除一个变量,我们已经有效地将 O(2 ^n ) 因子转换为 O(nk ² ) 因子,其中 n 是变量的数量, k 是每个变量的观察值的数量。

因此,VE 算法的主要思想是对变量进行排序,使查询变量排在最后。在变量的有序列表上维护因子列表,并执行求和。通常,我们在 VE 算法的实现中使用动态规划(引用【4】)。

输入和输出

输入:

  • 条件概率分布列表/表 F
  • 查询变量列表 Q
  • 观察变量列表 E 和观察值 e

输出:

  • P(Q|E=E)
它是如何工作的?

该算法循环调用eliminate函数,如下所示:

变量消除:

  1. 而*?*,贝叶斯网络中所有随机变量的集合不为空

    1. 中去掉第一个变量 Z
    2. 消除 ( FZ )
  2. 结束循环。

  3. 设置*?*?? F 中所有因素的乘积

  4. 在*中实例化观察变量?*到它们的观测值。

  5. 返回外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(重正化)

消除 ( FZ )

  1. F 中删除所有功能,例如, X [1] , X [2] ,…。涉及 ZXk。
  2. 计算新函数外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  3. 计算新函数外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  4. 添加新功能*?*到 F
  5. 返回 F

考虑同样的以 P(D,L = good) 为目标的学生网络的例子。

  1. 挑选一个变量排序列表: SILGD

  2. Initialize the active factor list and introduce the evidence:

    列表: P(S I)P(I)P(D)P(G I,D)P(L G)d(L = good)

  3. Eliminate the variable SAT or S off the list外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    列表: P(I)P(D)P(G I,D)P(L G)d(L =好) 1 (I)

  4. Eliminate the variable Intelligence or I外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    列表: P(D)P(L G)d(L =好) 2 (G,D)

  5. Eliminate the variable Letter or L外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    列表: P(D) [3] (G) [2] (G,D)

  6. Eliminate the variable Grade or G外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    列表: P(D) [4] (D)

这样就有了两个值,P(D =高) [4](D =高)*P(D =低) [4](D =低)*,我们得到答案。

优点和局限性

优点和局限性如下:

  • VE 算法的主要优势在于其简单性和通用性,可应用于许多网络。
  • 当网络中有许多连接时,VE 的计算减少优势似乎消失了。
  • 变量最优排序的选择对于计算效益非常重要。
团树或连接树算法

连接树或团树是基于变量消除技术的更有效形式。

输入和输出

输入:

  • 条件概率分布列表/表 F
  • 查询变量列表 Q
  • 观察变量列表 E 和观察值 e

输出:

  • P ( Q| E = e )
它是如何工作的?

涉及的步骤如下:

  1. 道德化:这是一个将有向图转化为无向图的过程,分以下两步:

    1. 用节点间的无向边替换有向边。
    2. 如果有两个不相连但有一个公共子节点的节点或顶点,添加一条连接它们的边。(注意V4 与V5 与V2 与V3 中的5】:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 5。十克的图形道德化,用绿色显示方向边是如何改变的,用红色显示新增加的边

  2. 三角剖分:要理解三角剖分,必须形成弦。一个循环的弦是一对顶点VI 和Vj,它们之间有一条边。如果长度≥ 4 的每个圈都有弦,则称一个图为弦图或三角图。注意图 6V1 和V5 之间的边形成弦使道德化图形成为弦/三角化图形:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 6。添加蓝色边的图三角剖分将道德化图转换为弦图

  3. Junction Tree: From the chordal graphs a junction tree is formed using the following steps:

    1. 找出图中的所有集团,并使它们成为具有所有顶点的集群的节点。团是在每对节点之间存在一条边的子图。如果两个节点有一个或多个公共顶点,则创建一条由相交顶点组成的边作为分隔符或 sepset。例如,具有边缘的循环 V [1] 、 V [4] 、 V [5] 和 V [6] 、 V [4] 、 V [5] 在V[4[之间具有公共边缘]]

    如果上图包含一个循环,则循环中的所有分隔符都包含相同的变量。通过创建最小生成树来删除图中的循环,同时包括最大分隔符。整个转换过程如图 7 所示:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 7。连接树的形成

  4. 在连接树上运行消息传递算法:连接树可用于计算联合分布,使用集团和分隔符的因子分解,如外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 计算连接树的参数:连接树参数可以利用原始贝叶斯网络中的父节点逐节点获得,称为集团势,如下:

    1. ( *?*1=P(V[5]|V[2], V3)P(V3)(注在原贝叶斯网边 V [5] 依赖于 V [2] ,V[3V[3]]
  6. 连接树中节点/集团间的消息传递:连接树中的一个节点,用集团CI 表示,将所有来自其邻居的消息与自己的集团势相乘,得到一个范围为集团的因子外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。然后,它对除 sepset 或分隔符SI,j 上的变量之外的所有变量求和,这些变量位于CI 和Cj 之间,然后将结果因子作为消息发送给Cj。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 8。连接树中节点/集团之间的消息传递

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这样,当消息传递到达树根时,联合概率分布就完成了。

优点和局限性

优点和局限性如下:

  • 算法对与连接树中的树宽相关的计算有一个理论上的上限。
  • 集团中每个势的倍增会导致数值上溢和下溢。

繁殖技术

在这里,我们讨论信念传播,这是一种常用的消息传递算法,通过引入因子图和可以在这些图中流动的消息来进行推理。

信念传播

信念传播是最实用的推理技术之一,适用于大多数概率图模型,包括有向图、无向图、基于链的图和时态图。为了理解信念传播算法,我们需要首先定义因子图。

因子图

从基本的概率理论中我们知道,整个联合分布可以表示为变量子集上的一个因子,如下所示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 DAG 或贝叶斯网络中fs 是一种条件分布。因此,与变量子集相比,在表达因子的联合分布方面有很大的优势。

因素图是网络的一种表示,其中变量和涉及变量的因素都被制成显式节点(引用 [11])。在上一节的一个简化的学生网络中,因子图如图图 9 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 9。简化的“学生”网络的因子图

因子图是一个二分图,即它有两种类型的节点,变量和因子。

边缘在两种相反的类型之间流动,即从变量到因子,反之亦然。

将贝叶斯网络转换为因子图是一个简单的过程,如前所示,您可以开始添加变量节点和条件概率分布作为因子节点。贝叶斯网络和因子图之间是一对多的关系,即同一个贝叶斯网络可以在多个因子图中表示,并且不是唯一的。

因子图中的消息传递

有两种不同的信息在这些因素图中流动,这些因素图构成了通过通信进行的大部分计算。

  • 从因子节点到变量节点的消息:从因子节点发送到变量节点的消息在数学上可以表示为:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传其中外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传因此,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是来自因子节点 f [s] 到 x 的消息以及来自 xx 的邻居的所有此类消息的乘积图 10。从因子节点到变量节点的消息传递
  • 变量节点到因子节点的消息:和前面的例子类似,变量到因子的消息可以表示为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,所有到达节点 x [m] 的因子都被相乘,除了它发送到的因子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 11。从变量节点到因子节点的消息传递

输入和输出

输入:

  • 条件概率分布列表/表(CPD/CPT) F
  • 查询变量列表 Q
  • 观察变量列表 E 和观察值 e

输出:

  • P ( Q| E = e )
它是如何工作的?
  1. 根据前面讨论的贝叶斯网络创建一个因子图。
  2. 将节点 Q 视为图的根。
  3. 初始化所有的叶子节点,即:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  4. 以递归方式将消息从一个叶节点传递到下一个节点。
  5. 移动到下一个节点,直到到达根节点。
  6. 根节点处的 Marginal 给出结果。
优点和局限性

优点和局限性如下:

  • 所讨论的这个算法非常通用,可以用于大多数图形模型。当有向树中没有环时,该算法给出精确的推理。
  • 这可以很容易地并行实现,并有助于可伸缩性。根据连接情况,内存需求可能非常高。

基于采样的技术

我们将讨论一个简单的方法,使用粒子和采样来说明从随机变量生成分布 P(X) 的过程。其思想是从贝叶斯网络中重复采样,并使用带有计数的样本来近似推断。

带拒绝的正向采样

关键的想法是使用拓扑顺序生成迭代变量的独立同分布样本。在一些证据的情况下,例如, P(X|E = e) 与生成的样本相矛盾,最简单的方法是拒绝样本并继续进行。

输入和输出

输入:

  • 条件概率分布列表/表 F
  • 查询变量列表 Q
  • 观察变量列表 E 和观察值 e

输出:

  • P ( Q| E = e )
它是如何工作的?
  1. j = 1 到m//样本数

    1. 创建一个拓扑顺序的变量,比如说 X [1] , X [2] , … X [n] 。

    2. i = 1 为n

      1. u[I]?X(父(XI)//将(XI)赋值给变量
      2. 样本(XI, P ( X [i)、P(X[I]|E=E)拒绝,转到 1.1.2。//如果样品与证据不符,则拒绝样品。]
    3. 回车( X [1] , X [2] ,…。Xn 作为样本。

  2. 使用样本中的计数计算 P ( Q | E = e)。

为学生网络生成的一个样本的示例可以是:对难度进行采样并变低,接下来对智力进行采样并变高,接下来使用 CPD 表对难度=低、智力=高的等级进行采样,得到等级=A,对智力=高的 SAT 进行采样,得到 SAT =好,最后使用等级=A 对字母进行采样,得到字母=好。因此,我们得到第一个样本(难度=低,智力=高,等级=A,SAT =好,字母=好)

优点和局限性

优点和局限性如下:

  • 这种技术实现和执行起来相当简单。它要求大量的样本在界限内近似。
  • 当证据集很大时,拒绝过程会变得很昂贵。

学习

学习背后的想法是在给定数据和领域专家的情况下,生成一个结构或找到参数,或者两者都有。

学习的目标如下:

  • 为了便于贝叶斯网络中的推理。推理的前提是结构和参数已知,这是学习的输出。
  • 使用贝叶斯网络促进预测。给定观察变量 X ,预测目标变量 Y
  • 使用贝叶斯网络促进知识发现。这意味着从数据中理解因果关系、关系和其他特征。

学习,一般来说,可以用图 12 来表征。假设有一个已知的概率分布 P ^* ,它可能是也可能不是从贝叶斯网络 G ^* 中生成的。假设观测数据样本是从已知的概率分布 P ^* 中生成或采样的。领域专家可能在场,也可能不在场,以包括关于该结构的知识或先验信念。与其他机器学习算法相比,贝叶斯网络是少数几种可以直接使用领域专家在变量关系或先验概率方面的输入的技术之一。在知识获取和从数据中学习的过程结束时,我们得到具有定义的结构和参数的贝叶斯网络(CPT)作为输出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12。贝叶斯网络学习的要素

基于数据质量(缺失数据或完整数据)和来自专家的结构知识(未知和已知),下面的是贝叶斯网络学习的四个类别,如表 2 所示:

| 数据 | 结构 |
| 已知结构(学习参数) | 未知结构(学习结构和参数) |
| 完整数据 | 参数估计(最大似然,贝叶斯估计) | 最佳化(搜索和评分技术) |
| 不完整数据 | 非线性参数优化(期望最大化,梯度下降) | 结构和参数优化(结构 EM,混合模型) |

表 2。贝叶斯网络学习的种类

学习参数

在本节中,我们将讨论两种广泛使用的方法来估计给定结构的参数。我们将只讨论完整的数据,读者可以参考(参考文献 [8])中关于不完整数据参数估计的讨论。

贝叶斯网络的最大似然估计

最大 似然估计 ( MLE )是一种非常通用的方法,可以定义为:给定一个数据集合 D ,选择满足以下条件的参数外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传:

  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最大似然法是在给定训练数据的情况下选择贝叶斯网络参数的技术。详细讨论见(参考文献 6】)。

给定图 G 和训练数据外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在每个例子或实例外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传都可以用变量来表示。如果有由xI 表示的 i 变量,并且每个变量的父变量由父变量Xi 给出,那么:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

互换变量和实例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

术语是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是给定其父变量父变量Xi 的某个变量 x [i] 的条件可能性。因此,这些条件可能性的参数是由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给出的参数的子集。因此:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传称为局部似然函数。这变得非常重要,因为总似然分解成局部似然的独立项,并被称为似然函数的全局分解属性。其思想是,通过简单地使用来自训练数据的不同结果的计数,这些局部似然函数可以被进一步分解为表格 CPD。

N [ijk] 为我们观察变量或节点 i 处于状态 k [,]给定父节点配置 j :

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

例如,我们可以有一个对应于 X [i] = a [Xi] = b 的简单条目,通过从训练数据估计似然函数如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作为例子,考虑两种情况。首先,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传满足 10 个实例,其中[= b= 100。第二种,当[Xi]= b= 1000 时,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传满足 100。请注意,这两种概率达到了相同的值,而第二种概率的数据是第一种概率的 10 倍,是“更有可能”的估计值!类似地,对领域或先前知识的熟悉程度,或者由于不确定性而缺乏知识,也不会被 MLE 捕获。因此,当样本数量有限时,或者当领域专家知道先验知识时,这种方法就会遇到严重的问题。]

贝叶斯网络的贝叶斯参数估计

这种技术通过编码关于参数*的先验知识克服了 MLE 的问题。*具有概率分布。因此,我们可以将关于参数空间的信念或先验知识编码为概率分布,然后在估计中使用变量和参数的联合分布。

让我们考虑单变量参数学习,其中我们有实例 x [1], x [2] … x [M],并且它们都有参数**?** [X] 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13。单变量参数学习

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,网络是参数和数据的联合概率模型。优点是我们可以用它来做后验分布:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

P(?)=之前的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传因此,最大似然和贝叶斯估计的区别在于先验的使用。

给定数据集 D ,将其推广到贝叶斯网络 G :

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们假设参数是全局独立的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,我们得到

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再次,如之前,子集**?Xi|Xi 之?**是局部的,因此整个后验概率可以用局部术语计算!

先验和后验采用狄利克雷分布

通常,在实践中,被称为狄利克雷分布的连续概率分布——这是一种贝塔分布——被用于来表示参数的先验。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

概率密度函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传α项被称为超参数,而 a [ ijri ] > 0。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是伪计数,也称为等效样本量,它为我们提供了先验的度量。

贝塔函数 B(a [ij] ) 通常用伽马函数表示如下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用狄利克雷分布的优点是它本质上是共轭的,也就是说,不管可能性如何,如果先验是狄利克雷,则后验也是狄利克雷!

可以看出参数的后验分布? [ijk] 是一个超参数更新的狄利克雷,有一个封闭形式的解!

a[ijk]=a[ijk]+N[ijk]

如果我们使用最大后验估计值和后验均值,它们可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

学习结构

在没有任何领域知识或不了解结构的情况下学习贝叶斯网络包括学习结构和参数。我们将首先讨论用于评估网络结构的一些度量,然后讨论用于构建最佳结构的一些众所周知的算法。

评估结构的措施

给定数据集,用于评估贝叶斯网络结构的度量可以大致分为以下类别,许多类别的细节可以在这里获得(参考文献 [14])。

  • Deviance-Threshold Measure: The two common techniques to measure deviance between two variables used in the network and structure are Pearson’s chi-squared statistic and the Kullback-Leibler distance.

    给定 M 个样本的数据集 D ,考虑两个变量XI 和Xj,度量散度的皮尔逊卡方统计量为

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    d [?2] (D) 为 0;当变量是独立的,较大的值表示变量之间存在相关性。

    库尔巴克-莱布勒散度是:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    d [I] (D) 再次为 0,表示独立,数值越大表示依赖。使用各种统计假设检验,可以使用阈值来确定显著性。

  • 结构得分度量:在贝叶斯网络中,有各种各样的方法给一个结构打分。我们将在这里讨论最常用的措施。在参数学习中讨论的对数似然分数可以用作结构的分数:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 贝叶斯信息得分 ( BIC )也是一种相当流行的得分技术,因为它通过考虑复杂结构的惩罚来避免过拟合,如下面的等式外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传所示

罚函数在 M 中是对数的,因此,随着它的增加,复杂结构的罚函数不太严重。

Akaike 信息得分(AIC)与 BIC 相似,具有相似的基于惩罚的得分,并且是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在参数学习中讨论的贝叶斯分数也被用作评分标准。

学习结构的方法

我们将在本节讨论一些用于学习结构的算法;细节可以在这里找到(参考文献 [15])。

基于约束的技术

基于约束的算法使用各种变量的独立性测试,通过遵循这里讨论的一步一步的过程,试图找到我们在前面的部分中讨论的不同的结构依赖性,例如 d 分离、v 结构等等。

输入和输出

输入是带有所有变量 {X,Y }的数据集 D …} 已知每一个实例{1,2,… m },并且没有缺失值。输出是一个贝叶斯网络图 G ,所有的边、方向都在 E 和 CPT 表中。

它是如何工作的?
  1. 创建一个无向边 E 的空集。

  2. 检验两个独立于有边方向的变量之间的条件独立性。

    1. 若对于所有子集S=U–{X,Y },若 X 独立于 Y ,则将其添加到无向边集合E*’*。
  3. 一旦识别出所有潜在的无向边,就可以从集合E*’*中推断出边的方向性。

    1. 考虑一个三元组 {X,Y,Z} ,如果有一条边X–ZY–Z,但是在X–Y之间没有边使用集合中的所有变量,并且进一步,如果 X 不独立于 Y 给定所有的边S=U-
    2. 添加边缘外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传设置 E
    3. 使用本地计算更新 CPT 表。
  4. 返回贝叶斯网络 G ,边 E ,以及 CPT 表。

优点和局限性
  • 缺乏鲁棒性是这种方法的最大缺点之一。由于独立性假设会渗透到独立测试中,数据中的小错误会对结构造成大的影响。
  • 可伸缩性和计算时间是一个主要问题,因为每个变量子集都要经过测试,并且大约为 2 ^n 。随着变量的数量增加到 100 个,这种方法由于计算时间而失败。
搜索和基于分数的技术

搜索和评分方法可以被视为一种启发式优化方法,其中通过小扰动迭代地改变结构,并且使用诸如 BIC 或最大似然法之类的测量来给结构评分,以找到最佳评分和结构。爬山法、深度优先搜索法、遗传算法等等,都被用于搜索和评分。

输入和输出

输入是包含所有变量 {X,Y }的数据集 D …} 已知每一个实例{1,2,… m }并且没有缺失值。输出是贝叶斯网络图 G ,所有的边和方向都在 E 中。

它是如何工作的?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 14。搜索和评分

  1. 初始化图 G ,或者基于领域知识或者空或者满。根据图形初始化边集 E ,根据图形 GE 和数据 D 初始化 CPT 表 T 。还提到了正常终止条件,例如最大终止时间:

  2. maxScore= -8,score=computeScore(G, E ,T)

  3. do

    1. max score = score

    2. For each variable pair*(X,Y)*

      1. For each外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

      2. New Graph G ’ based parents and variables with edge changes

      3. 计算新的 CPTT’?computeCPT(G ',E ',D)

      4. currentScore = computeScore(G ', E ',T ')

      5. IfcurrentScore>score:

        1. score = currentScore
        2. G ’ = GE =
  4. 重复 3 while ( 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

优点和局限性
  • 陷入局部最优是大多数启发式搜索方法的缺点,也是最大的缺点之一。
  • 启发式搜索中没有收敛性或理论上的保证,所以搜索终止性很大程度上是靠猜测。

**

马尔可夫网络和条件随机场

到目前为止,我们已经讨论了概率图模型领域中的有向无环图,包括表示、推理和学习的各个方面。当图是无向图时,它们称为马尔可夫网络 ( MN )或马尔可夫随机 ( MRF )。像以前一样,我们将在本节讨论马尔可夫网络的一些方面,包括表示、推理和学习。马尔可夫网络或 MRF 在诸如分割、去噪、立体、识别等计算机视觉的各个领域中非常流行。如需进一步阅读,请参见(参考文献【10】)。

表象

即使马尔可夫网络,像贝叶斯网络一样,有无向的边,它仍然有局部的相互作用和分布。我们将首先讨论参数化的概念,这是一种捕捉这些相互作用的方法,然后讨论 MN 中的独立性。

参数化

MN 中变量之间的相似性通过以下章节中讨论的三种可选参数化技术来获取。

吉布斯参数化

概率分布函数被称为处于吉布分布或由吉布分布参数化,如果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Z 称为配分函数,定义为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请注意,变量之间的相互作用由因子外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传捕获,不是边际概率,而是对联合概率的贡献。参数化马尔可夫网络的因素称为集团势。通过在图中的最大团上选择因子,参数的数量大大减少。

因子图

马尔可夫网络的图结构在使用 Gibbs 参数化时并不揭示诸如因素是否涉及最大团或它们的子集的性质。在贝叶斯网络的推理一节中讨论的因子图具有识别最大集团的步骤,因此可以捕获这些参数化。请参考 BN 中的因子图部分。

对数线性模型

参数化的另一种形式是使用来自统计物理学的能量模型表示。

势被表示为一组特征,势表通常由具有与其相关联的权重的特征来表示。

如果 D 是一组变量,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是一个因子,那么:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,随着能量的增加,概率降低,反之亦然。在统计物理学中,在外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传中捕获的对数细胞频率被称为对数线性。联合概率可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是定义在DI 中变量上的特征函数。

独立自主

像贝叶斯网络一样,马尔可夫网络也编码了一组控制无向图中影响流的独立性假设。

全球

一组节点 Z 分隔一组节点 XY ,如果 X 中任意节点之间没有活动路径? XYY 给定 Z 。图 G 中的独立性为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

成对马氏

两个节点, XY ,如果它们之间没有直接的边,那么它们是独立的。这种属性具有局部独立性,是所有属性中最弱的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

马氏毯

给定其马尔可夫毯,节点独立于图中的所有其他节点,这是马尔可夫网络中的一个重要概念:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里***= X 的马氏毯*。**

图 15 显示了一个马氏毯为变量 X 为其的父母、子女和子女的父母:

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15。节点 X 的 Markov blanket 它的父节点、子节点和子节点的父节点。**

推论

MNs 中的推理是类似的# P-完全问题,因此应用了类似的近似或试探法。贝叶斯网络中讨论的大多数精确和近似推理技术,如变量消去法、连接树法、信念传播法等,都可以直接应用于马尔可夫网络。边缘和条件保持相似,并通过集团上的潜在函数进行计算,如下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传****外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

马尔可夫毯简化了一些计算。

学习

由于划分函数中所有参数的纠缠,学习马尔可夫网络中的参数是复杂且计算昂贵的。将计算分解成局部分布的有利步骤无法完成,因为划分函数需要网络中所有变量的因子耦合。

MN 中的最大似然估计没有封闭形式的解,因此使用诸如梯度下降的增量技术来优化整个参数空间。优化函数可以显示为凹函数,从而确保全局最优,但是梯度下降中的每一步迭代都需要在整个网络上进行推理,这使得计算成本很高并且有时难以处理。

贝叶斯参数估计需要对整个参数空间进行积分,这同样没有封闭形式的解,甚至更难。因此,最常见的是,近似学习方法,如马尔可夫链蒙特卡罗** ( MCMC )用于 MNs。**

MNs 中的结构学习类似于甚至比参数学习更难,并且已经被证明是 NP 难的。在基于约束的方法中,对于给定的数据集,测试变量之间的条件独立性。在 MNs 中,使用变量对之间的互信息来测试每对变量的条件独立性。然后,基于阈值,边缘被认为存在于该对之间或者不存在。这种方法的一个缺点是需要非常大量的样本来反驳数据中存在的任何噪声。由于成对边缘的出现而导致的网络的复杂性是另一个限制。

在搜索和基于分数的学习中,目标类似于 BNs,其中搜索是针对结构进行的,并且基于各种技术计算分数以帮助和调整搜索。在 MNs 的情况下,我们使用对数线性模型中描述的特征,而不是电势。在优化和评分过程中考虑特征的权重。

条件随机字段

条件 随机场 ( CRFs )是马尔可夫网络的一种特殊形式,其中隐藏的和可观察的主要针对标记序列预测问题进行建模(参考文献【16】)。序列预测问题出现在许多文本挖掘领域,如下一个单词/字母预测、词性 ( 词性)标注等,以及用于 DNA 或蛋白质序列预测的生物信息学领域。

CRFs 背后的思想是序列的条件分布被建模为特征函数,并且标记的数据被用于通过优化经验分布来学习,如下图所示。

*条件分布表示如下,其中 Z ( x )是归一化常数。最大似然用于*的参数估计?一般是通过梯度下降等迭代优化方法获得的对数线性凸函数。

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传****外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 16:映射到词类标记域中序列预测区域的条件随机字段。** **

专业网络

在本节中,我们将涵盖一些基本的专业概率图模型,这些模型在不同的机器学习应用中非常有用。

树形增强网络

在第二章、现实世界监督学习的实用方法中,我们讨论了朴素贝叶斯网络,它做出了所有变量相互独立的简化假设,只依赖于目标或类变量。这是从数据集导出或假设的最简单的贝叶斯网络。正如我们在前面几节中看到的,学习贝叶斯网络中的复杂结构和参数可能很困难,有时甚至很棘手。树增强网络TAN ( 引用【9】)可以被认为是中间的某个地方,引入了对树如何连接的约束。TAN 对特征或变量关系进行约束。除了目标变量之外,一个特征只能有一个其他特征作为父特征,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 17。显示与朴素贝叶斯和贝叶斯网络的比较以及每个节点一个父节点的约束的树扩充网络。

输入和输出

输入是将所有特征作为变量的训练数据集 D …} 。如果不需要作为预处理步骤进行离散化,则要素具有离散的结果。

输出作为贝叶斯网络与 CPT。

它是如何工作的?

  1. 从训练数据集中计算每对变量之间的互信息。
  2. 建立一个无向图,每个节点是变量,边是它们之间的互信息。
  3. 创建一棵最大加权生成树。
  4. 通过选择结果或目标变量作为根,并使所有边向外流动,将生成树转换为有向图。
  5. 如果类变量和其他特征之间没有有向边,则添加它。
  6. 基于之前构建的 DAG 或 TAN 计算 CPT。

优点和局限性

  • 在许多实际模型中,它比朴素贝叶斯更准确。与完全贝叶斯网络相比,它的构建和计算更简单、更快速。

马尔可夫链

马尔可夫链是专门的概率图模型,有向图包含循环。马尔可夫链可以被视为自动机的扩展,其中权重是转移的概率。马尔可夫链对于建模可直接观察到的时间或序列变化非常有用。进一步研究见(参考文献【12】)。

图 17 表示一个马尔可夫链(一阶),其一般定义可作为一个随机过程给出,包括

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传节点为状态。

表示状态或节点之间转移概率的边。一般用矩阵外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传来表示,它是一个 N X N 的矩阵,其中 N 是节点或状态的个数。在给定状态qk 的情况下,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的值捕捉到节点ql 的转移概率。矩阵的行加 1 和外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的值。

处于该状态的初始概率, p = { p [1] , p [2] ,… p [N] }。

因此,它可以写成三元组 M = (Q, A , p )并且处于任何状态的概率只取决于最后一个状态(一阶):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

联合概率:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 18。一阶马尔可夫链

隐马尔可夫模型

在许多真实世界的情况下,我们感兴趣的事件是无法直接观察到的。例如,句子中的单词是可观察的,但生成句子的词性却不是。隐马尔可夫 模型 ( HMM )帮助我们对这类存在可观测事件和隐藏状态的状态进行建模(参考文献【13】)。HMM 广泛用于各种建模应用,例如语音识别、语言建模、时间序列分析和生物信息学应用,例如 DNA/蛋白质序列预测。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 19。显示隐藏变量和可观测值的隐藏马尔可夫模型。

隐藏的马尔可夫模型可以再次定义为三重外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,其中:

  • 是一组被观察到的有限状态或符号。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • q 是一组不可观测的有限状态外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • t 是参数。

给定为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的状态转移矩阵捕获了从状态qk 到ql 的转移概率。

捕捉隐藏状态和观察状态之间关系的发射概率,给定为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传b ??。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

初始状态分布 p = { p [1] , p [2] ,… p [N] }。

因此,HMM 中由一系列隐藏状态 Q = { q [1] , q [2] ,… q [L] }组成的路径是一阶马尔可夫链 M = (Q, Ap )。HMM 中的这条路径发出一个符号序列, x [1] , x [2] , x [L] ,称为观测值。因此,已知观察和隐藏状态,联合概率是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在现实世界的情况下,我们只知道观察值 x ,不知道隐藏状态 q 。HMM 帮助我们回答以下问题:

  • 最有可能产生观察结果 x 的路径是什么?
  • x 的概率是多少?
  • 给定观察值,处于状态 q i = k 的概率是多少?

HMM 中最可能的路径

让我们假设观察值 x = x [1] , x [2] , x [L] ,我们想要找到生成观察值的路径外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。这可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

路径 q* 不需要是唯一的,但是为了计算和解释,通常假设唯一的路径。以一种天真的方式,我们可以计算长度为 Lq 的所有可能路径,并选择具有最高概率给出指数计算项或速度的路径。更有效的是使用维特比算法,使用动态规划和递归的概念。它的工作原理很简单,就是将等式分解成更简单的项,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给定初始条件外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,使用动态规划并保持指针指向路径,我们可以有效地计算答案。

隐马尔可夫模型中的后验解码

在给定观测值 x 的情况下,处于状态qIk 的概率可以使用贝叶斯定理写成:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分子可以改写为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传称为前向变量,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传称为后向变量。

前向变量的计算类似于维特比算法,使用动态编程和递归,而不是求和:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

观察到 x 的概率可以是,那么

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前向变量是联合概率,后向变量是条件概率:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它被称为反向变量,因为动态编程表是从第L第列开始反向填充到第一列的。后向概率也可用于计算观察到 x 的概率,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

工具和用法

在这一节中,我们将介绍 Java 中两个非常流行的概率图建模工具。

OpenMarkov

OpenMarkov 是一个基于 Java 的 PGM 工具,下面是来自 www.openmarkov.org ?? 的描述:

注意

OpenMarkov 是由 UNED 智能决策支持系统研究中心开发的概率图形模型(PGM)软件工具。

它被设计用于:编辑和评估几种类型的 PGM,如贝叶斯网络、影响图、分解马尔可夫模型等等,从数据中交互式地学习贝叶斯网络,以及成本效益分析。

OpenMarkov 非常擅长从数据中执行交互式和自动化学习。它能够对数据进行预处理(使用频率和值进行离散化),并使用一些搜索算法(如基于搜索的爬山法和基于分数的 PC)进行结构和参数学习。OpenMarkov 以一种称为 pgmx 的格式存储模型。要在大多数传统包中应用模型,可能需要将 pgmx 模型转换为 XMLBIF 格式。各种开源工具提供了这些转换。

这里我们有一些截图,展示了如何使用 OpenMarkov 从数据中学习结构和参数。

图 20 中,我们看到了交互式学习屏幕,您可以在其中选择要使用的数据文件和算法:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 20。OpenMarkov GUI–交互式学习,算法选择

下一步是 预处理选项卡(图 21 ,在这里我们可以选择如何进行离散化:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 21。open Markov GUI–预处理屏幕

最后,在图 22 中,我们看到学习过的贝叶斯网络结构的显示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 22。open Markov GUI–结构输出

Weka 贝叶斯网络 GUI

与 OpenMarkov 相比,Weka 的用于交互式和自动化学习的 Bayes 网络编辑器具有大量用于 Bayes 网络表示、推理和学习的选项。使用 Weka 的优势是可以获得许多集成良好的预处理和转换过滤器、算法、评估和实验指标。

图 23 中,我们看到了贝叶斯网络编辑器,其中选择了搜索算法,并且可以配置各种选项:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 23。WEKA Bayes 网络–配置搜索算法

图 24 的输出屏幕中显示了学习到的贝叶斯网络的结构和参数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 24。WEKA Bayes 网络——学习参数和结构

案例研究

在本节中,我们将使用真实世界的机器学习数据集进行案例研究,以说明贝叶斯网络中的一些概念。

我们将使用 UCI 成人数据集,也称为人口普查收入数据集(【http://archive.ics.uci.edu/ml/datasets/Census+Income】??)。这个数据集是从美国人口普查局 1994 年的人口普查数据中提取的。数据的捐赠者是 Ronny Kohavi 和 Barry Becker,他们当时在 Silicon Graphics 工作。该数据集由 48,842 个实例组成,具有 14 个属性,混合了分类和连续类型。目标类是二进制的。

商业问题

问题包括基于人口普查数据预测人口成员的收入,特别是他们的收入是否大于 50,000 美元。

机器学习映射

这是一个分类问题,这一次我们将训练贝叶斯网络来开发预测模型。我们将使用线性、非线性和集成算法,就像我们在前几章的实验中所做的那样。

数据采样和转换

在原始数据集中,有 3620 个实例具有缺失值和六个重复或冲突实例。这里我们只包括没有丢失值的例子。这个集合,没有未知数,被分成 30,162 个训练实例和 15,060 个测试实例。

特征分析

特性及其描述在表 3 中给出:

|

特征

|

类型信息

|
| — | — |
| 年龄 | 连续的。 |
| workclass | 私人,自我雇佣公司,自我雇佣公司,联邦政府,地方政府,州政府,无薪,从未工作过。 |
| fnlwgt | 连续的。 |
| 教育 | 学士,一些学院,11,HS-grad,Prof-school,Assoc-acdm,Assoc-voc,9,7-8,12,硕士,1-4,10,博士,5-6,学前。 |
| 教育-数量 | 连续的。 |
| 婚姻状况 | 已婚配偶,离婚,未婚,分居,丧偶,已婚配偶不在,已婚配偶。 |
| 职业 | 技术支持,工艺修理,其他服务,销售,行政管理,专业,清洁工,机器操作,检查,行政,文书,农业,渔业,运输,私人服务,保护服务,武装部队。 |
| 关系 | 妻子,自己的孩子,丈夫,非家庭成员,其他亲属,未婚。 |
| 人种 | 白人、亚洲太平洋岛民、美洲印第安爱斯基摩人、其他人、黑人。 |
| 性 | 女,男。 |
| 资本收益 | 连续的。 |
| 资本损失 | 连续的。 |
| 每周小时数 | 连续的。 |
| 母国 | 美国、柬埔寨、英国、波多黎各、加拿大、德国、美国外围(关岛-USVI 等)、印度、日本、希腊、中国、古巴、伊朗、洪都拉斯、菲律宾、意大利、波兰、牙买加、越南、墨西哥、葡萄牙、爱尔兰、法国、多米尼加共和国、老挝、厄瓜多尔、台湾、海地、哥伦比亚、匈牙利、危地马拉、尼加拉瓜、苏格兰、泰国、南斯拉夫、萨尔瓦多、特立尼达和多巴哥&秘鲁、香港、荷兰。 |

表 3。UCI 成人数据集–特征

数据集按标签分为 24.78% (>50K)到 75.22% ( <= 50K). Summary statistics of key features are given in )图 25 :

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 25。功能摘要统计

模型、结果和评估

我们将使用不同风格的贝叶斯网络结构以及常规的线性、非线性和集成算法对成人数据集进行详细分析。Weka 还可以选择使用菜单项在训练数据集上可视化图形模型,如图图 26 所示。当领域专家想要理解图模型的假设和结构时,这非常有用。如果领域专家想要更改或改变网络,可以使用贝叶斯网络编辑器轻松完成并保存。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 26。WEKA Explorer–可视化菜单

图 27 显示了经过训练的贝叶斯网络模型的图形结构的可视化:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 27:贝叶斯网络学习结构的可视化。

用于实验的算法有:

  • 贝叶斯网络分类器
  • 连续数据上带缺省核估计的朴素贝叶斯
  • 连续数据监督离散化的朴素贝叶斯
  • 使用 K2 算法和每个节点三个父节点的选择的具有搜索分数结构参数学习的树扩充网络(TAN)
  • 带搜索和评分的贝叶斯网络
  • 使用爬山和 K2 搜索
  • 使用简单估计进行评分
  • 父母的选择从两个变为三个,以说明对指标的影响
  • 非贝叶斯算法
  • 逻辑回归(默认参数)
  • KNN(有 10 个邻国的 IBK)
  • 决策树(J48,默认参数)
  • AdaBoostM1(决策树桩和默认参数)
  • 随机森林(默认参数)

表 4 给出了实验中使用的所有学习器的评估度量,包括贝叶斯网络分类器以及非贝叶斯算法:

|

算法

|

TP 率

|

FP 率

|

精确

|

回忆

|

f-测度

|

玛丽勒本板球俱乐部

|

ROC 区域

|

中国地区

|
| — | — | — | — | — | — | — | — | — |
| 朴素贝叶斯(核估计量) | Zero point eight three one | Zero point three nine one | Zero point eight two one | Zero point eight three one | Zero point eight two two | Zero point four nine four | Zero point eight nine one | Zero point nine zero six |
| 朴素贝叶斯(离散化) | Zero point eight four three | Zero point one nine one | Zero point eight six one | Zero point eight four three | Zero point eight four eight | Zero point six | Zero point nine one seven | Zero point nine three |
| TAN (K2,3 个父母,简单估计量) | Zero point eight five nine | Zero point two seven three | Zero point eight five six | Zero point eight five nine | Zero point eight five seven | Zero point six | Zero point nine one six | Zero point nine three one |
| BayesNet (K2,3 个双亲,简单估计量) | Zero point eight six three | Zero point two eight three | Zero point eight five eight | Zero point eight six three | Zero point eight six | Zero point six zero five | Zero point nine three four | Zero point nine one nine |
| BayesNet (K2,2 个双亲,简单估计量) | Zero point eight five eight | Zero point two eight three | Zero point eight five four | Zero point eight five eight | Zero point eight five five | Zero point five nine four | Zero point nine one seven | Zero point nine three two |
| BayesNet(爬山,3 个父母,简单估计) | Zero point eight six two | Zero point two nine three | Zero point eight five seven | Zero point eight six two | Zero point eight five nine | Zero point six zero two | Zero point nine one eight | Zero point nine three three |
| 逻辑回归 | Zero point eight five one | Zero point three three two | Zero point eight four four | Zero point eight five one | Zero point eight four five | Zero point five six one | Zero point nine zero three | Zero point nine one seven |
| KNN (10) | Zero point eight three four | Zero point three seven five | Zero point eight two four | Zero point eight three four | Zero point eight two six | Zero point five zero six | Zero point eight six seven | Zero point eight seven four |
| 决策树(J48) | Zero point eight five eight | Zero point three | Zero point eight five three | Zero point eight five eight | Zero point eight five five | Zero point five nine | Zero point eight nine | Zero point nine zero four |
| AdaBoostM1 | Zero point eight four one | Zero point four one five | Zero point eight three three | Zero point eight four one | Zero point eight two six | Zero point five one three | Zero point eight seven two | Zero point eight seven three |
| 随机森林 | Zero point eight four eight | Zero point three three three | Zero point eight four one | Zero point eight four eight | Zero point eight four three | Zero point five five five | Zero point eight nine six | Zero point nine one three |

表 4。分类器性能指标

结果分析

监督离散化的朴素贝叶斯表现出比核估计相对更好的性能。这给出了一个有用的提示,即大多数贝叶斯网络都需要的离散化将发挥重要作用。

表中的结果表明,随着贝叶斯网络复杂性的增加,性能会不断提高。例如,具有离散化的朴素贝叶斯假设独立于所有特征,并显示出 84.3 的 TP 率,可以有多个父代的 TAN 算法显示出 85.9 的 TP 率,而具有三个父代的 BN 显示出 86.2 的最佳 TP 率。这清楚地表明,具有不超过三个父节点的一些节点的复杂 BN 可以捕获领域知识,并很好地对其进行编码,以根据看不见的测试数据进行预测。

贝叶斯网络使用搜索和评分(使用 K2 搜索三个父节点,使用贝叶斯评分进行评分)来学习结构,并使用简单估计来进行估计,在几乎所有评估指标中表现最佳,如高亮显示的值所示。

贝叶斯网络(使用搜索和爬山得分来学习结构)和 K2 之间的差异非常小,这表明即使是局部搜索算法也可以找到最优解。

具有三亲结构的贝叶斯网络在几乎所有关于看不见的测试数据的指标上击败了大多数线性、非线性和集成方法,例如 AdaBoostM1 和 Random Forest。这显示了 BNs 不仅在学习具有大量缺失值的小数据集的结构和参数方面以及在预测未知数据方面的优势,而且在击败其他复杂算法方面也是如此。

总结

PGM 将领域知识捕获为变量之间的关系,并表示联合概率。它们被用于一系列应用中。

概率将一个事件映射到一个介于 0 和 1 之间的真实值,可以解释为对事件发生频率的度量(频率主义者观点)或对该事件的信任程度(贝叶斯观点)。随机变量、条件概率、贝叶斯定理、链式法则、边际和条件独立性以及因子的概念构成了理解 PGMs 的基础。地图和边际地图查询是询问有关图表中的变量和关系的方法。

图的结构和它们的属性,例如路径、踪迹、循环、子图和集团,对于理解贝叶斯网络是至关重要的。表征、推理和学习构成了网络的核心元素,帮助我们使用这些方法捕捉、提取和预测。从图的表示中,我们可以推断出影响流并检测独立性,这有助于减少查询模型时的计算负载。连接树、变量消除和信任传播方法同样通过简化步骤使查询的推断更易处理。从贝叶斯网络中学习包括从数据中生成结构和模型参数。我们讨论了学习参数和结构的几种方法。

马尔可夫网络 ( MN ),其具有无向边,也包含可以使用参数化技术捕获的交互,例如吉布斯参数化、因子图和对数线性模型。MN 中的独立性支配着影响流,就像贝叶斯网络一样。推理技巧也差不多。学习 MN 中的参数和结构是困难的,并且使用近似方法。诸如树增强网络 ( TAN )之类的专用网络假设节点之间相互独立,并且在一些应用中非常有用。马尔可夫链和隐马尔可夫模型是在一系列领域中也找到应用的其他专业网络。

开放马尔可夫和 Weka 贝叶斯网络图形用户界面作为基于 Java 的工具引入 PGMs。本章的案例研究使用贝叶斯网络从 UCI 成人人口普查数据集学习,并将其性能与其他(非 PGM)分类器进行比较。

参考文献

  1. 达芙妮·柯勒和尼尔·弗里德曼(2009 年)。概率图形模型。麻省理工出版社。国际标准书号 0-262-01319-3。
  2. T.维尔马和 j .珀尔(1988),蒙大拿州第四届人工智能不确定性研讨会论文集,第 352-359 页。因果网络-语义和表达。
  3. 达古姆博士和卢比博士(1993 年)。在贝叶斯信念网络中近似概率推理是 NP 难的。人工智能 60(1):141–153。
  4. 单位伯特勒和 f .布里奥奇,非序列动态规划,学术出版社。纽约,1972 年。
  5. Shenoy,P. P .和 G. Shafer (1990 年)。概率和信任函数传播的公理,载于《人工智能中的不确定性》, 4,169-198,荷兰北部,阿姆斯特丹
  6. 巴亚里和德格鲁特(1989 年)。选择模型中的信息。概率和贝叶斯统计。),全会出版社,纽约。
  7. Spiegelhalter 和 Lauritzen (1990 年)。有向图形结构上条件概率的顺序更新。网络 20。第 579-605 页。
  8. 大卫·赫克曼,丹·盖格,大卫·M·奇克林(1995)。《机器学习杂志》。学习贝叶斯网络:知识和统计数据的结合
  9. n .弗里德曼、d .盖格和 m .戈尔兹米特(1997 年)。贝叶斯网络分类器。机器学习,29,131–163。
  10. Isham,V. (1981 年)。空间点过程和马尔可夫随机场的介绍。国际统计评论,49(1):21–43
  11. Frank R. Kschischang、Brendan J. Frey 和 Hans-Andrea Loeliger,因子图和积算法,IEEE Trans。信息。理论,第 47 卷,第 498-519 页,2001 年 2 月。
  12. Kemeny,J. G .和 Snell,J. L. 有限马尔可夫链。纽约:施普林格出版社,1976 年。
  13. 鲍姆;t .佩特里(1966 年)。有限状态马氏链概率函数的统计推断。数理统计年鉴。37 (6): 1554–1563.
  14. Gelman,a .,Hwang,j .和 Vehtar,A. (2004 年)。了解贝叶斯模型的预测信息标准。统计与计算杂志 24: 997。doi:10.1007/s11222-013-9416-2
  15. 迪米特里斯。玛格丽特酒(2003 年)。从数据中学习贝叶斯网络模型结构。卡内基梅隆大学博士论文。
  16. 约翰·拉弗蒂、安德鲁·麦卡勒姆、费尔南多·佩雷拉(2001 年)。条件随机场:分割和标记序列数据的概率模型,2001 年国际机器学习会议(ICML 2001),第 282-289 页。*****

七、深度学习

在第二章、现实世界监督学习的实用方法中,我们讨论了不同的监督分类技术,这些技术是通用的,可以在广泛的应用中使用。在受监督的非线性技术领域,特别是在计算机视觉领域,深度学习及其变体正在产生显著的影响。我们发现深度学习和相关方法可以应用于图像识别、图像和对象注释、电影描述,甚至文本分类、语言建模、翻译等领域。(参考文献【1、2、3、4、5】)

为了为深度学习奠定基础,我们将从描述什么是神经元以及如何排列它们来构建多层神经网络开始,呈现这些网络的核心元素,并解释它们如何工作。然后,我们将讨论与神经网络相关的问题,这些问题导致了深度学习的进步和结构变化。我们将了解深度学习的一些构建模块,如受限玻尔兹曼机器和自动编码器。然后,我们将通过监督和非监督学习的不同变化来探索深度学习。接下来,我们将参观卷积神经网络(CNN ),并通过一个用例,通过解构 CNN 在计算机视觉领域的应用来说明它们是如何工作的。我们将介绍递归神经网络(RNN)及其变体,以及它们如何用于文本/序列挖掘领域。最后,我们将展示一个使用 MNIST 图像真实数据的案例研究,并使用它来比较/对比不同的技术。我们将使用 DeepLearning4J 作为我们的 Java 工具包来执行这些实验。

多层前馈神经网络

历史上,人工神经网络在很大程度上是通过多层前馈感知器来识别的,因此我们将从讨论此类网络结构的原始元素、如何训练它们、过拟合问题以及解决该问题的技术开始。

输入、神经元、激活函数和数学符号

单个神经元或感知器与第二章、现实世界监督学习实用方法中线性回归主题中描述的单元相同。在本章中,数据实例向量将是由 x 表示的,并且有 d 个维度,每个维度可以表示为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。与每个维度相关联的权重被表示为具有 d 维度的权重向量 w ,并且每个维度可以被表示为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。每个神经元都有一个与之相关的额外输入 b ,称为偏置。

神经元预激活执行由下式给出的输入的线性变换:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

激活函数由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给出,它将神经元输入外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传转换如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图一。感知器通过输入、权重和偏置反馈来产生输出。

多层神经网络

多层神经网络是理解深度学习网络的第一步,因为多层网络的基本概念和原语构成了所有深度神经网络的基础。

结构和数学符号

我们在这一节介绍神经网络的一般结构。大多数神经网络都是这里概述的结构的变体。我们还提供了相关的符号,我们将在本章的其余部分使用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图二。显示一个输入层、两个隐藏层和一个输出层的多层神经网络。

与神经网络相关的最常见的监督学习算法使用多层感知器。输入层由几个神经元组成,每个神经元独立地连接到输入,有自己的一组权重和偏置。除了输入层,还有一层或多层神经元,称为隐藏层。输入层神经元连接到第一个隐藏层中的每个神经元,该层类似地连接到下一个隐藏层,依此类推,从而形成完全连接的网络。连接到最后一个隐藏层的神经元层称为输出层。

每个隐藏的层由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传表示,其中 k 是层。层 0 < k < l 的预激活由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

隐藏层激活为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最终的输出层激活是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输出通常是每个神经元一个类,并且它以这样的方式被调整,即只有一个神经元被激活,而所有其他神经元的输出为 0。带有外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的 softmax 函数用于给出结果。

神经网络中的激活函数

神经网络中使用的一些最著名的激活函数在以下章节中给出,使用它们是因为学习中需要的导数可以用函数本身来表示。

乙状结肠功能

Sigmoid 激活函数由以下等式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它可以被视为一个有界的、严格递增的正变换函数,将值压缩在 0 和 1 之间。

双曲正切(" tanh ")函数

以下等式给出了双曲正切函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它可以被看作是有界的,严格递增的,但作为一个正的或负的变换函数,压缩-1 和 1 之间的值。

训练神经网络

在本部分,我们将讨论从输入训练集训练神经网络的关键要素,其方式与我们在第二章、现实世界监督学习的实用方法中所做的大致相同。数据集由 D 表示,由单独的数据实例组成。实例通常表示为集合外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。每个实例的标签表示为集合外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。具有数值或实值特征的整个标注数据集被表示为集合中的成对元素,如外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传所示。

经验风险最小化

经验风险最小化是一个通用的机器学习概念,用于许多分类或监督学习。这种技术背后的主要思想是将训练或学习问题转化为优化问题(参考文献 [13])。

给定神经网络的参数为**?** = ({ W ¹ , W ² ,…W*L*(+1)},{ b ¹ , b ² ,…bL)这样

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中第二章、现实世界监督学习的实用方法和第五章、*实时流机器学习中讨论的【随机梯度下降】、*通常被用作优化过程。应用于训练神经网络的 SGD 是:

  1. 初始化**?** = ({ W ¹ , W ² ,…W*L*(+1)},{ b ¹ , b ² ,…bL

  2. 对于每个训练样本,i=1 到 N 个历元

    1. (x^t, y ^t ) 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 //求函数 2 的梯度?= ?+ a?//向

    方向移动

这里使用的学习速率(a)将通过减少最优值附近的振荡来影响算法的收敛;选择 a 的正确值通常是一个超级参数搜索,需要在第二章、现实世界监督学习实用方法中描述的验证技术。

因此,为了学习神经网络的参数,我们需要选择进行参数初始化的方式,选择损失函数外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,计算参数梯度外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,将损失传播回来,选择正则化/罚函数 O( ),并计算正则化梯度外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。在接下来的几节中,我们将一步一步地描述这一点。

参数初始化

神经网络的参数是从输入层,经过隐层,到输出层的每一层的权重和偏差。由于优化取决于启动或初始化,因此在这方面已经有了很多研究。偏差通常设置为 0。权重初始化取决于激活函数,因为有些函数(如 tanh,值 0)无法使用。通常,初始化每层权重的方法是使用具有用户定义边界的对称函数进行随机初始化。

损失函数

损失函数的主要作用是最大化预测输出标签与输入数据向量类别的匹配程度。

因此,最大化外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传相当于最小化对数似然或交叉熵的负值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

渐变

我们将描述输出层和隐藏层的渐变,但不涉及推导,因为这超出了本书的范围。感兴趣的读者可以看看鲁梅尔哈特、辛顿和威廉姆斯在文中的推导(参考文献 [6])。

输出层的渐变

输出层的梯度可计算如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 e(y) 被称为“一个热向量”,其中向量中只有一个值是 1,对应于正确的类别 y ,其余的值是 0。

输出层预激活处的梯度可以类似地计算:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

=–(e(y)–f(x))

隐藏层的渐变

使用偏导数的链式法则计算隐藏层梯度。

隐藏层的渐变外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

隐藏层预激活的梯度可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由于隐藏层预激活需要如前所示的激活函数的偏导数(g’(a^kx[j])),所以之前描述的一些众所周知的激活函数在方程本身方面具有偏导数,这使得计算非常容易。

例如,sigmoid 函数的偏导数是g '(a)= g(a)(1–g(a)),对于 tanh 函数,它是 1-g(a)²。

参数梯度

必须使用权重和偏差的梯度来计算参数的损失梯度。权重的梯度可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

偏差的梯度可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

前馈和反向传播

神经网络训练的目的是调整每一层的权重和偏差,以便根据来自输出层的反馈和估计预测输出和实际输出之间差异的损失函数,使差异最小化。

基于初始权重和偏差的神经网络算法可以被视为逐层转发计算,如具有一个隐藏层的非循环流程图所示,以演示流程:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3:前馈中的神经网络流程图。

根据输入向量以及权重和偏差的预初始化值,计算每个后续元素:预激活、隐藏层输出、最终层预激活、最终层输出以及相对于实际标签的损失函数。在反向传播中,流量正好相反,从输出端的损耗下降到第一层的权重和偏差,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4:反向传播中的神经网络流程图。

它是如何工作的?

反向传播算法(引用【6 和 7】)的整体可以总结如下:

激活前计算输出梯度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于隐藏层 k=l+1 到 1 :

计算隐藏层参数的梯度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

计算当前下方隐藏层的梯度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

激活前计算层的梯度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正规化

在之前定义的经验风险最小化目标中,正则化用于解决机器学习中的过拟合问题,如第二章、现实世界监督学习的实用方法中所介绍。众所周知的正则化函数给出如下。

L2 正规化

这仅适用于权重,而不适用于偏差,并适用于连接( i,j )组件的层,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同样,正则化子的梯度可以计算为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。它们通常被解释为权重分布的“高斯先验”。

L1 正则化

这再次应用于仅应用于权重而非偏差,并且对于连接 (i,j) 组件的层给出为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

并且这个正则化子的梯度可以计算为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。它通常被解释为权重分布的“拉普拉斯先验”。

神经网络的局限性

在本节中,我们将详细讨论神经网络所面临的问题,这些问题将成为构建深度学习网络的垫脚石。

消失梯度、局部最优和慢速训练

神经网络的一个主要问题是“消失梯度”的问题。我们将试图对这个问题给出一个简单的解释,而不是深入探究数学推导。如下图所示,我们将选择 sigmoid 激活函数和两层神经网络来演示该问题:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5:渐变消失问题。

正如我们在激活函数描述中看到的,sigmoid 函数压缩范围 0 和 1 之间的输出。sigmoid 函数*g’(a)= g(a)(1–g(a))*的导数的范围在 0 到 0.25 之间。学习的目标是最小化输出损失,即外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。一般来说,输出误差不会到 0,所以最大迭代次数;用户指定的参数决定了学习的质量和误差的反向传播。

简化以说明输出误差对输入权重图层的影响:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

例如,从输出到隐藏的每一个变换都涉及两个项的乘法,这两个项都小于 1:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,当到达输入层时,该值变得非常小,梯度的传播几乎消失。这就是所谓的消失梯度问题。

当您需要添加更多的层以使隐藏层中的特征更有趣时,一种矛盾的情况出现了。但是增加更多的层也会增加误差。随着您添加更多图层,输入图层变得“训练缓慢”,这导致输出图层更加不准确,因为它们依赖于输入图层;此外,对于相同的迭代次数,误差随着层数的增加而增加。

在最大迭代次数固定的情况下,更多的层和缓慢的误差传播会导致“局部最优”

基本神经网络的另一个问题是参数的数量。随着层数的增加,找到每个隐藏层和偏差的有效大小和权重变得更加困难。如果我们增加层数,参数以多项式形式增加。拟合数据的参数需要大量的数据样本。这可能导致之前讨论的问题,即过度拟合。

在接下来的几节中,我们将开始学习有助于克服这些问题的深度学习的构建模块。

深度学习

深度学习包括用于监督和非监督学习的架构和技术,能够使用由构建模块组成的网络来内部化高维数据的抽象结构,以创建判别或生成模型。近年来,这些技术被证明是非常成功的,任何有兴趣掌握它们的读者都必须首先熟悉深度学习的基本构建模块,并了解从业者使用的各种类型的网络。如果你想对这个主题有更深的理解,建立和调整深度神经网络的实践经验是非常宝贵的。在诸如图像分类和文本学习的各种领域中,深度学习在其结构中结合了特征生成,从而使得挖掘特征的任务在许多应用中是多余的。以下部分提供了概念、构建模块、构建架构的技术以及训练深度网络的指南。

深度学习的构建模块

在接下来的章节中,我们将介绍深度学习中使用的最重要的组件,包括受限玻尔兹曼机器、自动编码器和去噪自动编码器,以及它们的工作方式、优势和局限性。

校正线性激活函数

Reclin 函数由下式给出:

g(a)= reclin(a)= max(0*,* a )

可以看做有下界为 0 无上界,严格递增,正变换函数只是做正的线性变换。

更容易看出,整流线性单位或 ReLu 具有 1 的导数,或者对于大于 0 的值具有恒等式。这是一个很大的好处,因为衍生品不会被挤压,并且在链接时不会有递减的价值。ReLu 的一个问题是负输入的值为 0,相应的神经元表现为“死亡”,特别是当偏差项学习到大的负值时。因为输入和导数都是 0,所以 ReLu 不能从此恢复。这通常通过具有“泄漏的 ReLu”来解决。这些函数对于负输入值很小,由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给出,其中?= 0.01,典型值。

受限玻尔兹曼机器

受限波尔兹曼机器(RBM)是一种无监督学习的神经网络(参考文献 [11])。RBM 的想法是从有标签或无标签的数据中提取“更多有意义的特征”。它还意味着当访问已标记数据成本高昂或困难时,从许多领域中可用的大量未标记数据中“学习”。

定义和数学符号

在其基本形式中,RBM 假设输入在每个维度上都是二进制值 0 或 1。RBM 是具有两层的无向图形模型,可见层表示为 x ,隐藏层表示为 *h、*和连接 W

RBM 定义了可见层上的分布,它包含了隐藏层的潜在变量。首先,定义一个能量函数,以矢量形式捕捉可见层和隐藏层之间的关系,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在标量形式中,能量函数可以定义为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分布的概率由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给出,其中 Z 被称为“配分函数”,它是对所有二进制的 x 和 h 的值的枚举,导致指数项,从而使其难以处理!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 6:可见层和隐藏层之间的连接。

可以使用所有成对因子以标量形式表示相同的马尔可夫网络视图,如下图所示。这也清楚地说明了为什么它被称为“受限”玻尔兹曼机,因为在给定的隐藏层或可见层中的单元之间没有联系:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 7:作为标量的输入和隐藏层

我们已经看到,整个概率分布函数外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是难以处理的。我们现在将推导出 x,h 的基本条件概率分布。

条件分布

虽然计算整个 p(x,h) 是困难的,但是 p(x|h)p(h|x) 的条件分布可以很容易地被定义和显示为伯努利分布并且是易处理的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

类似地,由于对称且无向:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RBM 的自由能源

输入或观察变量的分布为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

函数 F(x) 叫做自由能。

训练 RBM

使用最小化整个训练数据的平均负对数似然的优化目标来训练 RBM。这可以表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过使用随机梯度下降进行优化:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

术语外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传被称为“正阶段”,术语外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传被称为“负阶段”,因为它们如何影响概率分布——正阶段,因为它通过减少自由能来增加训练数据的概率,负阶段,因为它减少模型生成样本的概率。

已经表明,由于“负相位”的存在,整体梯度很难解析计算,因为它是在模型形成的分布下计算输入数据的所有可能配置的期望值,并使其难以处理!

为了使计算易于处理,使用固定数量的模型样本进行估计,它们被称为“负粒子”,用 N 表示。

梯度现在可以写成近似值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中粒子外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传使用一些采样技术进行采样,例如蒙特卡罗方法。

在 RBM 取样

吉布斯采样(Gibbs sampling)是常用于生成样本并根据 p(x|h)p (h|x) 学习 p(x,h) 的概率的技术,相对容易计算,如前所示。

用于 N 个随机变量外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的联合采样的吉布斯采样使用形式为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的 N 个采样子步骤来完成,其中S**-I包含直到并且不包括步骤 S [ i ] 的样本。从图形上看,这可以显示如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 8:隐藏层和输入层之间采样的图形表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传所示,可以看出采样代表实际分布 p(x,h)

对比分歧

对比发散(CD)是一种用于加速前面描述的吉布斯采样过程的技巧,因此它在过程的步骤 k 处停止,而不是持续很长时间来保证收敛。已经看到,甚至 k=1 也是合理的,并且给出了良好的性能(引用【10】)。

输入和输出

这些是算法的输入:

  • 训练数据集
  • 吉布斯采样的步骤数, k
  • 学习率 a
  • 输出是一组更新的参数
它是如何工作的?

使用具有自由能函数和偏导数的 CD 的完整训练伪码可以给出如下:

  1. 对于训练中的每个实例 x ^t :

    1. 使用吉布斯采样的 k 步骤生成一个负粒子外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

持续的对比分歧

持续的对比背离是用于计算联合概率 p(x,h) 的另一个技巧。在这种方法中,有一个单链不会在每次观察样本后重新初始化,以找到负粒子外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。它保持其状态,并通过使用上一步中的粒子运行这 k 个状态来更新参数。

Autoencoders

自动编码器是神经网络中另一种形式的无监督学习技术。它与开头描述的前馈神经网络非常相似,唯一的区别是它不在输出端生成类,而是试图在输出层复制输入(参考【12 和 23】)。目标是让隐藏层捕获输入的潜在或隐藏信息,作为在无监督或有监督学习中有用的特征。

定义和数学符号

下图显示了自动编码器的单个隐藏层示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 9:层间的自动编码器流程

输入层和输出层具有与前馈类似的相同数量的神经元,对应于输入向量, x 。每个隐藏层可以具有比输入或输出层更多、相等或更少的神经元,以及对信号进行非线性变换的激活函数。它可以被视为使用无监督的或潜在的隐藏结构来有效地“压缩”数据。

隐藏层对数据的编码器或输入变换由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输出层对数据的解码器或输出转换由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一般而言,在神经网络部分中描述的具有信号线性变换的 sigmoid 函数普遍用于各层:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

损失函数

损失函数的工作是像以前一样减少训练误差,以便可以使用诸如随机梯度函数的优化过程。

在二进制值输入的情况下,损失函数通常是由下式给出的平均交叉熵:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

很容易验证,当输入信号和输出信号匹配 0 或 1 时,误差为 0。同样,对于实值输入,使用平方误差:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

随机梯度过程所需的损失函数的梯度类似于前馈神经网络,并且可以通过对实值和二进制的求导如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

正如在神经网络中一样,通过反向传播外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传获得参数梯度。

自动编码器的局限性

自动编码器有一些已知的缺点,这些缺点已经被专门的架构解决了,我们将在接下来的章节中讨论。这些限制是:

当自动编码器的大小等于输入中神经元的数量时,有可能自动编码器学习到的权重正好是单位向量,并且整个表示简单地将输入作为零损失的输出传递。因此,他们没有任何概括地模仿“死记硬背”或“死记硬背”。

当自动编码器的大小大于输入中神经元的数量时,这种配置称为“过完备”隐藏层,可能会出现与前面提到的问题类似的问题。一些单位可以关闭,其他的可以成为身份,使它只是复制单位。

当 Autoencoder 的大小小于输入中神经元的数量时,称为“欠完成”,可以发现数据中的潜在结构或重要的隐藏成分。

去噪自动编码器

如前所述,当自动编码器的隐藏层大小大于或等于输入的隐藏层大小时,它不能保证学习到权重,并且可以变成简单的将输入复制到输出的单元开关。去噪自动编码器解决了这个问题。这里,在输入和隐藏层之间添加了另一层。这一层使用众所周知的分布外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传或使用随机噪声(如将二进制输入中的一位变为 0)向输入添加一些噪声。这个“噪声”输入然后从隐藏层学习到输出层,就像自动编码器一样。去噪自动编码器的损失函数将输出与实际输入进行比较。因此,添加的噪声和更大的隐藏层使得能够学习潜在结构或者添加/去除冗余以在输出端产生精确的信号。这种架构——噪声层的非零特征在隐藏层生成特征,这些特征随着信号的前进而由激活层进行转换——为学习出版社带来了鲁棒性和隐式结构(参考文献【15】)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 10:降噪自动编码器

无监督预训练和有监督微调

正如我们在关于神经网络的问题部分中所讨论的,过度训练的问题尤其出现在深度学习中,因为层数以及参数的数量很大。解决过度拟合的一种方法是进行特定于数据的正则化。在本节中,我们将描述在隐藏层中完成的“无监督预训练”方法,以克服过拟合问题。注意,这一般是很多深度学习算法使用的“初始化过程”。

无监督预训练的算法以逐层贪婪的方式工作。如下图所示,在给定时间,考虑一个可见和隐藏结构层。该层的权重通过使用无监督技术(如之前描述的 RBM)进行几次迭代来学习。然后,隐藏层的输出被用作“可见”或“输入”层,训练进行到下一层,依此类推。

每一层的学习都可以被认为是一个“特征提取或特征生成”的过程。转换后的实际数据输入在给定层形成更高级别的特征,然后进一步组合以形成更高级别的特征,等等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 11:通过无监督学习的逐层增量学习。

如前所述,一旦使用无监督技术在预训练中学习了所有隐藏层参数,接下来就是监督微调过程。在监督微调过程中,会添加最终输出层,就像在神经网络中一样,训练是通过向前和向后传播来完成的。其思想是大多数权重或参数几乎被完全调整,并且只需要很小的改变来在输出端产生有区别的类别映射。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12:最终调优或监督学习。

深度前馈神经网络

深度前馈神经网络包括使用阶段预训练和微调。

根据所使用的无监督学习技术——RBM、自动编码器或去噪自动编码器——形成了不同的算法:分别是堆叠 RBM、堆叠自动编码器和堆叠去噪自动编码器。

输入和输出

给定深度前馈神经网络的架构,这些是训练网络的输入:

  • 层数 L
  • 没有标签的数据集 D
  • 带有标签 D 的数据集
  • 训练迭代次数n
它是如何工作的?

所有三种情况的通用学习/训练算法如下所示:

  1. 对于层 l=1 到 L (预训练):

    1. 没有标签的数据集外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    2. 执行逐层无监督学习(RBM、自动编码器或去噪自动编码器)
    3. 最终确定参数 W ^l , b ^l 来自上一步骤
  2. 对输出层 (L+1) 随机初始化参数W*L*(+1),b*L*(+1)。

  3. 对于层 l=1 到 L+1 (微调):

    1. 带标签的数据集外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    2. 使用来自 1 的预初始化权重。(Wl,bl)。
    3. 执行前向-反向传播,进行 n 次迭代。

深度自动编码器

深度自动编码器有许多层隐藏单元,这些隐藏单元收缩到非常小的尺寸,然后对称地增长到输入尺寸。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13:深度自动编码器

深度自动编码器背后的想法是创建使用深度网络捕捉潜在复杂输入结构的功能,同时克服由于深度结构而导致的梯度和欠拟合问题。结果表明,这种方法产生了更好的特征,并且在许多数据集上的表现优于 PCA参考文献【13】】。

深度自动编码器使用预训练、编码器/解码器和微调的概念来执行无监督学习:

在预训练阶段,RBM 方法用于学习编码器的贪婪逐步参数,如下图所示,用于初始化:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 14:RBM 的阶梯式学习

在展开阶段,相同的参数被对称地应用于解码器网络进行初始化。

最后,微调反向传播用于调整整个网络的参数。

深度信念网络

深度信念网络(DBNs)是无监督预训练概念的起源(参考文献 [9])。无监督预训练起源于 DBNs,然后被发现在前馈有监督深度网络中同样有用和有效。

深度信念网络不是有监督的前馈网络,而是生成数据样本的生成模型。

输入和输出

输入层是数据的实例,由表示,每个输入特征对应一个神经元。DBN 的输出是对输入的重构,输入来自于一个不断提高的抽象层次的习得特征。

它是如何工作的?

这里以三层 DBN 架构为例解释 DBN 如何学习输入数据的联合分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15:深度信念网络

如图所示的三隐藏层 DBN 具有连接到两层贝叶斯网络的第一层无向 RBM。具有 sigmoid 激活函数的贝叶斯网络被称为 sigmoid 贝叶斯网络(SBN)。

生成模型的目标是学习由 p ( xh ^((1)) , h ^((2)) , h ^((3)) )给出的联合分布

p ( xhh 、^(、 h 、^、 ) = p ( h 、 ² )、 h 、^、 ) p)

如前所述,RBM 计算给我们提供了:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下两层的贝叶斯网络是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于二进制数据:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

辍学者的深度学习

另一种用于克服深度神经网络中提到的“过拟合”问题的技术是使用 dropout 技术来学习参数。在接下来的部分中,我们将定义、说明和解释辍学者的深度学习是如何工作的。

定义和数学符号

辍学背后的想法是在学习参数后,通过随机删除一些隐藏单元来“削弱”深层神经网络结构,如下图所示。单位设置为 0,丢失概率通常设置为 p=0.5

这个想法类似于在输入中添加噪声,但是是在所有隐藏层中完成的。当某些特征(或特征的组合)被随机移除时,神经网络必须以更健壮的方式学习潜在特征,而不需要一些特征的相互依赖。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 16:通过用深色阴影丢弃某些单元来指示丢弃的深度学习。

每个隐藏层由 h ^k (x) 表示,其中 k 是层。层 0 < k < l 的预激活由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

隐藏层激活为 1 < k < l 。二进制掩码在每个隐藏层用mk 表示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最终的输出层激活是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入和输出

对于辍学者的培训,输入为:

  • 网络体系结构
  • 训练数据集
  • 脱落概率 p (通常为 0.5)

输出是经过训练的深度神经网络,可用于预测用途。

它是如何工作的?

我们现在将描述辍学者深度学习如何工作的不同部分。

辍学者的学习培训和测试

使用梯度对来自输出损失函数的权重和偏差进行反向传播学习与传统的神经网络学习非常相似。唯一的区别是掩码的应用是适当的,如下所示:

激活前计算输出梯度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于隐藏层 k=l+1 到 1 :

计算隐藏层参数的梯度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

h ^(k-1) 计算已经考虑到应用的二进制掩码 m ^(k-1) 。

计算当前下方隐藏层的梯度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

激活前计算下面层的梯度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在测试模型时,我们不能使用二进制掩码,因为它是随机的;使用掩码的“预期”值。如果退出概率为 p=0.5 ,则相同的值 0.5 被用作测试或模型应用时单元的期望值。

稀疏编码

稀疏编码是另一种用于无监督学习和特征生成的神经网络(参考文献【22】)。它的工作原理是在捕捉模式的高维空间中寻找潜在结构,从而在无监督学习之外执行特征提取。

形式上,对于每个输入 x ^((t)) 学习一个潜在表示 h ^((t)) ,它具有稀疏表示(向量中大多数值为 0)。这是通过使用以下目标函数进行优化来实现的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中第一项外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传用于控制重建误差,第二项使用正则化器。,是为了稀疏性控制。矩阵 D 也被称为字典,因为它等价于字典中的单词,并且h(t)类似于词频;当执行文本挖掘时,它们一起捕捉单词在提取模式中的影响。

卷积神经网络

卷积神经网络或 CNN 已经变得突出,并广泛用于计算机视觉领域。计算机视觉涉及处理图像/视频以获取知识和模式。注释图像、分类图像/视频、纠正它们、讲故事或描述图像等等,是计算机视觉中的一些广泛应用[16]。

计算机视觉问题通常必须处理非结构化数据,这些数据可以描述为:

输入是具有单个或多个颜色通道的 2D 图像,或者是高维向量的 3D 视频。

这些 2D 或 3D 表示中的要素具有众所周知的空间拓扑、等级结构和一些可利用的重复元素。

基于诸如照明、噪声等因素,图像/视频具有大量的变换或变体。基于几个因素,同一个人或同一辆车可能看起来不同。

接下来,我们将描述 CNN 中使用的一些构建块。我们将使用简单的图像,例如字母表中的字母 X,来解释相关的概念和数学。例如,即使由于平移、缩放或扭曲,相同的字符 X 在下面的图中以不同的方式表示,人眼也可以很容易地将其读取为 X,但对于计算机来说,要看到该模式就变得很棘手。这些图片是在作者允许的情况下展示的(参考文献【19】):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 17:以不同方式表现的角色 X 的图像。

下图说明了 X 的简单灰度图像如何具有共同的特征,例如从左上角开始的对角线、从右上角开始的对角线以及左右交叉的对角线,这些特征被重复和组合以形成更大的 X:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 18:人物 x 形象中表现的共同特征。

本地连接

这是一个简单的概念,将整个图像分成“补丁”或“接收域”,并将每个补丁分配给隐藏层。如图所示,不是完整样本图像的 9 X 9 像素,而是从左上方开始的 3 X 3 像素片到达第一个隐藏单元,重叠的第二个像素片到达第二个,依此类推。

由于完全连接的隐藏层将具有大量的参数,因此具有较小的面片完全减少了参数或高维空间问题!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 19:整个图像上补丁的概念。

参数共享

参数共享的概念是构建一个权重矩阵,该矩阵可在不同的补丁或接收字段上重复使用,如前图中的局部共享所示。如下图所示,具有相同参数W1,1 和W1,4 的特征映射创建了两个不同的特征映射,特征映射 1 和 4,两者捕捉相同的特征,即两边的对角边。因此,特征映射捕获图像中的“相似区域”,并进一步降低输入空间的维度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

离散卷积

我们将解释离散卷积的步骤,用一个简单的人为例子和简化的数学来说明操作。

假设代表对角线特征的核作为 3×3 的小块在整个图像上被扫描。如果该核落在输入图像中的自同特征上,并且我们必须通过我们称之为卷积运算符的方法来计算中心值,则由于如下所示的匹配,我们得到精确值 1:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 21:离散卷积步长。

整个图像在运行该内核和卷积运算符时会给出一个值矩阵,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 22:内核和卷积操作后字符图像的转换。

通过运行该扫描,我们可以看到左对角线特征是如何被突出显示的。同样,通过运行其他内核,如下图所示,我们可以得到一个“过滤图像堆栈”:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 23:不同的特性贯穿内核,给出一堆图像。

中的每一个单元格的滤波图像可以给定为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

合并或二次抽样

池化或二次采样对过滤后的图像堆栈进行处理,以进一步缩小或压缩图像,同时保持模式不变。在汇集中执行的主要步骤是:

  1. 选择一个窗口大小(例如,2 X 2)和一个步幅大小(例如,2)。
  2. 在所有已过滤的图像上快速移动窗口。
  3. 在每个窗口,选择“最大”值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 24:最大池,使用 2 X 2 的窗口大小和 2 的步幅,计算第一个最大值为 1.0 的单元格值,第二个为 0.33,依此类推。

池化也起着重要的作用,因为使用了最大值,如果移动或缩放,仍然可以检测到相同的特征。相同的堆叠过滤图像集被转换成汇集图像,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 25:显示一堆过滤后的图像如何被转换为合并图像的转换。

使用 ReLU 进行标准化

正如我们在深度学习的构建模块中讨论的, ReLUs 通过将消极因素压缩为 0 来消除消极因素,并保持积极因素不变。它们在反向传播中的梯度计算中也起着重要作用,消除了消失梯度的消失梯度问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 26:使用 ReLu 的转换。

CNN 图层

在这一节中,我们将把前面讨论的构件放在一起,形成 CNN 的完整画面。将卷积层、ReLU 层和池化层组合起来,形成一个连接的网络,生成具有最终输出中捕获的图案的缩小图像,我们就获得了下一个复合构造块,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 27:CNN 的基本单元,显示了卷积、ReLu 和池的组合。

因此,这些层可以组合或“深度堆叠”,如下图所示,形成一个复杂网络,输出一小部分图像:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 28:重复深层堆叠基本单元以形成 CNN 层。

如图所示,输出层是一个完全连接的网络,它使用投票技术并学习所需输出的权重。完全连接的输出层也可以堆叠。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 29:作为 CNN 输出的全连接层。

因此,最终的 CNN 可以完整地说明如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 30:所有层都显示输入和输出的 CNN。

如前所述,选择梯度下降作为学习技术,使用损失函数计算差值并向后传播误差。

如果数据到“图像”的映射可以成功完成并且“局部空间”模式存在,CNN 可以用于其他领域,例如声音模式识别、文本挖掘等等。下图显示了 CNN 使用的将声音和文本映射到图像的方法之一:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 31:时间数据(如声音到空间数据)到图像的映射示意图。

递归神经网络

正常的深度网络用于当你有有限的输入,并且在输入例子或实例之间没有相互依赖。当存在可变长度的输入并且它们之间存在时间依赖性时,即序列相关数据,神经网络必须被修改以处理这样的数据。递归神经网络(RNN)是广泛用于解决这类问题的神经网络的例子,我们将在以下部分讨论它们。rnn 用于许多序列相关的问题,如文本挖掘、语言建模、生物信息学数据建模等,仅举几个适合这种元级描述的领域(参考文献【18 和 21】)。

递归神经网络的结构

我们将首先描述 RNN 的最简单的单元,然后展示它是如何被组合的,以从功能和数学上理解它,并说明不同的组件是如何交互和工作的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 32:人工神经元和带反馈的神经元之间的区别。

让我们考虑基本输入,一个激活的神经元,以及它在给定时间 t 的输出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

具有反馈的神经元保持矩阵 W [R] 以合并在时间 t-1 的先前输出,并且等式是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 33:反馈连接在一起的神经元链。

基本的 RNN 堆叠了隐藏单元的结构,如图所示,反馈来自前一层。在时间 t 激活时,不仅依赖于x??(t)作为输入,还依赖于W[R]h^((t-1))给出的前一个单位。RNN 反馈连接中的权重在所有单元中通常是相同的,WR。此外,不是在前馈神经网络的最末端发出输出,而是每个单元连续发出可用于损失函数计算的输出。

RNNs 中的学习和相关问题

使用 RNNs 会带来一些挑战,这些挑战是 RNNs 特有的,但也有一些其他类型的神经网络也会遇到的常见问题。

  1. The gradient used from the output loss function at any time t of the unit has dependency going back to the first unit or t=0, as shown in the following figure. This is because the partial derivative at the unit is dependent on the previous unit, since:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    通过时间反向传播(BPTT)是用来说明这一过程的术语。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 34:随时间反向传播。

  2. 类似于我们在前馈神经网络一节中看到的,由于前面讨论过的单元的连接性,爆炸和消失梯度的情况在 RNNs 中变得更加明显。

  3. 爆炸渐变的一些解有:

    1. 截断 BPTT 是对 BPTT 过程的一个小改动。不是将学习传播回到时间 t=0 ,而是将其截断到向后到 t=k 的固定时间。
    2. 渐变裁剪当渐变向上射出时,剪切阈值以上的渐变。
    3. 自适应学习率。学习率根据反馈和值进行自我调整。
  4. 消失渐变的解决方案有:

    1. 使用 ReLU 作为激活函数;因此,梯度将是 1。
    2. 适应学习速度。学习率根据反馈和值进行自我调整。
    3. 使用扩展,比如长短期记忆(LSTM)和门控循环单元(GRUs),我们接下来会介绍。

RNNs 有许多应用,例如,在下一个字母预测、下一个单词预测、语言翻译等方面。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 35:显示了使用 RNN 结构在下一个字母/单词预测中的一些应用。

长短期记忆

解决消失梯度问题的一种神经网络架构或对 RNNs 的修改被称为长短期记忆或 LSTM。我们将解释 LSTM 的一些组成部分,然后为我们的读者把它们放在一起。

对 RNN 的第一个修改是将反馈学习矩阵改为 1,即 W [R] = 1,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 36:反馈矩阵设为 1 的 LSTM 积木。

这将确保来自旧单元或存储单元的输入按原样传递到下一个单元。因此,需要进行一些修改。

如下图所示,输出门结合了两种计算。第一个是通过激活函数传递的单个单元的输出,第二个是使用缩放通过 sigmoid 传递的旧单元的输出。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 37:LSTM 的构建模块输出门。

从数学上讲,该单元的输出门由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

遗忘门位于两个存储单元之间。它根据学习到的权重和变换生成 0 或 1。遗忘门如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 38:LSTM 的积木式遗忘之门。

数学上,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传可以看作是遗忘门的表示。接下来,组合输入门和新门,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 39:添加新门和输入门以完成 LSTM 的构建模块。

新内存生成单元通过激活函数使用当前输入 x [t] 和旧状态 h [t-1] ,生成新内存 C [t] 。输入门将输入和旧状态相结合,并确定是应该保留新的存储器还是输入。

因此,更新等式如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

门控循环单元

门控循环单元(gru)是经过修改的简化 LSTMs。通过使用一个“更新”单元简化了许多门,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 40:带更新单元的 GRUs。

对等式所做的更改如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

案例研究

图像分类有几个基准。在这个案例研究中,我们将使用 MNIST 图像数据库。当我们在第三章的中使用 MNIST 时,无监督的机器学习技术与聚类和离群点检测技术,每个像素都被视为一个特征。除了像在以前的实验中一样从像素值中学习之外,通过深度学习技术,我们还将从训练数据集的结构中学习新的特征。深度学习算法将在 60,000 张图像上进行训练,并在 10,000 张图像的测试数据集上进行测试。

工具和软件

在这一章,我们介绍名为 DeepLearning4J (DL4J)的深度学习开源 Java 框架。DL4J 有实现大量深度学习技术的库,它们可以在分布式 CPU 和 GPU 上使用。

深度学习 4j:deeplearning4j.org/index.html

我们将说明一些 DL4J 库在从 MNIST 训练图像学习中的使用,并应用所学习的模型来分类测试集中的图像。

商业问题

图片分类是评估深度学习网络的一个特别有吸引力的试验台。我们以前遇到过 MNIST 数据库,它由手写数字的灰度图像组成。这一次,我们将展示如何使用无监督和有监督的深度学习技术从同一个数据集进行学习。MNIST 数据集在单个通道中包含 28 x 28 像素的图像。这些图像被分为 10 个标签,代表数字 0 到 9。目标是在 60,000 个数据点上进行训练,并在剩余的 10,000 张图像上测试我们的深度学习分类算法。

机器学习映射

这包括应用于分类问题的监督和非监督方法,其中有 10 个可能的输出类。正如我们在前面章节中看到的,一些技术使用初始预训练阶段,这在本质上是无人监督的。

数据采样和传输

该数据集位于:

yann . lecun . com/exdb/mnst

在本案例研究的实验中,MNIST 数据集已被标准化,0 至 255 范围内的像素值已被标准化为 0.0 至 1.0 的值。例外是在使用堆叠 RBM 的实验中,其中训练和测试数据已经被二进制化,也就是说,如果标准化值大于或等于 0.3,则设置为 1,否则设置为 0。这 10 个类中的每一个在训练集和测试集中被同等地表示。此外,使用用户提供的随机数发生器种子对示例进行混洗。

特征分析

输入数据特征是每个图像中像素的灰度值。这是原始数据,我们将使用深度学习算法从原始像素值中学习更高级别的特征。数据集已经准备好,使得在训练集和测试集中每个类都有相同数量的示例。

模型、结果和评估

我们将从简单的 MLP、卷积网络、变分自动编码器、堆叠 RBMS 和 DBNs 开始进行不同的实验。我们将遍历代码中突出网络结构或专门调整的重要部分,给出帮助读者的参数,重现实验,并给出每种类型网络的结果。

基础数据处理

下面的代码片段显示:

如何从具有由分隔符强制的结构的 CSV 中读取数据。

如何迭代数据并获取记录。

如何在内存中混排数据并创建训练/测试或验证集:

RecordReader recordReader = new  ] CSVRecordReader(numLinesToSkip,delimiter);
recordReader.initialize(new FileSplit(new ClassPathResource(fileName).getFile()));
DataSetIterator iterator = new RecordReaderDataSetIterator(recordReader,batchSize,labelIndex,numClasses);
DataSet allData = iterator.next();
allData.shuffle();
SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(trainPercent); 
DataSet trainingData = testAndTrain.getTrain();
DataSet testData = testAndTrain.getTest();

DL4J 有一个特定的 MNIST 包装器来处理我们使用的数据,如下面的代码片段所示:

DataSetIterator mnistTrain = new MnistDataSetIterator(batchSize, true, randomSeed);
DataSetIterator mnistTest = new MnistDataSetIterator(batchSize, false, randomSeed);

多层感知器

在第一个实验中,我们将使用一个基本的多层感知器,它有一个输入层、一个隐藏层和一个输出层。代码中使用的参数的详细列表如下:

用于 MLP 的参数

|

参数

|

可变的

|

价值

|
| — | — | — |
| 迭代次数 | m | one |
| 学习率 | 速度 | 0.0015 |
| 动量 | 动力 | Zero point nine eight |
| L2 正规化 | 正规化 | Zero point zero zero five |
| 输入中的行数 | numRows 的 | Twenty-eight |
| 输入中的列数 | 数字列 | Twenty-eight |
| 第 0 层输出尺寸,第 1 层输入尺寸 | 输出层 0,输入层 1 | Five hundred |
| 第一层输出尺寸,第二层输入尺寸 | 输出层 1,输入层 2 | Three hundred |
| 第二层输出尺寸,第三层输入尺寸 | 输出层 2,输入层 3 | One hundred |
| 第三层输出尺寸, | 输出数量 | Ten |

MLP 代码

在下面的清单中,我们可以看到我们如何通过使用构建器模式传入超参数来配置 MLP。

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder() .seed(randomSeed) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) // use SGD
.iterations(m)//iterations
.activation(Activation.RELU)//activation function
.weightInit(WeightInit.XAVIER)//weight initialization
.learningRate(rate) //specify the learning rate
.updater(Updater.NESTEROVS).momentum(momentum)//momentum
.regularization(true).l2(rate * regularization) // 
.list()
.layer(0, 
new DenseLayer.Builder() //create the first input layer.
.nIn(numRows * numColumns)
.nOut(firstOutput)
.build())
.layer(1, new DenseLayer.Builder() //create the second input layer
.nIn(secondInput)
.nOut(secondOutput)
.build())
.layer(2, new OutputLayer.Builder(LossFunction.NEGATIVELOGLIKELIHOOD) //create hidden layer
.activation(Activation.SOFTMAX)
.nIn(thirdInput)
.nOut(numberOfOutputClasses)
.build())
.pretrain(false).backprop(true) //use backpropagation to adjust weights
.build();

MLP 的培训、评估和测试如下面的代码片段所示。请注意初始化可视化后端的代码,使您能够在浏览器中监控模型训练,特别是模型得分(每次迭代后的训练误差)和参数更新:

MultiLayerNetwork model = new MultiLayerNetwork(conf);
model.init();
model.setListeners(new ScoreIterationListener(5));  //print the score with every iteration
//Initialize the user interface backend
UIServer uiServer = UIServer.getInstance();
//Configure where the network information (gradients, activations, score vs. time etc) is to be stored
//Then add the StatsListener to collect this information from the network, as it trains
StatsStorage statsStorage = new InMemoryStatsStorage();             //Alternative: new FileStatsStorage(File) - see UIStorageExample
int listenerFrequency = 1;
net.setListeners(new StatsListener(statsStorage, listenerFrequency));
//Attach the StatsStorage instance to the UI: this allows the contents of the StatsStorage to be visualized
uiServer.attach(statsStorage);
log.info(""Train model...."");
for( int i=0; i<numEpochs; i++ ){
log.info(""Epoch "" + i);
model.fit(mnistTrain);
        }
log.info(""Evaluate model...."");
Evaluation eval = new Evaluation(numberOfOutputClasses); 
while(mnistTest.hasNext()){
DataSet next = mnistTest.next();
INDArray output = model.output(next.getFeatureMatrix()); //get the networks prediction
eval.eval(next.getLabels(), output); //check the prediction against the true class
        }
log.info(eval.stats());

以下图显示了 MLP 模型的训练误差与训练迭代的关系。这条曲线应该随着迭代而减少:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 41:用 MLP 模型的训练迭代次数测量的训练误差。

在下图中,我们看到了 MLP 第 0 层中的参数分布以及参数更新的分布。这些直方图应该具有近似高斯(正态)形状,这表示良好的收敛性。有关如何使用图表调整模型的更多信息,请参见 DL4J 可视化页面(deeplearning4j.org/visualization):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 42:显示层参数和更新分布的直方图。

卷积网络

在第二个实验中,我们使用内置多层配置配置了一个卷积网络(ConvNet)。网络的架构总共由五层组成,这可以从下面的代码片段中看出。在输入图层之后,两个具有 5 乘 5 过滤器的卷积图层与最大池化图层交替出现,然后是使用 ReLu 激活图层的完全连接的密集图层,以最终输出图层中的 Softmax 激活结束。使用的优化算法是随机梯度下降,损失函数是负对数似然。

表中给出了 ConvNet 的各种配置参数(或超参数)。

用于 ConvNet 的参数

|

参数

|

可变的

|

价值

|
| — | — | — |
| 种子 | 种子 | One hundred and twenty-three |
| 输入尺寸 | numRows,numcolumns | 28, 28 |
| 历元数 | numEpochs | Ten |
| 迭代次数 | 迭代次数 | one |
| L2 正规化 | 正规化 | Zero point zero zero five |
| 学习率 | 学习率 | Zero point one |
| 动量 | 动力 | Zero point nine |
| 卷积滤波器尺寸 | xsize,ysize | 5, 5 |
| 卷积层步幅大小 | x,y | 1, 1 |
| 输入通道数量 | 数字频道 | one |
| 子采样层步幅大小 | sx, sy | 2, 2 |
| 第 0 层输出尺寸 | nOut0 | Twenty |
| 第二层输出尺寸 | nOut1 | Fifty |
| 第 4 层输出尺寸 | nOut2 | Five hundred |
| 第五层输出尺寸 | 输出数量 | Ten |

CNN 的代码

正如您所看到的,无论您是构建 MLP 还是 CNN,用 DL4J API 配置多层神经网络都是相似的。特定于算法的配置简单地在每一层的定义中完成。

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(seed)
.iterations(iterations) .regularization(true).l2(regularization)
.learningRate(learningRate)
.weightInit(WeightInit.XAVIER) .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT) .updater(Updater.NESTEROVS).momentum(momentum)
.list()
.layer(0, new ConvolutionLayer.Builder(xsize, ysize)
.nIn(nChannels)
.stride(x,y)
.nOut(nOut0)
.activation(Activation.IDENTITY)
.build())
.layer(1, new SubsamplingLayer
.Builder(SubsamplingLayer.PoolingType.MAX)
.kernelSize(width, height)
.stride(sx,sy)
.build())
.layer(2, new ConvolutionLayer.Builder(xsize, ysize)
.stride(x,y)
.nOut(nOut2)
.activation(Activation.IDENTITY)
.build())
.layer(3, new SubsamplingLayer
.Builder(SubsamplingLayer.PoolingType.MAX)
.kernelSize(width, height)
.stride(sx,sy)
.build())
.layer(4, new DenseLayer.Builder()
.activation(Activation.RELU)
.nOut(nOut4).build())
.layer(5, new OutputLayer. Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD)
.nOut(outputNum)
.activation(Activation.SOFTMAX)
.build())
.setInputType(InputType.convolutionalFlat(numRows,numColumns,1)) 
.backprop(true).pretrain(false).build();

变分自动编码器

在第三个实验中,我们配置了一个变分自动编码器作为分类器。

用于变型自动编码器的参数

下表显示了用于配置 VAE 的参数。

|

参数

|

可变的

|

价值观念

|
| — | — | — |
| RNG 的种子 | rngSeed | one two three four five |
| 迭代次数 | 迭代次数 | one |
| 学习率 | 学习率 | Zero point zero zero one |
| 均方根衰减 | rmsDecay | Zero point nine five |
| L2 正规化 | 正规化 | 0.0001 |
| 输出图层大小 | 输出数量 | Ten |
| VAE 编码器层数尺寸 | vaeEncoder1,vaeEncoder2 | 256, 256 |
| VAE 解码器层数大小 | vaeDecoder1,vaeDecoder2 | 256, 256 |
| 潜在变量空间的大小 | latentVarSpaceSize | One hundred and twenty-eight |

变型代码自动编码器

我们已经配置了两层编码器和解码器,并且正在使用伯努利分布来重构输入。

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(rngSeed)
.iterations(iterations)
.optimizationAlgo(
OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.learningRate(learningRate)
.updater(Updater.RMSPROP).rmsDecay(rmmsDecay)
.weightInit(WeightInit.XAVIER)
.regularization(true).l2(regulaization)
.list()
.layer(0, new VariationalAutoencoder.Builder()
.activation(Activation.LEAKYRELU)
                .encoderLayerSizes(vaeEncoder1, vaeEncoder2)        //2 encoder layers
                .decoderLayerSizes(vaeDecoder1, vaeDecoder2)        //2 decoder layers
.pzxActivationFunction(""identity"")  //p(z|data) activation function
.reconstructionDistribution(new BernoulliReconstructionDistribution(Activation.SIGMOID.getActivationFunction()))     //Bernoulli distribution for p(data|z) (binary or 0 to 1 data only)
.nIn(numRows * numColumns) //Input size                      
.nOut(latentVarSpaceSize) //Size of the latent variable space: p(z|x).
.build())
.layer(1, new OutputLayer.Builder(LossFunction.NEGATIVELOGLIKELIHOOD).activation(Activation.SOFTMAX)
.nIn(latentVarSpaceSize).nOut(outputNum).build())
.pretrain(true).backprop(true).build();

DBN

DBN 中使用的参数如下表所示:

|

参数

|

可变的

|

价值

|
| — | — | — |
| 输入数据大小 | numRows,numcolumns | 28, 28 |
| RNG 的种子 | 种子 | One hundred and twenty-three |
| 训练迭代次数 | 迭代次数 | one |
| 动量 | 动力 | Zero point five |
| **第 0 层(输入)****第 0 层(输出)****第一层(输入,输出)****第二层(输入,输出)**第三层(输入,输出) | numRows * numColumnsnOut0nIn1,nOut1nIn2,nOut2nIn3, outputNum | 28 * 28Five hundred500, 250250, 200200, 10 |

本案例研究中使用的示例展示了如何使用 DL4J API 配置 DBN。此处显示了网络的配置代码。

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(seed)
.gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue)
.gradientNormalizationThreshold(1.0)
.iterations(iterations)
.updater(Updater.NESTEROVS)
.momentum(momentum)
.optimizationAlgo(OptimizationAlgorithm.CONJUGATE_GRADIENT)
.list()
.layer(0, new RBM.Builder().nIn(numRows*numColumns).nOut(nOut0)
.weightInit(WeightInit.XAVIER).lossFunction(LossFunction.KL_DIVERGENCE)
.visibleUnit(RBM.VisibleUnit.BINARY)
.hiddenUnit(RBM.HiddenUnit.BINARY)
.build())
.layer(1, new RBM.Builder().nIn(nIn1).nOut(nOut1)
.weightInit(WeightInit.XAVIER).lossFunction(LossFunction.KL_DIVERGENCE)
.visibleUnit(RBM.VisibleUnit.BINARY)
.hiddenUnit(RBM.HiddenUnit.BINARY)
.build())
.layer(2, new RBM.Builder().nIn(nIn2).nOut(nOut2)
.weightInit(WeightInit.XAVIER).lossFunction(LossFunction.KL_DIVERGENCE)
.visibleUnit(RBM.VisibleUnit.BINARY)
.hiddenUnit(RBM.HiddenUnit.BINARY)
.build())
.layer(3, new OutputLayer.Builder().nIn(nIn3).nOut(outputNum)
.weightInit(WeightInit.XAVIER).activation(Activation.SOFTMAX)
.build())
.pretrain(true).backprop(true)
.build();
MultiLayerNetwork model = new MultiLayerNetwork(conf);
model.init();
model.setListeners(new ScoreIterationListener(listenerFreq));

使用仲裁器进行参数搜索

DeepLearning4J 通过将手动调整的负担从建模者身上拿走,提供了一个微调超参数的框架;相反,它允许参数空间的规范进行搜索。在以下示例代码片段中,使用 MultiLayerSpace 而不是 MutiLayerConfiguration 对象来指定配置,其中超级参数的范围是通过仲裁器 DL4J 包中的 ParameterSpace 对象为要调整的参数指定的:

ParameterSpace<Double> learningRateHyperparam = new ContinuousParameterSpace(0.0001, 0.1);  //Values will be generated uniformly at random between 0.0001 and 0.1 (inclusive)
ParameterSpace<Integer> layerSizeHyperparam = new IntegerParameterSpace(16,256);            //Integer values will be generated uniformly at random between 16 and 256 (inclusive)
MultiLayerSpace hyperparameterSpace = new MultiLayerSpace.Builder()
//These next few options: fixed values for all models
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.iterations(1)
.regularization(true)
.l2(0.0001)
//Learning rate: this is something we want to test different values for
.learningRate(learningRateHyperparam)
.addLayer( new DenseLayerSpace.Builder()
//Fixed values for this layer:
.nIn(784)  //Fixed input: 28x28=784 pixels for MNIST
.activation(""relu"")
//One hyperparameter to infer: layer size
.nOut(layerSizeHyperparam)
.build())
.addLayer( new OutputLayerSpace.Builder()
//nIn: set the same hyperparemeter as the nOut for the last layer.
.nIn(layerSizeHyperparam)
//The remaining hyperparameters: fixed for the output layer
.nOut(10)
.activation(""softmax"")
.lossFunction(LossFunctions.LossFunction.MCXENT)
.build())
.pretrain(false).backprop(true).build();

结果和分析

根据测试数据评估四个网络性能的结果如下表所示:

|   |

MLP

|

ConvNet

|

VAE

|

DBN

|
| — | — | — | — | — |
| 精度 | 0.9807 | 0.9893 | 0.9743 | 0.7506 |
| 精度 | 0.9806 | 0.9893 | 0.9742 | 0.7498 |
| 回忆 | 0.9805 | 0.9891 | 0.9741 | 0.7454 |
| F1 得分 | 0.9806 | 0.9892 | 0.9741 | 0.7476 |

实验的目标不是在每个神经网络结构中匹配基准结果,而是在代码中给出一个全面的架构实现,并提供详细的参数供读者探索。

在深度学习网络中调整超参数是一个相当大的挑战,尽管仲裁器和 gitter(gitter.im/deeplearning4j/deeplearning4j)等在线资源有助于 DL4J,但与包括 SVM 在内的其他分类技术相比,运行超参数搜索的时间和成本相当高。

MNIST 数据集上的基准测试结果和相应的论文可在此处获得:

从基准测试结果可以看出,线性 1 层神经网络的错误率为 12%,增加更多的层可以将错误率降低到大约 2。这表明了数据的非线性本质,以及需要复杂的算法来拟合模式。

与神经网络上从 2.5%到 1.6%误差率的基准最佳结果相比,我们的结果与 2%误差率非常接近。

大多数基准测试结果显示,卷积网络架构的错误率在 1.1%至 0.5%的范围内,我们的超参数搜索匹配了这些模型中的最佳模型,错误率略低于 1.1%。

我们在 DBN 的结果远远低于基准,仅略高于 25%。毫无疑问,进一步的调优可以将性能提高 3-5%。

总结

深度学习的历史与早期尝试在机器学习和人工智能中使用神经网络的限制密切相关,以及这些限制如何通过更新的技术、技术改进和大量数据的可用性来克服。

感知器是基本的神经网络。多层网络用于监督学习,通过连接几个隐藏的神经元层来向前传播激活,并使用反向传播来减少训练误差。使用了几种激活函数,最常用的是 sigmoid 和 tanh 函数。

神经网络的问题是梯度消失或爆炸、训练缓慢和陷入局部极小值。

深度学习在几种有效技术的帮助下成功解决了这些问题,这些技术可以用于无监督和有监督的学习。

深度学习网络的构建模块包括受限玻尔兹曼机器(RBM)、自动编码器和去噪自动编码器。RBM 是两层无向网络,能够从输入中提取高级特征。对比发散用于加速训练。自动编码器也是用于无监督学习的深度学习网络——它们试图通过首先在编码层对学习到的特征进行编码,然后通过一组解码层重建输入来复制输入。去噪自动编码器解决了自动编码器的一些限制,这些限制有时会导致它们琐碎地学习标识函数。

深度学习网络通常以无监督的方式进行预训练,然后通过监督微调来微调它们的参数。在预训练阶段使用堆叠 RBM 或自动编码器,在分类的情况下,微调通常通过在输出层激活 softmax 来完成。

深度自动编码器擅长学习数据中复杂的潜在结构,并通过使用自动编码器构建块进行预训练和微调,用于无监督学习。深度信念网络(DBN)是可以用来创建更多样本的生成模型。它是使用有向贝叶斯网络构建的,在其上有一个无向 RBM 层。深度学习网络中的过度拟合可以通过辍学学习来解决,其中网络中的一些节点被随机“关闭”。

卷积神经网络(CNN)在计算机视觉中有许多应用。CNN 可以学习数据平移不变的模式,并对数据中的线性缩放具有鲁棒性。它们使用卷积过滤器和合并层来降低数据的维度,并且可以在分类任务中获得非常有效的结果。提出了涉及数字图像分类的用例。

当数据作为序列到达并且数据之间存在时间关系时,递归神经网络(RNN)用于建模。rnn 使用来自前几层的反馈,并不断发出输出。消失和爆炸梯度的问题在 RNNs 中反复出现,并且通过对体系结构的几种修改来解决,例如长短期记忆(LSTM)和门控循环网络(GRU)。

在本章的案例研究中,我们介绍了用各种深度学习网络从 MNIST 手写数字图像数据集进行学习的实验。结果使用 MLP,康文网,变分自动编码器,和堆叠 RBM 介绍。

我们认为,深度神经网络能够逼近基础数据所基于的关键结构的重要且有代表性的子集。此外,借助不同的隐藏层,可以轻松捕捉数据的层次结构。最后,例如,对图像的旋转、平移和缩放的不变性是深度神经网络性能的最后一个关键要素。不变性允许我们减少神经网络捕获的可能状态的数量(参考文献 [19])。

参考文献

  1. Behnke,S. (2001 年)。在神经抽象金字塔中学习迭代图像重建。国际计算智能与应用杂志,1(4),427–438。
  2. Behnke,S. (2002 年)。利用分层递归网络学习人脸定位。第 12 届国际人工神经网络会议论文集(第 1319-1324 页)。
  3. Behnke,S. (2003 年)。使用卷积非负矩阵分解发现分层语音特征。国际神经网络联合会议论文集,第 4 卷(第 2758-2763 页)。
  4. Behnke,S. (2003 年)。LNCS,计算机科学讲义:第 2766 卷。用于图像解释的分层神经网络。斯普林格。Behnke,S. (2005 年)。神经抽象金字塔中的人脸定位和跟踪。神经计算与应用,14(2),97–103。
  5. 凯西议员(1996 年)。离散时间计算的动力学,应用于循环神经网络和有限状态机提取。神经计算,8(6),1135–1178。
  6. 鲁梅尔哈特、辛顿和威廉姆斯(1986)。通过误差传播学习内部表征。在鲁梅尔哈特,D. E .和麦克莱兰,J. L .编辑的《并行分布式处理》,第 1 卷,第 318-362 页。麻省理工出版社。
  7. 高勒角;屈希勒尔(1996 年)。"“通过结构反向传播来学习任务相关的分布式表示” "。神经网络,IEEE。doi:10.1109/ICNN
  8. 霍克雷特,赛普。递归神经网络学习中的消失梯度问题及解决方案。《不确定性、模糊性和基于知识的系统国际期刊》,6(02):107–116,1998。
  9. G.E. Hinton、S. Osindero 和 Y. The (2006 年)。“深度信念网络的快速学习算法,”神经计算。,第 18 卷,第 1527-1554 页。
  10. G.e .辛顿(2002 年)。“通过最小化对比差异来训练专家的产品”。,第 14 卷,第 1771-1800 页。
  11. G.E. Hinton 和 R. R. Salakhutdinov (2006 年)。“用神经网络减少数据的维数”,《科学》,第 313 卷,第 5786 期,第 504-507 页。
  12. 辛顿和泽梅尔(1994 年)。自动编码器、最小描述长度和亥姆霍兹自由能。神经信息处理系统进展,6,3–10。
  13. Y.本吉奥、p .兰布林、d .波博维奇和 h .拉罗歇尔。(2007).“深度网络的贪婪分层训练”,《神经信息处理系统进展》19(NIPS’06)第 153–160 页。
  14. H.拉罗歇尔、d .埃汉、a .库维尔、j .伯格斯特拉和 y .本吉奥(2007 年)。“对具有许多变化因素的问题的深度架构的经验评估”,正在进行中。24 ^(th) Int。糖膏剂机器学习(ICML 07)第 473-480 页。
  15. 页(page 的缩写)Vincent、H. Larochelle、Y. Bengio 和 P.-A. Manzagol (2008 年),“用去噪自动编码器提取和合成鲁棒特征”,在 Proc。第 25 个国际。糖膏剂机器学习(ICML 08),第 1096–1103 页。
  16. F.-黄俊杰和李乐存(2006 年)。“用 SVM 和卷积网络进行大规模学习,用于一般对象分类”,正在进行中。计算机视觉与模式识别会议。(CVPR 06 年)。
  17. F.A. Gers、N. N. Schraudolph 和 J. Schmidhuber (2003 年)。用 LSTM 递归网络学习精确定时。机器学习研究杂志。
  18. Kyunghyun Cho 等人。阿尔(2014)。使用统计机器翻译的 RNN 编码器-解码器学习短语表示。arxiv.org/pdf/1406.1078.pdf
  19. br hrer . github . io/how _ convolatile _ neural _ networks _ work . html
  20. 亨利·w·林,马克斯·泰格马克,大卫·罗尔尼克(2016)。为什么深度廉价学习效果这么好?arxiv.org/abs/1608.08225
  21. 迈克·舒斯特和库尔迪普·k·帕利瓦尔(1997 年)。双向递归神经网络。关于信号处理。
  22. 李,一场战斗,R .刘冰,吴宇森(2007)。有效的稀疏编码算法,神经信息处理系统进展
  23. Bengio Y. (2009 年)。学习人工智能的深度架构,机器学习的基础和趋势 1(2)第 1-127 页。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值