http://www.ailab.cn/quantum/2019021589178.html
受限玻尔兹曼机器是生成随机神经网络。它们有许多应用,包括:
- 协同过滤
- 降维
- 分类
- 回归
- 特征学习
- 主题建模
RBM属于一类称为 Energy-Based的模型。它不同于其他(更受欢迎的)神经网络,后者根据输入估计一个值,而RBM估计输入的概率密度(估计许多点而不是单个值)。
RBM具有以下属性:
- 它们是浅层网络,只有两层(输入/可见层和隐藏层)
- 它们的隐藏单元h和可见(输入)单元v通常是二进制值
- 存在与隐藏单元和可见单元之间的连接相关联的权重矩阵W.
- 存在两个偏差项,一个用于由a表示的输入单元,一个用于由b表示的隐藏单元
- 每种配置都具有相关的能量函数E(v,h),其在训练期间被最小化
- 它们没有输出层
- 没有内部层连接(这是“限制”)。对于给定的一组可见单元激活,隐藏的单元激活是相互独立的(反之亦然)。该属性极大地方便了分析。
要最小化的能量函数由下式给出:
等式1:RBM最小化能量函数
可见单元和隐藏单元的联合概率分布如下:
等式2:总概率分布
其中归一化常数Z称为分区函数。追踪隐藏单元,我们获得可见(输入)向量的边际概率:
等式3:输入单元边际概率分布
因为,正如前面提到的,在给定可见(隐藏)单元激活的情况下,隐藏(可见)单元激活是相互独立的,因此可以这样写:
等式4:条件概率由于相互独立而变成乘积
并且:
等式5:与等式4相同
最后,激活概率如下:
等式6:激活概率
其中σ是sigmoid函数。
训练步骤如下:
- 我们首先将可见单元状态设置为训练向量。
- 然后使用等式6左边的表达式计算隐藏单元的状态。
- 在为隐藏单元选择状态之后,执行所谓的“reconstruction”,根据等式6右边的表达式将每个可见单元设置为1。
- 权重改变:
RBM如何处理输入,这是一个简单的例子
下面的三个图展示了RBM如何处理输入。
一个简单的RBM处理输入
- 在隐藏层的节点1处,输入x乘以权重w,添加偏差b,并且将结果馈送到激活,给出输出a(参见最左边的图)。
- 在中图,所有输入在隐藏节点1处组合,并且每个输入x乘以其对应的w。然后对乘积求和,添加偏差b,并将最终结果传递给激活函数,从隐藏节点1 产生完整输出a
- 在第三个图中,输入x被传递给隐藏层中的所有节点。在每个隐藏节点处,x乘以其对应的权重w。各个隐藏节点以其各自的权重w接收所有输入x的乘积然后将偏差b添加到每个和中,结果通过激活函数传递,为所有隐藏节点生成输出。
RBM如何学习重建数据
RBM执行称为“重建”的无监督过程。他们学会重建数据,在两层之间执行一连串的传递(forward and backward ones)传递。在backward pass中,如下图所示,隐藏层中节点的激活函数成为新输入。
将这些输入的乘积和各自的权重相加,并且在每个输入节点处添加来自可见层的新偏差b。此类操作的新输出称为“重建”,因为它是原始输入的近似值。
当然,重建和原始输入首先是非常不同的(因为w的值是随机初始化的)。然而,由于误差反复传播到ws,因此逐渐最小化。
因此,我们看到:
- RBM在forward pass时使用输入来预测节点的激活情况,并根据加权输入x估计输出a的概率分布
- 在backward pass时,RBM尝试以激活a为条件来估计输入x的概率分布
将两个条件分布连接起来,得到x和a的联合概率分布,即RBM学习如何逼近原始数据(输入的结构)。