玻尔兹曼机
这些是具有循环结构的随机学习过程,是 ANN 中使用的早期优化技术的基础。玻尔兹曼机由 Geoffrey Hinton 和 Terry Sejnowski 于 1985 年发明。Hinton 关于玻尔兹曼机的论述更为清晰。
"该网络的一个令人惊讶的特点是它只使用本地可用信息。权重的变化仅取决于它连接的两个单元的行为,即使这种变化优化了全局度量" - Ackley, Hinton 1985。
关于玻尔兹曼机 − 的一些要点
它们使用循环结构。
它们由随机神经元组成,这些神经元具有两种可能状态之一,即 1 或 0。
其中一些神经元是自适应的(自由状态),一些是钳制的(冻结状态)。
如果我们在离散 Hopfield 网络上应用模拟退火,那么它将成为玻尔兹曼机。
玻尔兹曼机的目标
玻尔兹曼机的主要目的是优化问题的解决方案。玻尔兹曼机的工作就是优化与该特定问题相关的权重和数量。
架构
下图显示了玻尔兹曼机的架构。从图中可以清楚地看出,它是一个二维单元阵列。这里,单元之间互连的权重为–p,其中p > 0。自连接的权重由b给出,其中b > 0。
训练算法
众所周知,玻尔兹曼机具有固定权重,因此不会有训练算法,因为我们不需要更新网络中的权重。但是,为了测试网络,我们必须设置权重并找到共识函数 (CF)。
玻尔兹曼机有一组单元 Ui 和 Uj,并且它们之间有双向连接。
我们正在考虑固定权重,例如 wij。
wij ≠ 0,如果 Ui 和 Uj 相连。
加权互连也存在对称性,即 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})$$
这里 ui 是 Ui 的当前状态。
系数 (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 作为 1 和 n 之间的随机值。
步骤 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 − 测试停止条件,可能如下所示 −
- 温度达到指定值
- 在指定的迭代次数内,状态没有变化