1

我有一个简单的任务,即使用神经网络按身高和头发长度将人分类为 MAN 或 WOMAN 类别。也用一些例子教它模式,然后用它自己分类。

我对神经网络有基本的了解,但在这里确实需要一些帮助。

我知道每个神经元将区域划分为两个子区域,基本上这就是为什么在这里使用 P = w0 + w1*x1 + w2*x2 + ... + wn*xn (如果我们考虑几何,权重只是移动线表示)。

我确实理解每个时代都应该修改权重以更接近正确的结果,但我从未对其进行编程,我对如何开始感到绝望。

我应该如何进行,意思是:我如何确定阈值以及我应该如何处理输入?

对于感兴趣的人来说,这不是家庭作业,而是任务。我是,我想理解它。

4

3 回答 3

3

看起来您正在处理一个带有阈值激活函数的简单感知器。看看这个问题。由于您使用的是偏置神经元 (w0),因此您可以将阈值设置为 0。

然后,您只需将网络的输出与 0 进行比较,例如,如果 x < 0,则输出类 1,如果 x > 0,则输出类 2。您可以将案例 x=0 建模为“模糊”。

为了学习权重,您需要应用可以很容易实施的Delta 学习规则。但要小心:只有当您的数据是线性可分的时,具有简单阈值激活函数的感知器才能正确。如果您有更复杂的数据,您将需要一个多层感知器和一个非线性激活函数,如 Logistic Sigmoid 函数。

有关详细信息,请查看Geoffrey Hintons Coursera Course, Lecture 2

于 2013-03-26T15:26:52.053 回答
1

我最近一直在研究机器学习(但我不是专家),但你应该看看Accord.NET框架。它包含开箱即用的所有常见机器学习算法。因此,很容易获取现有样本并对其进行修改,而不是从头开始。此外,该框架的开发人员在同一页面上的论坛中非常有帮助。

通过可用的示例,您还可能会发现比神经网络更好的东西,例如内核支持向量机。如果你坚持使用神经网络,那么修改所有不同的变量会很有趣,通过尝试和错误,你会理解它是如何工作的。

玩得开心!

于 2013-03-26T15:02:25.587 回答
0

既然你说:

我知道每个神经元将区域划分为两个子区域

&

如果我们考虑几何表示,权重只是在移动线

我认为您想使用 perseptron 或 ADALINE 神经网络。这些神经网络只能对线性可分离模式进行分类。由于您的输入数据很复杂,因此最好使用多层非线性神经网络。(我的建议是具有 tanh 激活函数的两层神经网络)。为了训练这些网络,您应该使用反向传播算法。

为了回答

我应该如何处理输入?

我需要了解有关输入的更多详细信息(例如:它们只是身高和头发长度还是更多,它们的范围和您的分辨率等)

如果您只处理身高和头发长度,我建议在某些类别(例如 160cm-165cm、165cm-170cm 等)中划分身高和长度,并为这些类别中的每一个设置一个开/关输入神经元。然后在与身高相关的所有类之后放置一个隐藏层,在与头发长度相关的所有类之后放置另一个隐藏层(tanh 激活函数)。这两个隐藏层中的神经元数量是根据训练案例的数量确定的。然后将这两个隐藏层输出发送到具有 1 个输出神经元的聚合层。

于 2013-03-30T02:15:39.713 回答