玻尔兹曼机

这些是具有循环结构的随机学习过程,是 ANN 中使用的早期优化技术的基础。玻尔兹曼机由 Geoffrey Hinton 和 Terry Sejnowski 于 1985 年发明。Hinton 关于玻尔兹曼机的论述更为清晰。

"该网络的一个令人惊讶的特点是它只使用本地可用信息。权重的变化仅取决于它连接的两个单元的行为,即使这种变化优化了全局度量" - Ackley, Hinton 1985。

关于玻尔兹曼机 − 的一些要点

  • 它们使用循环结构。

  • 它们由随机神经元组成,这些神经元具有两种可能状态之一,即 1 或 0。

  • 其中一些神经元是自适应的(自由状态),一些是钳制的(冻结状态)。

  • 如果我们在离散 Hopfield 网络上应用模拟退火,那么它将成为玻尔兹曼机。

玻尔兹曼机的目标

玻尔兹曼机的主要目的是优化问题的解决方案。玻尔兹曼机的工作就是优化与该特定问题相关的权重和数量。

架构

下图显示了玻尔兹曼机的架构。从图中可以清楚地看出,它是一个二维单元阵列。这里,单元之间互连的权重为–p,其中p > 0。自连接的权重由b给出,其中b > 0

Boltzmann

训练算法

众所周知,玻尔兹曼机具有固定权重,因此不会有训练算法,因为我们不需要更新网络中的权重。但是,为了测试网络,我们必须设置权重并找到共识函数 (CF)。

玻尔兹曼机有一组单元 UiUj,并且它们之间有双向连接。

  • 我们正在考虑固定权重,例如 wij

  • wij ≠ 0,如果 UiUj 相连。

  • 加权互连也存在对称性,即 wij = wji

  • wii 也存在,即单元之间会有自连接。

  • 对于任何单元 Ui,其状态 ui 要么是 1,要么是 0。

玻尔兹曼机的主要目标是最大化共识函数 (CF),该函数可以通过以下公式给出关系

$$CF\:=\:\displaystyle\sum\limits_{i} \displaystyle\sum\limits_{j\leqslant i} w_{ij}u_{i}u_{j}$$

现在,当状态从 1 变为 0 或从 0 变为 1 时,共识的变化可以通过以下关系 − 给出

$$\Delta CF\:=\:(1\:-\:2u_{i})(w_{ij}\:+\:\displaystyle\sum\limits_{j eq i} u_{i} w_{ij})$$

这里 uiUi 的当前状态。

系数 (1 - 2ui) 的变化为由以下关系 − 给出

$$(1\:-\:2u_{i})\:=\:\begin{cases}+1, & U_{i}\:is\:currently\:off\-1, & U_{i}\:is\:currently\:on\end{cases}$$

一般来说,单元 Ui 不会改变其状态,但如果它改变了,那么信息将驻留在单元本地。随着这一变化,网络的共识也会增加。

网络接受单元状态变化的概率由以下关系 − 给出

$$AF(i,T)\:=\:\frac{1}{1\:+\:exp[-\frac{\Delta CF(i)}{T}]}$$

这里,T 是控制参数。当 CF 达到最大值时,它将减小。

测试算法

步骤 1 − 初始化以下内容以开始训练 −

  • 表示问题约束的权重
  • 控制参数 T

步骤 2 − 当停止条件不成立时,继续步骤 3-8。

步骤 3 − 执行步骤 4-7。

步骤 4 − 假设其中一个状态已改变权重,并选择整数 I, J 作为 1n 之间的随机值。

步骤 5 −计算共识变化如下 −

$$\Delta CF\:=\:(1\:-\:2u_{i})(w_{ij}\:+\:\displaystyle\sum\limits_{j eq i} u_{i} w_{ij})$$

步骤 6 − 计算此网络接受状态变化的概率

$$AF(i,T)\:=\:\frac{1}{1\:+\:exp[-\frac{\Delta CF(i)}{T}]}$$

步骤 7 − 接受或拒绝此变化如下 −

情况 I − if R < AF,接受更改。

情况 II − 如果 R ≥ AF,则拒绝更改。

此处,R 是 0 到 1 之间的随机数。

步骤 8 − 降低控制参数(温度),如下所示 −

T(新)= ⁡0.95T(旧)

步骤 9 − 测试停止条件,可能如下所示 −

  • 温度达到指定值
  • 在指定的迭代次数内,状态没有变化