如何计算受限玻尔兹曼机(RBM)中隐藏单元的值?
如何计算受限玻尔兹曼机(RBM)中隐藏单元的值?
嘿,这个问题问到点子上了!虽然普通玻尔兹曼机确实是无向的能量模型,没法直接做“正向计算”,但受限玻尔兹曼机(RBM)的特殊结构(同层单元无连接)给了我们高效计算隐藏单元状态的可能,咱一步步拆解:
先明确RBM的核心前提
RBM是二分图结构:可见层(输入层)v和隐藏层h之间全连接,但同层的单元之间没有任何连接。这个特性带来了关键的条件独立性——给定可见层的状态时,所有隐藏单元的状态是相互独立的,反过来也一样。这是我们能单独计算每个隐藏单元的基础。
步骤1:回忆RBM的能量函数
首先,RBM的能量函数定义了可见层和隐藏层组合状态的“合理性”(能量越低,组合状态出现的概率越高):
E(v, h) = -Σ_i a_i v_i - Σ_j b_j h_j - Σ_i Σ_j v_i w_ij h_j
a_i:可见单元v_i的偏置b_j:隐藏单元h_j的偏置w_ij:可见单元i和隐藏单元j之间的权重
步骤2:计算隐藏单元的激活概率
因为条件独立性,给定可见层状态v时,单个隐藏单元h_j取1的概率可以单独计算,公式是:
P(h_j=1 | v) = σ(b_j + Σ_i v_i w_ij)
这里的σ是sigmoid激活函数:σ(x) = 1/(1 + e^(-x))。
简单说,这个概率就是隐藏单元被激活的可能性——它由隐藏单元自身的偏置,加上所有可见单元输入与对应权重的加权和共同决定。
步骤3:得到隐藏单元的实际状态
有两种常见方式获取隐藏单元的具体值:
- 确定性方式:直接以0.5为阈值,概率大于0.5的隐藏单元设为1,否则设为0;
- 随机性方式:基于计算出的概率做伯努利采样——对每个隐藏单元,生成一个0到1之间的随机数,如果这个数小于
P(h_j=1 | v),就将该单元设为1,否则设为0。这种方式更贴合RBM的概率模型本质,尤其是在训练过程中,随机性能帮助模型更好地探索状态空间。
补充你提到的点
你说“添加隐藏单元是为了捕捉更高阶……”完全正确!隐藏单元的作用就是建模可见单元之间的高阶依赖关系——比如处理图像时,隐藏单元可以学习到边缘、纹理这类底层特征的组合,而通过上面的计算,我们就能把原始的可见层输入,映射到这些高阶特征的表示上。
内容的提问来源于stack exchange,提问作者Achraf Oussidi
相关产品推荐
相关产品推荐

