Neural network 需要推荐神经网络类型和拓扑结构

Neural network 需要推荐神经网络类型和拓扑结构,neural-network,Neural Network,我有一个微控制器应用的研究项目。有一块带有2 x 2磁性传感器和磁铁的电路板。目的是通过使用4个传感器(远左、远右、近左、近右)的数据计算磁铁的位置(X、Y、Z)。传感器的输出为0..5伏(无磁场时,输出为2.5伏) 现在我想训练一个神经网络,从4个传感器输入预测磁铁的x,y,z坐标。但我不知道要使用的神经元网络类型(多层感知器、Adaline、Hopfield和所有其他类型)和拓扑结构(每层有多少层和多少隐藏的神经元) 上周,我用乐高积木进行了测量,得到了磁铁的“精确”位置,并保存了传感器数

我有一个微控制器应用的研究项目。有一块带有2 x 2磁性传感器和磁铁的电路板。目的是通过使用4个传感器(远左、远右、近左、近右)的数据计算磁铁的位置(X、Y、Z)。传感器的输出为0..5伏(无磁场时,输出为2.5伏)

现在我想训练一个神经网络,从4个传感器输入预测磁铁的x,y,z坐标。但我不知道要使用的神经元网络类型(多层感知器、Adaline、Hopfield和所有其他类型)和拓扑结构(每层有多少层和多少隐藏的神经元)

上周,我用乐高积木进行了测量,得到了磁铁的“精确”位置,并保存了传感器数据。您可以在此处找到测量值:。以下是高度/z=10.6 mm时的测量摘录

Lt.Far  Rt.Far  Lt.Near Rt.Near X   Y   Z
2.45357 2.43891 2.43891 2.52688 -16 -16 10.6
2.45846 2.46334 2.51222 2.6784  -8  -16 10.6
2.48289 2.46334 2.63441 2.68328 0   -16 10.6
2.49267 2.45357 2.69306 2.54643 8   -16 10.6
2.46334 2.43402 2.56598 2.48778 16  -16 10.6
2.46334 2.51222 2.46823 2.65396 -16 -8  10.6
2.51711 2.64907 2.62463 3.14272 -8  -8  10.6
2.69306 2.72239 3.15738 3.38221 0   -8  10.6
2.74194 2.56598 3.41642 2.84457 8   -8  10.6
2.58065 2.45846 2.77615 2.53666 16  -8  10.6
2.48289 2.62952 2.46823 2.69795 -16 0   10.6
2.66862 3.18671 2.66373 3.33822 -8  0   10.6
3.24536 3.4262  3.33822 3.57282 0   0   10.6
3.46041 2.83969 3.63148 2.90323 8   0   10.6
2.81525 2.51222 2.90811 2.54643 16  0   10.6
2.49267 2.65885 2.45357 2.57576 -16 8   10.6
2.69306 3.26979 2.54154 2.81036 -8  8   10.6
3.37732 3.57282 2.81525 2.93255 0   8   10.6
3.5826  2.88368 2.88368 2.65396 8   8   10.6
2.8739  2.51711 2.6393  2.49756 16  8   10.6
2.47312 2.55621 2.42913 2.50244 -16 16  10.6
2.56598 2.76637 2.46334 2.54154 -8  16  10.6
2.81036 2.84946 2.50733 2.55621 0   16  10.6
2.87879 2.63441 2.52199 2.51711 8   16  10.6
2.64907 2.47801 2.48778 2.47312 16  16  10.6
(前4列为传感器输入,单位为伏特,后3列为位置,单位为毫米)

我的第一次尝试是创建一个多层感知器网络,如下所示:

但是,当我开始训练时,整个网络的错误会非常非常缓慢地下降

我希望有神经网络经验的人能给我一个建议,我也会选择哪种网络类型和拓扑

此外:以下是一些测量图:

-左侧传感器附近的电压,单位为伏特:

-所有被测点(左侧)和仅X Z平面上Y=0mm处的点与固定点(X=-8mm,Y=0mm,Z=1mm)的距离相关的左侧、靠近传感器的电压,单位为伏特:


MLP应该可以。尽可能简单(但不要简单)。首先只尝试一个隐藏层,尽可能少的神经元,例如从4-5-3开始(单个隐藏层有5个神经元)。训练和验证网络,只添加更多的层或神经元,只要它们提供价值

请记住将您的培训集分为培训集和验证集,否则您将面临数据拟合过度的风险,特别是如果您选择了一个复杂的网络。只要验证中的错误减少,就可以增加复杂性。如果您开始在训练集上看到较低的错误,但在看不见的数据上没有差异/较高的错误,那么您是过度拟合,应该返回到更简单的网络


也考虑将数据归一化,因为它有助于训练,例如创建坐标系统和电压基准系统,其中输入和输出都被缩放以帮助训练算法收敛。 我通常不喜欢人们用“既然可以用Y,为什么还要用X”这样的词来回答诸如“如何用X来解Z”之类的问题,所以我为此提前道歉

在你的例子中,我只需要根据4组(每组3个)中4个传感器的值对磁铁的位置进行三角测量,而不需要训练神经网络

如果您的传感器标记如下:

A o ---------------o B
  |\             / |
  |  \         /   |
  |    \     /     |
  |      \ /       |
  |      / \       |
  |    /     \     |
  |  /         \   |
  |/             \ |
D o ---------------o C
然后您有以下4个组要使用(A,B,C)(A,D,C)(D,A,B)和(B,C,D)。求磁铁的X,Y,Z坐标就简化了求解棱镜这一几何问题

这就是说,如果你打算使用神经网络来完成这项任务,你必须用不同的配置进行实验,直到你对结果满意为止

  • 确保你有一个非常大的训练集
  • 然后创建一个单独的交叉验证数据集

我们的想法是使用训练集来训练网络,并使用交叉验证集来探索改变各种参数(如神经网络的拓扑结构或学习系数等)的效果。

感谢您提出使用神经网络三角剖分实例的想法。我添加了两个图表,显示了电压与左侧传感器附近距离的依赖关系(在图D中)。所有其他传感器数据都有类似的图表。所以我认为不可能找到一个函数
f:sensor\u data->distance
。训练场地足够大了。它由5 x 5 x 9=225个样本组成。@Vertex-我不是专家,但我想说200个样本被认为是一个小数据集。试试2000或5000分。有一点超出了这一点,添加更多数据不会增加任何价值,但我冒昧地猜测,200个样本远远达不到这一点。关于三角测量的想法-我不知道该说什么,这都是猜测-但它应该是有效的…好吧,也许你是对的,我需要更多的样本,而不仅仅是225个。问题是,传感器只能在几厘米的距离内检测到磁铁。乐高PIMPEL/NOB的距离为8毫米。也许它可以和毫米纸一起工作,在那里我对磁铁进行相位调整。谢谢!首先,我规范化了文章中描述的数据,即用there平均值减去传感器数据,再除以there标准偏差。x/y/z数据将保持不变。现在我从Neurophstudio切换到它的框架Neurophy,因此我可以通过编程更快地更改拓扑结构。我测试了一层有3,4,5…9个神经元,两层有增加和减少的神经元数量和不同的激活功能(乙状结肠,Tanh,Sin等),但没有任何结果。要么净误差是交替的,要么减少得非常非常慢。请注意:Hopfield用于建立生成模型(即:输入是一个有噪声的数字,您希望“修复”它,使其更接近该数字的原型),通常不能单独用于分类或预测;感知器和adaline是非常古老的前馈神经网络模型。你应该寻找一个简单的线性前馈多层神经网络,如果它不起作用,你可以把它切换到逻辑回归而不是线性回归。参见Andrew Ng在CurSera的机器学习课程的第2周和第6周讲课。