我有40个特征向量的数据集,分为4个字符。有人可以在Matlab中给出一个示例代码,如何应用深度置信网络进行分类(并解释参数)?可以使用任意库/ tooblox,但应该在Matlab中。
例如shogun工具箱(http://www.shogun-toolbox.org/),DeeBNet工具箱(http://ceit.aut.ac.ir/~keyvanrad/DeeBNet%20Toolbox.html)或深度学习工具箱(http://www.mathworks.com/matlabcentral/fileexchange/38310-deep-learning-toolbox)但遗憾的是所有这些工具箱都没有很好地记录,因为我对深度学习/网络来说是全新的,这对我来说真的很难。
编辑:我应该为以下参数选择什么?我应该在什么范围内搜索?
nn.activation_function = 'tanh_opt'; % Activation functions of hidden layers: 'sigm' (sigmoid) or 'tanh_opt' (optimal tanh).
nn.learningRate = 2; % learning rate Note: typically needs to be lower when using 'sigm' activation function and non-normalized inputs.
nn.momentum = 0.5; % Momentum
nn.scaling_learningRate = 1; % Scaling factor for the learning rate (each epoch)
nn.weightPenaltyL2 = 0; % L2 regularization
nn.nonSparsityPenalty = 0; % Non sparsity penalty
nn.sparsityTarget = 0.05; % Sparsity target
nn.inputZeroMaskedFraction = 0; % Used for Denoising AutoEncoders
nn.dropoutFraction = 0; % Dropout level (http://www.cs.toronto.edu/~hinton/absps/dropout.pdf)
nn.testing = 0; % Internal variable. nntest sets this to one.
nn.output = 'sigm'; % output unit 'sigm' (=logistic), 'softmax' and 'linear'
opts.numepochs = 1;
opts.batchsize = 100;
opts.momentum = 0;
opts.alpha = 1;
答案 0 :(得分:2)
所以DBN非常复杂,我花了几个月的时间来真正地围绕它们。这是一个快速概述 -
神经网络通过提供某种功能并通过一层“全部或全部激活”来工作。这些激活具有权重,这就是NN试图“学习”的内容。 NNs在80-90岁时死亡,因为系统无法正确找到这些重量。直到令人敬畏的2006 paper of Geoff Hinton - 他们用限制的boltzman机器预先训练网络,以便在正确的球场中获得重量。
这取决于你的目标,但如果你的目标是了解它们是如何工作的,那么我将从Hinton的原始论文开始,并将其重写为具有函数而不是本文中的静态3层网络。这将使您对所学的权重和激活方面的最新情况有一个很好的直觉。
现在回答你的第二个问题 - 有一些争论 - 但根据我的经验,最关键的因素是提出系统架构,这些变量如下:
您可以控制的其他变量是我将其归类为优化变量的内容。这些是:
我会警告你,不要期待一流的结果 - 并准备好一个需要很长时间训练的系统。
你可以去的第二条路线是尝试像Caffe那样的其他系统,这可能会给你更多有用的结果。
无论如何,祝你好运:)
ps,对于这么小的数据,您可以考虑使用SVM。