Deep belief network learns context dependent behavior (Raudies, Zilli, Hasselmo 2014)

 Download zip file 
Help downloading and running models
Accession:194883
We tested a rule generalization capability with a Deep Belief Network (DBN), Multi-Layer Perceptron network, and the combination of a DBN with a linear perceptron (LP). Overall, the combination of the DBN and LP had the highest success rate for generalization.
Reference:
1 . Raudies F, Zilli EA, Hasselmo ME (2014) Deep belief networks learn context dependent behavior. PLoS One 9:e93250 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Connectionist Network;
Brain Region(s)/Organism:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s):
Implementer(s): Raudies, Florian [florian.raudies at gmail.com];
/
Matlab
screenshots
README.html
DeepBeliefNetwork.m
DoubleContextLearner.m
DoubleContextLearnerDBN.m
DoubleContextLearnerDBNaLP.m
DoubleContextLearnerMLP.m
DoubleContextTask.m
Figure2.m
Figure3A.m
Figure3B.m
Figure3C.m
Figure3D.m
Figure3E.m
Figure3F.m
Figure3G.m
Figure3H.m
Figure4B.m
Figure4C.m
Figure4D.m
gpl-3.0.txt *
LinearPerceptron.m
logistic.m
MultiLayerPerceptronNetwork.m
num2cellstr.m
RestrictedBoltzmannMachine.m
rotateXLabels.m *
                            
classdef DoubleContextLearnerDBN < DoubleContextLearner 
    % DoubleContextLearner
    % Uses a Deep Belief Network (DBN) to learn the double-context task.
    %   Florian Raudies, 01/30/2014, Boston University.
    properties (SetAccess = private)
        dbn         % Deep belief network.
    end
    methods
        function obj = DoubleContextLearnerDBN(...
                LetterLabel,NumberLabel,nHidden,nLayer)
            obj = obj@DoubleContextLearner(LetterLabel,NumberLabel);
            obj.dbn = DeepBeliefNetwork(repmat(nHidden,[1 nLayer]));
        end
        function obj = learn(obj,nBlock,ExcludeState)
            [Data Label] = obj.generateData(nBlock, ExcludeState);
            obj.dbn.fit(Data,Label);
        end
        function err = testError(obj)
            Data    = obj.getDataBlock();
            Label   = obj.getLabelBlock();
            L       = obj.dbn.predict(Data);
            err     = sum(sum(L~=Label))/(2*length(L));
        end
        function obj = setBlockTrain(obj,flag)
            obj.blockTrain = flag;
            obj.dbn.setBlockTrain(flag);
        end
    end
    methods (Static = true)
        function id = getIdentifier()
            id = 'DBN';
        end
    end
end