如何确定神经网络中神经元发射的阈值?

时间:2013-03-26 14:54:19

标签: artificial-intelligence neural-network

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

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

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

我明白每个epoche应该修改权重以接近正确的结果,但我从来没有编程,我对如何开始毫无意义。

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

对于那些感兴趣的人来说,这不是一项功课,而不是一项任务。我和我想了解它。

3 个答案:

答案 0 :(得分:3)

看起来您正在处理具有阈值激活功能的简单Perceptron。看看this question。由于您使用的是偏置神经元(w0),因此您可以将阈值设置为0.

然后,您只需获取网络的输出并将其与0进行比较,这样您就可以如果x<输出等级1如果x> 0,则为0和2级;你可以将案例x = 0建模为“indistinct”。

要学习权重,您需要应用Delta Learning Rule,这可以很容易地实现。但要小心:只有数据可线性分离时,具有简单阈值激活功能的感知器才能正确。如果你有更复杂的数据,你需要一个多层感知器和非线性激活函数,如Logistic Sigmoid函数。

详情请查看Geoffrey Hintons Coursera Course, Lecture 2

答案 1 :(得分:1)

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

使用可用的样本,您还可以发现比Kernel Support Vector Machine之类的神经网络更好的东西。如果您坚持使用神经网络,可以修改所有不同的变量,通过试用和错误,您将了解它是如何工作的。

玩得开心!

答案 2 :(得分:0)

既然你说:

  

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

&安培;

  如果我们考虑几何表示,

权重只是移动线

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

回答

  

我该如何处理输入?

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

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