之前做基于RNN的和弦音乐生成, 参考了Bengio的论文:Modeling Temporal Dependencies in High-Dimensional Sequence: Application to Polyphonic Music Gneration and Transcription, 看完之后想着整理一下笔记, 论文源码则在deeplearning tutorial RNN-RBM上
这篇论文采用RBM是为了解决音乐里的polyphonic问题, 即同时多音的问题, RBM输出可以有多个隐藏层节点同时为 1, 这样可以表示同时多音的情况。
在了解RNN-RBM之前,我们先来了解一下RTRBM(recurrent temporal RBM)
1. RTRBM
1.1 RTRBM的结构
RTRBM的结构如下图所示:
RTRBM是一序列的RBM组成,其中,由图可以发现,该网络是有记忆性的,当前输出状态与上一输出状态有关,也与当前输入有关,一个单独时刻的网络架构则是由一个RBM和一个recurrent单元组成。当前时刻的RBM的网络所用到的权重参数 W,bv,bh 依赖于过去时刻的影响
1.2 RTRBM的理解
上图结构图中,每一个红色框内表示的是一个RBM,令 表示当前时刻RBM的可见层, 表示 的mean-filed value,RBM是一种能量模型,RTRBM则由其联合概率分布所定义:
如果是二值RBM, 则其中隐藏层和可见层由下式计算:
然而该RBM的参数则依赖于之前的时刻,只有偏置参数受到上一时刻的影响,偏置参数计算式如下:
则由下式计算所得:
2.RNN-RBM的理解
RNN-RBM模型可以看成是一序列的RBM组成,其中RBM的参数依赖于一个RNN判别模型的输出, 相比与RTRBM,rnnrbm将RBM的隐藏层 和 RNN 的隐藏层 分离出来,两值不再相同。原来RTRBM网络里的隐藏层表示的是可见层的条件分布, 只能保存暂时的信息,将RBM的隐藏层用RNN的隐藏层代替之后,可以保存更长久的记忆存储, 这样的模型就是RNN-RBM。
RNN-RBM可以认为是RTRBM的一般化,在解决时序依赖性上有更大的自由度。当设置RNN-RBM中的某些参数为 时, RNN-RBM网络就变成了RTRBM网络。
2.1 RNN-RBM的结构
RNN-RBM结构如下图所示:
2.1 RNN-RBM 的理解
在上图的结构图中,每一个红色框内依然是一个RBM,绿色框内则是沿时序展开的RNN网络,
- RBM部分
该部分与RTRBM中的RBM部分相同,同时RBM的偏置参数也是由上一时刻的隐藏层所影响,不过该隐藏层是RNN网络的隐藏层:
- RNN部分
该部分就是一个单层的沿时序展开的RNN网络, 隐藏层单元计算式如下: