0. はじめに RBMはDeep Learningで多層化する場合に、事前学習として用いられる手法です。 ソースコードはtheanoで公開されています。 http://deeplearning.net/tutorial/rbm.html 今回はこのコードをchainerに移植してみました。 RBMの場合、誤差関数はFree Energyの関数となり複雑(?)ですが 逆誤差伝搬のため重み行列、バイアスの変数で微分すると綺麗な計算式となり、 Contrastive Divergence(CD)処理の値から計算できます。 chainerで実装する場合、わざわざ誤差関数(loss)を作成して逆誤差伝搬(loss.backward)するよりも、 単純にcupy(numpy+GPU)で実装したほうが単純となりますが、あえて誤差関数を使って実装してみました。 cupy(numpy+GPU)だけのソースコ