Matlab 创建用于多类分类的基本前馈感知器神经网络
我是神经网络新手,我想为多类分类创建一个前馈神经网络。我可以使用任何公开的代码,但不能使用任何MATLAB工具箱,因为我无法访问它(因此没有神经网络工具箱)。目标是将数据分为10类中的一类,该类由最后一列中的三个字母代码定义 创建神经网络时,您是否只需定义节点数量,并将层i中的每个节点连接到层i+1中的每个节点?然后让他们自己学习重量Matlab 创建用于多类分类的基本前馈感知器神经网络,matlab,machine-learning,neural-network,Matlab,Machine Learning,Neural Network,我是神经网络新手,我想为多类分类创建一个前馈神经网络。我可以使用任何公开的代码,但不能使用任何MATLAB工具箱,因为我无法访问它(因此没有神经网络工具箱)。目标是将数据分为10类中的一类,该类由最后一列中的三个字母代码定义 创建神经网络时,您是否只需定义节点数量,并将层i中的每个节点连接到层i+1中的每个节点?然后让他们自己学习重量 还有一个我可以遵循的源代码,它有MATLAB代码,用于创建具有任意数量输入、任意数量节点的神经网络,并进行前馈的多类分类。神经网络的一般介绍(似乎您还需要了解一下
还有一个我可以遵循的源代码,它有MATLAB代码,用于创建具有任意数量输入、任意数量节点的神经网络,并进行前馈的多类分类。神经网络的一般介绍(似乎您还需要了解一下它们是什么): 阅读本文件,该文件解释了带反向传播的前馈网络的工作原理(数学很重要): 这里有一个在matlab中实现的注释: 关于你的问题: 1) “创建神经网络时,您是否只需定义节点数量,并将层i中的每个节点连接到层i+1中的每个节点?”取决于您使用的网络。在简单的全连接前馈神经网络中,是的
2) “然后让他们自己学习重量?”这是一般的想法。你有一些你知道其类别的数据(监督学习),你将把这些数据交给神经网络来学习模式,学习完成后,你使用这些更新的权重对新的、看不见的数据进行分类。一件应该有帮助的事情是使用错误而不是分类错误或错误(MSE)对于此类多类问题(尤其是评估)。这是一篇很好的文章,解释了这个想法。我将在这里引用它的例子: 假设我们预测一个人的政党归属(民主党, (共和党人,其他人)来自年龄、性别、年收入等独立数据 收入等等。 现在假设您只有三个训练数据项。你的神经 网络使用softmax激活输出神经元,因此 是可以解释为概率的三个输出值。对于 示例假设神经网络的计算输出和目标 (aka所需)值如下所示: 该神经网络的分类误差为1/3=0.33。请注意,NN just勉强正确地获得了前两个训练项目,而第三个训练项目则相差很远。现在查看另一个输出,如下所示:
computed | targets | correct?
-----------------------------------------------
0.1 0.2 0.7 | 0 0 1 (democrat) | yes
0.1 0.7 0.2 | 0 1 0 (republican) | yes
0.3 0.4 0.3 | 1 0 0 (other) | no
该神经网络的分类误差为1/3=0.33。但是第二个NN比第一个要好得多,因为它确定了前两个训练项目,并且几乎没有遗漏第三个训练项目总而言之,分类误差是一种非常粗糙的误差度量。下面是两种情况下分类误差和平均交叉熵误差的比较:
Neural Network | classification error | Average cross-entropy error
--------------------------------------------------------------------
NN1 | 0.33 | 1.38
NN2 | 0.33 | 0.64
要在训练中使用交叉熵误差,需要使用不同的代价函数。
见详情
其中,
m
是培训示例的数量,k
是课程的数量y
是标签x
为特征向量\theta
是权重参数。这是只用于更新权重的反向传播吗?还是训练整个神经网络?如何设置隐藏层中的节点数和其他参数?如何将其应用于新样本?训练网络本质上就是寻找权重。其他自由参数可通过交叉验证确定。将网络应用于新样本的方式与训练基本相同,但在获得预测输出后停止。请看一些关于神经网络的介绍性书籍。我了解如何将神经网络应用到一个新的示例中,我特别询问了如何使用您链接的代码。它似乎被标记为反向传播,我认为这只是更新权重的过程,而不是训练整个网络的过程。此外,该函数不返回任何内容,因此我应该如何在新示例上使用它?如果您阅读上述文档,您应该能够理解。在任何情况下,在“BackPropAlgo”函数中设置为输出V和W,然后执行“trainNeuralNet”的步骤,直到获得网络的预测输出即输出层的输出。这是交叉熵的一个很好的介绍。但我认为他的问题比这更普遍。
Neural Network | classification error | Average cross-entropy error
--------------------------------------------------------------------
NN1 | 0.33 | 1.38
NN2 | 0.33 | 0.64