随机网络:从随机神经元到玻尔兹曼机的深入解析
1. 随机网络概述
随机网络包含霍普菲尔德网络(Hopfield networks)和玻尔兹曼机(Boltzmann machines)等。霍普菲尔德网络是一组相互作用的感知器集合,其目的是最小化一个由神经元之间相互作用定义的代价函数(即能量函数),在解决组合优化问题方面非常有用。而玻尔兹曼机类似于霍普菲尔德网络,但其中的感知器被二元随机神经元所取代,可以看作是霍普菲尔德网络的噪声版本,用于避免霍普菲尔德网络陷入能量函数的局部最小值。
2. 随机神经元
-
确定性感知器与二元随机神经元
- 确定性感知器是一个计算单元,接受 $n$ 个输入 $x_1, \cdots, x_n$,并提供一维输出 $y = H(w^T x + b)$,其中 $H$ 是阶跃函数。当 $w^T x + b > 0$ 时,输出为 1;否则为 0。
- 二元随机神经元同样接受 $n$ 个输入 $x_1, \cdots, x_n$,输出 $Y$ 是一个二元随机变量,$Y \in {0, 1}$,其分布为 $P(Y = 1|x) = \sigma(w^T x + b)$,$P(Y = 0|x) = 1 - \sigma(w^T x + b) = \sigma(-w^T x - b)$,这里 $\sigma$ 是逻辑函数。当输入满足 $w^T x + b > 0$ 时,确定性感知器以概率 1 输出 1,而随机神经元以概率 $\sigma(w^T x + b)$ 输出 1。
-
Fisher 度量
- 随机神经元关于其权重的信息通过其 Fisher 矩阵评估。对于 $1 \leq i, j \leq n$,有 $g_{ij} = E[\partial_{w_i}\ell\partial_{w_j}\ell]$,经过一系列推导可得 $g_{ij} = \sigma(w^T x + b)(1 - \sigma(w^T x + b))x_ix_j$。若记 $\tilde{x} = (1, x)^T$ 和 $\tilde{w} = (b, w)$,则 $\tilde{g}_{ij} = \sigma(w^T x + b)(1 - \sigma(w^T x + b))\tilde{x}_i\tilde{x}_j$,矩阵形式为 $\tilde{g} = \sigma(w^T x + b)(1 - \sigma(w^T x + b))\tilde{x}\tilde{x}^T$。由于矩阵 $\tilde{x}\tilde{x}^T$ 的任意两列成比例,所以 $\det \tilde{g} = 0$,且 $\text{Trace} \tilde{g} = (1 + |x|_2^2)\sigma(w^T x + b)(1 - \sigma(w^T x + b)) > 0$。信息密度在方向 $\tilde{w} = (b, w)$ 上为 $\tilde{w}^T \tilde{g} \tilde{w} = (w^T x + b)^2\sigma(w^T x + b)(1 - \sigma(w^T x + b))$,这意味着在超平面 ${x \in R^n; w^T x + b = 0}$ 上信息密度为 0,并且当 sigmoid 函数饱和时(即 $w^T x + b \to \pm\infty$),信息密度趋于 0。
-
最大似然
-
随机神经元通过最大化似然来学习。引入随机变量 $U = 2Y - 1$,则 $P(U = 1) = P(Y = 1) = \sigma(w^T x + b) = \sigma((w^T x + b)U)$,$P(U = -1) = P(Y = 0) = 1 - \sigma(w^T x + b) = \sigma(-w^T x - b) = \sigma((w^T x + b)U)$。将训练集 ${(x_1, z_1), \cdots, (x_n, z_n)}$ 转换为 ${(x_1, t_1), \cdots, (x_n, t_n)}$,其中 $t_j = 2z_j - 1$。最优参数 $(w^
, b^
)$ 由 $\arg \max_{w,b} \frac{1}{n} \sum_{j=1}^n \ln \sigma((w^T x_j + b)t_j)$ 给出。代价函数 $C(w, b) = \frac{1}{n} \sum_{j=1}^n \ln \sigma((w^T x_j + b)t_j)$ 可以通过梯度上升法最大化,参数更新规则为 $w^{(m+1)} = w^{(m)} + \eta\nabla_w C(w, b)$,$b^{(m+1)} = b^{(m)} + \eta\nabla_b C(w, b)$,其中梯度计算如下:
- $\frac{\partial C}{\partial w_k} = \frac{1}{n} \sum_{j=1}^n x_{j}^k t_j \sigma(-(w^T x_j + b)t_j)$
- $\frac{\partial C}{\partial b} = \frac{1}{n} \sum_{j=1}^n t_j \sigma(-(w^T x_j + b)t_j)$
-
随机神经元通过最大化似然来学习。引入随机变量 $U = 2Y - 1$,则 $P(U = 1) = P(Y = 1) = \sigma(w^T x + b) = \sigma((w^T x + b)U)$,$P(U = -1) = P(Y = 0) = 1 - \sigma(w^T x + b) = \sigma(-w^T x - b) = \sigma((w^T x + b)U)$。将训练集 ${(x_1, z_1), \cdots, (x_n, z_n)}$ 转换为 ${(x_1, t_1), \cdots, (x_n, t_n)}$,其中 $t_j = 2z_j - 1$。最优参数 $(w^
, b^
)$ 由 $\arg \max_{w,b} \frac{1}{n} \sum_{j=1}^n \ln \sigma((w^T x_j + b)t_j)$ 给出。代价函数 $C(w, b) = \frac{1}{n} \sum_{j=1}^n \ln \sigma((w^T x_j + b)t_j)$ 可以通过梯度上升法最大化,参数更新规则为 $w^{(m+1)} = w^{(m)} + \eta\nabla_w C(w, b)$,$b^{(m+1)} = b^{(m)} + \eta\nabla_b C(w, b)$,其中梯度计算如下:
-
模拟退火方法
- 对随机神经元的输出分布进行修改,$P(Y = 1|x) = \sigma_c(w^T x + b)$,$P(Y = 0|x) = 1 - \sigma_c(w^T x + b) = \sigma_c(-w^T x - b)$,其中 $\sigma_c(x) = \sigma(cx) = \frac{1}{1 + e^{-cx}}$,$c \geq 0$。相关代价函数为 $C(w, b) = \frac{1}{n} \sum_{j=1}^n \ln \sigma_c((w^T x_j + b)t_j)$。
- 当 $c \to 0$ 时,$P(Y = 1|x) = \frac{1}{2}$,$P(Y = 0|x) = \frac{1}{2}$,对应最大噪声情况。当 $c$ 无界增加时,$\sigma_c(x)$ 几乎处处(除原点外)趋于阶跃函数 $H(x)$,此时随机神经元收敛到确定性感知器。从退火角度看,常数 $c$ 被视为温度的倒数,增加 $c$ 的值意味着降低温度以获得感知器代价函数的全局最小值。
3. 玻尔兹曼分布
-
热力学系统与熵
- 考虑一个具有 $N$ 个状态的热力学系统,随机变量 $x$ 描述系统的状态,其可能取值为 $x_1, \cdots, x_N$,取值概率为 $p_j = P(x = x_j)$。每个状态 $x_j$ 与系统的一个能量水平 $E_j$ 相关联。
- 系统状态因粒子相互作用而改变,根据热力学第二定律,系统状态的变化应使系统的总熵增加。在没有其他约束的情况下,系统最终趋向于均匀分布,即 $p_1 = \cdots = p_N = \frac{1}{N}$,这是熵最大的分布。
-
寻找最大熵分布
- 假设粒子相互作用在给定温度 $T$ 下进行,温度与系统的平均能量成正比,即 $T \sim \sum_{j=1}^N p_j E_j$。因此,需要寻找在约束条件 $\sum_{j=1}^N p_j = 1$ 和 $\sum_{j=1}^N p_j E_j = k$($k$ 为正常数)下的最大熵分布。
- 构造函数 $F(p_1, \cdots, p_N, \lambda_1, \lambda_2) = -\sum_{j=1}^N p_j \ln p_j + \lambda_1 (\sum_{j=1}^N p_j E_j - k) + \lambda_2 (\sum_{j=1}^N p_j - 1)$,其中 $\lambda_1, \lambda_2 \in R$ 是拉格朗日乘数。
- 通过变分方程 $\frac{\partial F}{\partial p_j} = -(1 + \ln p_j) + \lambda_1 E_j + \lambda_2 = 0$,可得 $p_j = c e^{\lambda_1 E_j}$,其中 $c = e^{\lambda_2 - 1}$。Hessian 矩阵 $\frac{\partial^2 F}{\partial p_i \partial p_j}$ 是负定的,说明这是一个真正的最大值。通过逆函数定理证明了拉格朗日乘数 $\lambda_1, \lambda_2$ 的唯一性。
-
配分函数与玻尔兹曼分布
- 定义配分函数 $Z = \sum_{j=1}^N e^{\lambda_1 E_j}$,则 $p_j = \frac{e^{\lambda_1 E_j}}{Z}$。对 $Z(\lambda_1)$ 求导可得 $\frac{d}{d\lambda_1} Z(\lambda_1) = kZ$,且 $Z(0) = N$,解得 $Z = N e^{k\lambda_1}$。将 $\lambda_1 = -\frac{\ln(N/Z)}{k}$ 代入 $p_j$ 的表达式,得到 $p_j = e^{-\frac{E_j}{T}}$,这就是玻尔兹曼分布,它描述了一个具有 $N$ 个不同状态和相关能量 $E_1, E_2, \cdots, E_N$ 的系统在热平衡时的概率分布,系统以较高概率处于能量较低的状态,且概率随能量水平的增加呈指数下降。
4. 玻尔兹曼机
-
玻尔兹曼机的定义
- 玻尔兹曼机是一个由相互连接的二元随机神经元组成的神经网络,权重对称,即 $w_{ij} = w_{ji}$,且 $w_{ii} = 0$。第 $i$ 个神经元的状态根据规则随机更新:$x_i = \begin{cases} 1, & \text{概率为 } p_i \ 0, & \text{概率为 } 1 - p_i \end{cases}$,其中 $p_i = \sigma_{1/T}(\sum_{j} w_{ji} x_j + b_i) = \frac{1}{1 + e^{-(\sum_{j} w_{ji} x_j + b_i)/T}}$,$T > 0$ 是温度,$w_{ij}$ 是第 $i$ 个和第 $j$ 个神经元之间的权重,$b_j$ 是第 $j$ 个神经元的偏置。
- 由于每个神经元的激活状态是二元的,$x_i \in {0, 1}$,所以一个具有 $n$ 个神经元的玻尔兹曼机可以有 $N = 2^n$ 个状态。
-
玻尔兹曼机作为热力学系统
- 定义第 $i$ 个神经元的信号电位为 $u_i = -(\frac{1}{2} \sum_{j} w_{ji} x_j + b_i)$,神经元的能量为 $\epsilon_i = u_i x_i$,网络状态 $x = (x_1, \cdots, x_n)^T$ 的总能量为 $E(x) = \sum_{i} \epsilon_i = -\frac{1}{2} \sum_{i,j} w_{ji} x_j x_i - \sum_{i} b_i x_i = -\sum_{i<j} w_{ji} x_j x_i - \sum_{k} b_i x_k$,矩阵形式为 $E(x) = -\frac{1}{2} x^T w x - x^T b$,因此相关的能量函数关于神经元激活 $x_i$ 是二次的。
- 考虑一个具有 $N = 2^n$ 个状态的热力学系统,每个状态对应一个能量水平 $E_j = E(x_j)$。玻尔兹曼机在时间零时有一个初始状态,通过随机更新规则,系统的熵增加直到达到热力学平衡,对应的平衡分布是玻尔兹曼分布 $p_j = \frac{e^{-E_j/T}}{Z}$,且无论机器的初始状态如何,都能达到这个平衡分布。
- 从热力学的过渡概率来看,从能量为 $E_i$ 的状态 $x_i$ 过渡到能量为 $E_j$ 的状态 $x_j$ 的概率为 $p_{ij} = \frac{1}{1 + e^{(E_j - E_i)/T}}$,与玻尔兹曼机的更新规则一致。
-
示例分析
- 三神经元网络 :考虑一个具有三个神经元(权重对称且 $w_{ii} = 0$)的网络,其信号电位为 $u_1 = -(w_{12} x_2 + w_{13} x_3 + b_1)$,$u_2 = -(w_{12} x_1 + w_{23} x_3 + b_2)$,$u_3 = -(w_{13} x_1 + w_{23} x_2 + b_3)$,网络能量为 $E(x) = -(w_{12} x_1 x_2 + w_{13} x_1 x_3 + w_{23} x_2 x_3 + b_1 x_1 + b_2 x_2 + b_3 x_3)$。系统有 $N = 2^3 = 8$ 个状态,对应的能量水平不同。当 $T = 1$ 时,玻尔兹曼分布为 $p = \frac{1}{Z} (1, e^{b_1}, e^{b_2}, e^{b_3}, e^{w_{23} + b_2 + b_3}, e^{w_{13} + b_1 + b_3}, e^{w_{12} + b_1 + b_2}, e^{w_{12} + w_{13} + w_{23} + b_1 + b_2 + b_3})$。由于需要学习 7 个未知数($q_1, \cdots, q_7$),而只有 6 个参数($b_1, b_2, b_3, w_{12}, w_{13}, w_{23}$),所以不能精确学习任意分布 $q$,但可以通过玻尔兹曼学习算法以最小化 Kullback - Leibler 散度的方式近似学习。
- 二神经元网络 :对于一个具有两个神经元的玻尔兹曼机,$N = 2^2 = 4$ 个状态,能量为 $E(x) = -w_{12} x_1 x_2 - b_1 x_1 - b_2 x_2$。当 $T = 1$ 时,玻尔兹曼分布为 $p = \frac{1}{Z} (1, e^{b_1}, e^{b_2}, e^{w_{12} + b_1 + b_2})$。通过调整参数 $w, b$,可以精确学习任意分布 $q$。例如,由 $p_1 = \frac{1}{Z} = q_1$ 可得 $Z = \frac{1}{q_1}$,进而得到 $b_1 = \ln \frac{q_2}{q_1}$,$b_2 = \ln \frac{q_3}{q_1}$,$w_{12} = \ln \frac{q_1 q_4}{q_2 q_3}$。
以下是随机神经元和玻尔兹曼机相关概念的对比表格:
| 概念 | 随机神经元 | 玻尔兹曼机 |
| — | — | — |
| 组成单元 | 二元随机神经元 | 相互连接的二元随机神经元 |
| 输出 | 二元随机变量 $Y \in {0, 1}$ | 网络状态 $x = (x_1, \cdots, x_n)^T$,$x_i \in {0, 1}$ |
| 学习方式 | 最大似然,梯度上升法 | 玻尔兹曼学习,梯度上升法 |
| 应用场景 | 基础学习单元 | 分布逼近 |
下面是随机神经元学习过程的 mermaid 流程图:
graph TD;
A[输入训练集] --> B[初始化参数 w, b];
B --> C[计算代价函数 C(w, b)];
C --> D[计算梯度 ∇wC(w, b), ∇bC(w, b)];
D --> E[更新参数 w(m+1) = w(m) + η∇wC(w, b), b(m+1) = b(m) + η∇bC(w, b)];
E --> F{是否满足停止条件};
F -- 否 --> C;
F -- 是 --> G[输出最优参数 w*, b*];
5. 玻尔兹曼学习
玻尔兹曼机可作为状态空间 $X$ 上分布的近似器。为了让玻尔兹曼机学习状态空间 $X$ 上给定的分布 $q$,需要从机器生成的所有分布 $p$ 中选择与 $q$ 在 Kullback - Leibler 散度意义下最接近的分布 $p^
$,即:
[p^
= \arg \min_{p} D_{KL}(q || p) = \arg \min_{p} \sum_{x \in X} q(x) \ln \frac{q(x)}{p(x)}]
由于熵 $H(q) = \sum_{x \in X} q(x) \ln q(x)$ 与 $p$ 无关,上述搜索等价于:
[p^
= \arg \max_{p} \sum_{x \in X} q(x) \ln p(x)]
其思路是,当机器参数改变时,玻尔兹曼分布 $p(x) = \frac{e^{-E(x)}}{Z(x)}$ 会发生变化,参数通过梯度上升法进行更新。
-
梯度计算
- 首先求对数似然函数的导数:
- 对 $\ln p(x)$ 关于 $w_{ij}$ 求偏导:
[\begin{align
}
\frac{\partial}{\partial w_{ij}} \ln p(x) &= -\frac{\partial}{\partial w_{ij}} E(x) - \frac{\partial}{\partial w_{ij}} \ln Z(x) \
&= \frac{\partial}{\partial w_{ij}} (\frac{1}{2}x^T w x + x^T b) - \frac{1}{Z(x)} \frac{\partial}{\partial w_{ij}} Z(x) \
&= x_i x_j - \frac{1}{Z(x)} \sum_{x \in X} \frac{\partial}{\partial w_{ij}} e^{-E(x)} \
&= x_i x_j - \sum_{x \in X} p(x) x_i x_j \
&= x_i x_j - E_p[x_i x_j]
\end{align
}]
- 对 $\ln p(x)$ 关于 $b_j$ 求偏导:
[\begin{align
}
\frac{\partial}{\partial b_j} \ln p(x) &= -\frac{\partial}{\partial b_j} E(x) - \frac{\partial}{\partial b_j} \ln Z(x) \
&= x_j - \sum_{x \in X} p(x) x_j \
&= x_j - E_p[x_j]
\end{align*}]
- 然后求代价函数 $C(w, b) = \sum_{x \in X} q(x) \ln p(x)$ 的梯度分量:
- (\frac{\partial}{\partial w_{ij}} C(w, b) = \sum_{x \in X} q(x) \frac{\partial}{\partial w_{ij}} \ln p(x) = \sum_{x \in X} q(x) x_i x_j - \sum_{x \in X} q(x) E_p[x_i x_j] = E_q[x_i x_j] - E_p[x_i x_j])
- (\frac{\partial}{\partial b_j} C(w, b) = \sum_{x \in X} q(x) \frac{\partial}{\partial b_j} \ln p(x) = \sum_{x \in X} q(x) x_j - \sum_{x \in X} q(x) E_p[x_j] = E_q[x_j] - E_p[x_j])
以下是玻尔兹曼学习过程的步骤列表:
1. 初始化玻尔兹曼机的参数 $w$ 和 $b$。
2. 计算当前参数下的分布 $p(x)$ 和配分函数 $Z(x)$。
3. 计算代价函数 $C(w, b) = \sum_{x \in X} q(x) \ln p(x)$。
4. 计算梯度 (\frac{\partial C}{\partial w_{ij}}) 和 (\frac{\partial C}{\partial b_j})。
5. 根据梯度上升法更新参数:
- (w_{ij}^{(m + 1)} = w_{ij}^{(m)} + \eta \frac{\partial C}{\partial w_{ij}})
- (b_j^{(m + 1)} = b_j^{(m)} + \eta \frac{\partial C}{\partial b_j})
6. 判断是否满足停止条件(如达到最大迭代次数或代价函数变化小于阈值),若不满足则返回步骤 2,若满足则输出最优参数。
下面是玻尔兹曼学习过程的 mermaid 流程图:
graph TD;
A[初始化参数 w, b] --> B[计算分布 p(x) 和配分函数 Z(x)];
B --> C[计算代价函数 C(w, b)];
C --> D[计算梯度 ∂C/∂wij, ∂C/∂bj];
D --> E[更新参数 w(m+1), b(m+1)];
E --> F{是否满足停止条件};
F -- 否 --> B;
F -- 是 --> G[输出最优参数];
总结
本文深入探讨了随机网络,从随机神经元的基本概念出发,介绍了其与确定性感知器的区别、Fisher 度量、最大似然学习和模拟退火方法。接着阐述了玻尔兹曼分布的推导过程,它描述了热力学系统在热平衡时的概率分布。然后详细介绍了玻尔兹曼机的定义、能量函数和平衡分布,通过具体示例说明了其在不同情况下学习分布的能力,包括精确学习和近似学习。最后介绍了玻尔兹曼学习算法,通过梯度上升法更新参数以最小化 Kullback - Leibler 散度,实现对给定分布的近似。随机网络在组合优化、分布逼近等领域具有重要应用价值,未来可进一步研究其在更复杂问题中的应用和优化。
超级会员免费看
4234

被折叠的 条评论
为什么被折叠?



