Restricted Boltzmann machines (RBMs)
Boltzmann Machine Learning
- 非监督学习算法
- 学习目标:最大化玻耳兹曼机赋给各个二元向量的概率乘积(等价于对概率对数的和的最大化)
- 目标等价:最大化如下操作产生的N个训练样例的概率
- 在没有额外输入的情况下,网络稳定在N个不同的状态下
- 每次采样出一个可视向量
- 存在一个现象:一个权重的更新需要了解其他权重以及数据的相关信息
- 一个事实:一个权重需要了解其他权重以及数据的信息包含在了两个相关系数的差值中:
- KaTeX parse error: Undefined control sequence: \part at position 7: \frac{\̲p̲a̲r̲t̲ ̲\log p(\bold v)…
- 即导数等于当 v \bold v v为可视单元时的状态积期望与非 v \bold v v的情形下的状态积期望的差
- Δ w ∝ ⟨ s i s j ⟩ d a t a − ⟨ s i s j ⟩ m o d e l \Delta w \propto \langle s_is_j \rangle_{data} - \langle s_is_j \rangle_{model} Δw∝⟨sisj⟩data−⟨sisj⟩model
- 为何导数如此简单
- 热平衡状态下,全局配置的概率是对其能量的指数函数
- 因此概率对数即对能量的线性函数
- 能量是对权重的线性函数:KaTeX parse error: Undefined control sequence: \part at position 8: -\frac{\̲p̲a̲r̲t̲ ̲E}{\part w_{ij}…
- 将系统置到热平衡状态的过程将权重的信息传播开来,从而不需要反向传播
- 过程的关键
- 使用数据实现热平衡
- 不使用数据实现热平衡
- 收集需要的统计信息的高效方式
- 正向阶段:将数据嵌入可视单元,隐藏单元随机设置
- 一次更新一个隐藏单元,直到网络在1混淆度下达到热平衡
- 对每一对连接单元采样 ⟨ s i s j ⟩ \langle s_is_j \rangle ⟨sisj⟩
- 对所有数据完成一次,取平均
- 负向阶段:将所有单元随即设置
- 一次更新一个隐藏单元,直到网络在1混淆度下达到热平衡
- 对每一对连接单元采样 ⟨ s i s j ⟩ \langle s_is_j \rangle ⟨sisj⟩
- 重复足够多次,并取平均
- 正向阶段:将数据嵌入可视单元,隐藏单元随机设置
More efficient ways to get the statistics
- 高阶可选视频,只做理解,不作详细笔记
Restricted Boltzmann Machines
- 受限玻尔兹曼机:隐藏单元之间没有连接
- 在给定可视单元时,隐藏单元更容易达到热平衡状态
- 隐藏单元的热平衡状态可以一步到位计算,因为其相互独立
- RBM
- 限制网络的连接性,使其推导和学习更加简单(单层五相互连接的隐藏层)
- 同样,可视层的单元之间也没有连接
- 当给定一组可视单元时,RBM可以一步达到热平衡状态(直接得到 < v i h j > v <v_ih_j>_{\bold v} <vihj>v,得以快速计算 p ( h j = 1 ) = 1 1 + e − ( b j + ∑ i ∈ v i s v i w i j ) p(h_j=1)=\frac 1 {1 + e^{-(b_j + \sum_{i \in vis}v_i w_{ij})}} p(hj=1)=1+e−(bj+∑i∈visviwij)1)
- PCD:高效的面向RBM的mini-batch学习过程
- 正向阶段:给定一个数据向量到可视单元
- 计算每一对连接值 < v i h j > <v_ih_j> <vihj>
- 对每一个连接对,面向整个mini-batch的 < v i h j > <v_ih_j> <vihj>值做平均
- 负向阶段:保留一组“奇幻粒子”,每一个粒子具有一个全局配置的值
- 使用交替的平行更新来更新每一个奇幻粒子数次
- 正向阶段:给定一个数据向量到可视单元
- 一次重建:由t0时刻的可视单元预测隐藏单元,再由隐藏单元预测t1时刻的可视单元,由这个可视单元完成对隐藏单元的重建,即一次完整的重建
- 权重的更新来自于两个时刻的状态: Δ w i j = ϵ ( < v i h j > 0 − < v i h j > 1 ) \Delta w_{ij} = \epsilon (<v_i h_j>^0 - <v_i h_j>^1) Δwij=ϵ(<vihj>0−<vihj>1)
An example of RBM learning
RBMs for collaborative filtering
- 协同过滤:根据用户对其他产品的喜好和其他用户对该产品的喜好预测用于对该产品的喜好
- 将每一个用户视为一个训练样例
- 一个用于有一个针对所有的电影的评分数据向量
- 一个电影对应一个可视单元,面向用例softmax
- 大约100个隐藏单元,每一个隐藏单元与全部电影对应的可视单元相连
- 一些可视单元的值未知,需要模型将其填满
- 如何避免部分评分不存在的情形:
- 对每一个用户,使用一个RBM,只考虑包含评分的电影构成的向量(每一个用户的RBM类型都可能不同)
- 每个用户的RBM可能不同,但是所有的RBM共享相同的隐藏单元
- 因此每一个针对用户的RBM只有一个训练用例,但共享的隐藏单元让训练成为可能