RBM学习笔记

来源:互联网 发布:ubuntu 开不开机 编辑:程序博客网 时间:2024/06/07 20:11


RBM是一种无监督学习算法,参数学习是通过基于能量的概率模型获得。相关知识涉及概率论与数理统计,采样理论等。本文主要是参考peghotyRBM学习笔记整理而成,主要记录公式结论,供自己理清算法思路。具体推导过程还是得阅读原作者博文。






RBMMatlab代码:

for i = 1 : opts.numepochs        kk = randperm(m);        err = 0;        for l = 1 : numbatches            batch = x(kk((l - 1) * opts.batchsize + 1 : l * opts.batchsize), :);                        v1 = batch; % 样本数据v            h1 = sigmrnd(repmat(rbm.c', opts.batchsize, 1) + v1 * rbm.W'); % 公式3.30            v2 = sigmrnd(repmat(rbm.b', opts.batchsize, 1) + h1 * rbm.W); % 公式3.31            h2 = sigm(repmat(rbm.c', opts.batchsize, 1) + v2 * rbm.W'); % 公式3.30            c1 = h1' * v1;            c2 = h2' * v2;            rbm.vW = rbm.momentum * rbm.vW + rbm.alpha * (c1 - c2)     / opts.batchsize; % 公式6.52            rbm.vb = rbm.momentum * rbm.vb + rbm.alpha * sum(v1 - v2)' / opts.batchsize; % 公式6.53            rbm.vc = rbm.momentum * rbm.vc + rbm.alpha * sum(h1 - h2)' / opts.batchsize; % 公式6.54            rbm.W = rbm.W + rbm.vW; % 梯度上升公式            rbm.b = rbm.b + rbm.vb;            rbm.c = rbm.c + rbm.vc;            err = err + sum(sum((v1 - v2) .^ 2)) / opts.batchsize;        end                disp(['epoch ' num2str(i) '/' num2str(opts.numepochs)  '. Average reconstruction error is: ' num2str(err / numbatches)]);            end




参考:

RBM学习笔记从预备知识讲起,共分八个章节:

http://blog.csdn.net/itplus/article/details/19168937

RBM&DBN算法:

http://blog.csdn.net/itplus/article/details/9079973

DeepLearningMatlabToolbox下载:

https://github.com/rasmusbergpalm/DeepLearnToolbox




0 0
原创粉丝点击